Читаем Crystal Programming. Введение на основе проекта в создание эффективных, безопасных и читаемых веб-приложений и приложений CLI онлайн бесплатно


Crystal Programming. Введение на основе проекта в создание эффективных, безопасных и читаемых веб-приложений и приложений CLI

Джордж Дитрих , Гильерме Берналь

Компьютеры и Интернет / Программирование, программы, базы данных
<p>Джордж Дитрих</p><p>Гильерме Берналь</p><p>Crystal Programming</p><p><emphasis>Введение на основе проекта в создание эффективных, безопасных и читаемых веб-приложений и приложений CLI</emphasis></p>

В будущее Crystal; пусть он будет таким же ярким, как бриллиант.

- George Dietrich

Моей любимой жене, которая поддерживает меня во всем.

- Guilherme Bernal
<p>О издании</p>

Crystal Programming

Copyright © 2022 Packt Publishing

Все права защищены. Никакая часть этой книги не может быть воспроизведена, сохранена в поисковой системе или передана в любой форме и любыми средствами без предварительного письменного разрешения издателя, за исключением случаев включения кратких цитат в критические статьи или обзоры.

При подготовке этой книги были приложены все усилия, чтобы обеспечить точность представленной информации. Однако информация, содержащаяся в этой книге, продается без каких-либо гарантий, явных или подразумеваемых. Ни авторы, ни Packt Publishing, ни ее дилеры и дистрибьюторы не несут ответственности за любой ущерб, причиненный или предположительно причиненный этой книгой, прямо или косвенно.

Packt Publishing постаралась предоставить информацию о товарных знаках обо всех компаниях и продуктах, упомянутых в этой книге, используя соответствующие прописные буквы. Однако Packt Publishing не может гарантировать точность этой информации.

Group Product Manager: Alok Dhuri

Publishing Product Manager: Shweta Bairoliya

Senior Editor: Nisha Cleetus

Content Development Editor: Nithya Sadanandan

Technical Editor: Maran Fernandes

Copy Editor: Safis Editing

Project Coordinator: Deeksha Thakkar

Proofreader: Safis Editing

Indexer: Subalakshmi Govindhan

Production Designer: Vijay Kamble

Marketing Coordinator: Sonakshi Bubbar

First published: July 2022

Production reference: 1130522

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham

B3 2PB, UK.

ISBN 978-1-80181-867-4

www.packt.com

<p>Составители</p><p>Об авторах</p>

Джордж Дитрих — инженер-программист, поклонник открытого исходного кода и модератор сообщества Crystal. Он имеет степень магистра наук в области информационных систем Интернета и степень бакалавра наук в области информационных наук.

Гильерме Берналь — технический директор Cubos Tecnologia. Он имеет степень бакалавра в области управления ИТ. Гильермс стал соучредителем компании по разработке программного обеспечения и нескольких технологических стартапов, в том числе одного, ориентированного на обучение навыкам программирования нового поколения разработчиков. Он также является двукратным финалистом мирового конкурса по программированию ACM ICPC.

<p>О рецензенте</p>

Брайан Кардифф создает программное обеспечение для других уже более 20 лет. Он мог играть множество ролей в процессе разработки: сбор требований, проверка прототипа, кодирование, развертывание и обслуживание. За 15 лет работы в Manas.Tech он присоединился к Ари Боренцвейгу и Хуану Вайнерману, чтобы придать форму Crystal. Ему нравится создавать инструменты для технических и нетехнических людей. В основном благодаря Crystal он стал сотрудником сообщества открытого исходного кода. Он также ознакомился с книгой Иво Бальберта и Саймона Сен-Лорана «Программирование кристалла: создание высокопроизводительных, безопасных и параллельных приложений». Работая полный рабочий день в отрасли, он старается поддерживать связь с академическими и исследовательскими языками программирования и формальными методами.

Я хотел бы поблагодарить мою жену и дочь за их постоянную поддержку во всем. различные проекты, которыми я продолжаю заниматься.

- Brian Cardiff<p>Предисловие</p>

Язык программирования Crystal разработан с учетом потребностей как людей, так и компьютеров. Он обеспечивает легко читаемый синтаксис, который компилируется в эффективный код.

В этой книге мы собираемся изучить все, что может предложить Кристалл. Мы начнем с представления языка, включая его основные синтаксические и семантические особенности. Далее мы углубимся в создание нового проекта Crystal, рассказав, как создать приложение на основе CLI, которое потребует использования более продвинутых функций, таких как операции ввода-вывода, параллелизм и привязки C.

В третьей части этой книги мы узнаем, как использовать внешние библиотеки в виде Crystal Shards. Затем мы воспользуемся этими знаниями, пройдя процесс создания веб-приложения с использованием Athena Framework.

Четвертая часть книги посвящена одной из самых мощных возможностей Crystal: метапрограммированию. Здесь мы научимся использовать макросы, аннотации и самоанализ типов во время компиляции. Затем мы узнаем, как их можно объединить для реализации некоторых довольно мощных функций.

В завершение мы представим некоторые вспомогательные функции Crystal, например способы документирования, тестирования и развертывания программ Crystal, а также способы автоматизации этих процессов путем внедрения CI в ваш рабочий процесс.

Важная заметка:

Эта книга предназначена для Crystal версии 1.4.x. Будущие версии также должны работать, но не будут охватывать новые добавленные функции.

<p>Для кого эта книга</p>

Эта книга будет полезна разработчикам, желающим изучить программирование Crystal, а также всем, кто хочет улучшить свои способности решать реальные проблемы с помощью языка. Ожидается опыт разработки приложений на любом другом языке программирования. Однако предварительные знания Crystal не требуются.

<p>О чем эта книга</p>

Глава 1 «Введение в Crystal» содержит краткое введение в Crystal, включая его историю, ключевые концепции и цели. Эта глава также будет включать информацию о настройке Crystal, а также информацию об соглашениях, которые будут использоваться на протяжении всей книги.

Глава 2 «Основы семантики и особенности Crystal» знакомит вас с написанием кода Crystal, начиная с самых основ и заканчивая наиболее распространенными методами. Он также исследует распространенные типы и операции из стандартной библиотеки.

Глава 3 «Объектно-ориентированное программирование» углубляет использование объектно-ориентированных функций языка, обучая вас созданию новых типов с настраиваемыми функциями — основного инструмента каждой нетривиальной программы.

Глава 4 «Изучение Crystal посредством написания интерфейса командной строки» описывает настройку проекта CLI и пошаговую реализацию первоначальной реализации.

Глава 5 «Операции ввода-вывода» развивает предыдущую главу и представляет операции ввода-вывода как средство обработки ввода и вывода вместо жестко закодированных строк.

Глава 6 «Параллелизм» начинается с рассмотрения функций параллелизма Crystal, а затем используется то, что было изучено ранее, для обеспечения параллельности программы CLI.

Глава 7, «Взаимодействие C», демонстрирует, как можно использовать библиотеки C в программе Crystal путем привязки libnotify для уведомления программы CLI.

Глава 8 «Использование внешних библиотек» знакомит с командой shards и способами ее поиска.

Глава 9 «Создание веб-приложения с помощью Athena» описывает создание простого веб-приложения для блога с использованием Athena Framework, используя многие из его функций.

Глава 10 «Работа с макросами» представляет собой введение в мир метапрограммирования путем изучения макросов Crystal.

Глава 11 «Введение в аннотации» рассказывает о том, как определять, включать в себя данные и читать аннотации.

Глава 12 «Использование интроспекции типов во время компиляции» демонстрирует, как перебирать переменные, типы и методы экземпляра во время компиляции.

Глава 13 «Продвинутое использование макросов» демонстрирует некоторые мощные возможности, которые можно создать с помощью макросов и аннотаций, а также немного творчества.

Глава 14 «Тестирование» знакомит с модулем Spec и знакомит вас с модульным и интеграционным тестированием в контексте CLI и веб-приложений.

Глава 15 «Документирование кода» показывает, как лучше всего документировать, генерировать, размещать и версионировать документацию по коду Crystal.

Глава 16 «Развертывание кода» рассказывает о том, как выпускать новые версии сегмента, а также о том, как лучше всего создавать и распространять рабочую версию приложения.

Глава 17 «Автоматизация» содержит примеры рабочих процессов и комментарии по включению непрерывной интеграции для проектов Crystal.

Приложение A «Настройка инструментов» содержит практическое объяснение того, как настроить Visual Studio Code для программирования Crystal с помощью официального плагина.

Приложение B, «Будущее Crystal», дает краткий обзор работы, которая в настоящее время ведется за кулисами ради будущего языка, и показывает, как принять в ней участие и внести свой вклад.

<p>Чтобы получить максимальную пользу от этой книги</p>

Для этой книги требуется какой-либо текстовый редактор, а также доступ к терминалу. Рекомендуется использовать macOS или Linux, но Windows с WSL также должна работать нормально. Наконец, вам может потребоваться установить некоторые дополнительные системные библиотеки, чтобы некоторые примеры кода работали правильно.

Программное/аппаратное обеспечение, описанное в книгеТребования к операционной системе
CrystalWindows (с WSL), macOS, или Linux
libnotifygcc (или другой C компилятор)
jqlibpcre2
Примечание:

Если вы используете цифровую версию этой книги, мы советуем вам ввести код самостоятельно или получить доступ к коду из репозитория книги на GitHub (ссылка доступна в следующем разделе). Это поможет вам избежать любых потенциальных ошибок, связанных с копированием и вставкой кода.

<p>Загрузите файлы примеров кода</p>

Вы можете загрузить файлы примеров кода для этой книги с GitHub по адресу https://github.com/PacktPublishing/Crystal-Programming/. Если есть обновление кода, оно будет обновлено в репозитории GitHub.

У нас также есть другие пакеты кода из нашего богатого каталога книг и видео, доступных на https://github.com/PacktPublishing/. Проверь их!

<p>Загрузка цветных изображений</p>

Мы также предоставляем PDF-файл с цветными изображениями снимков экрана и диаграмм, использованных в этой книге. Вы можете скачать его здесь: https://static.packt-cdn.com/downloads/9781801818674_ColorImages.pdf.

<p>Используемые соглашения</p>

В этой книге используется ряд текстовых соглашений.

Код в тексте: указывает кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, пути, фиктивные URL-адреса, пользовательский ввод и дескрипторы Twitter. Вот пример: «В нашем контексте типы STDIN, STDOUT и STDERR фактически являются экземплярами IO::FileDescriptor».

Блок кода задается следующим образом:

require "./transform"

STDOUT.puts Transform::Processor.new.process STDIN.gets_to_end

Когда мы хотим привлечь ваше внимание к определенной части блока кода, соответствующие строки или элементы выделяются жирным шрифтом:

require "./transform"

STDOUT.puts Transform::Processor.new.process STDIN.gets_to_end

Любой ввод или вывод командной строки записывается следующим образом:

---

- id: 2

  name: Jim

- id: 3

   name: Bob

Жирный шрифт: обозначает новый термин, важное слово или слова, которые вы видите на экране. Например, слова в меню или диалоговых окнах выделяются жирным шрифтом. Вот пример: «Откройте Windows PowerShell и выберите «Запуск от имени Администратора».

Советы или важные примечания

выглядят следующим образом.

<p>Как связаться</p>

Обратная связь от наших читателей всегда приветствуется.

Общая обратная связь: если у вас есть вопросы по какому-либо аспекту этой книги, напишите нам по адресу customercare@packtpub.com и укажите название книги в теме сообщения.

Опечатка: Хотя мы приложили все усилия, чтобы обеспечить точность нашего контента, ошибки все же случаются. Если вы нашли ошибку в этой книге, мы будем признательны, если вы сообщите нам об этом. Посетите www.packtpub.com/support/errata и заполните форму.

Пиратство. Если вы встретите в Интернете незаконные копии наших работ в любой форме, мы будем признательны, если вы предоставите нам адрес или название веб-сайта. Пожалуйста, свяжитесь с нами по адресу copyright@packt.com и укажите ссылку на материал.

Если вы заинтересованы в том, чтобы стать автором: Если есть тема, в которой вы разбираетесь, и вы заинтересованы в написании или внесении вклада в книгу, посетите авторов. Packtpub.com.

<p>Поделитесь своими мыслями</p>

Похожие книги