исполняемые файлы. Это возможно с помощью другой команды; попробуйте
crystal build hello.cr
.
Как вы увидите, это не запустит ваш код. Вместо этого он создаст файл «привет» (без расширения), который является собственным исполняемым файлом для вашего компьютера. Вы можете запустить этот исполняемый файл с помощью ./hello.
Фактически, crystal run hello.cr
работает в основном как сокращение для crystal build hello.cr && ./hello
.
Вы также можете использовать crystal build --release hello.cr
для создания оптимизированного исполняемого файла. Это займет больше времени, но потребует нескольких преобразований кода, чтобы ваша программа работала быстрее. Более подробную информацию о том, как развернуть окончательную версию вашего приложения, можно найти в Приложении B «Будущее Crystal».
Crystal обеспечивает очень хорошую производительность, стабильность и удобство использования. Это полноценный язык с растущим сообществом и экосистемой, который сегодня можно использовать в производстве. Crystal является очень инновационным и содержит все компоненты успешного языка программирования.
Знание того, как создавать и запускать программы Crystal, будет иметь основополагающее значение в следующих главах, поскольку вам предстоит опробовать множество примеров кода.
Теперь, когда вы знаете о происхождении Crystal и важных характеристиках языка (а именно, о его выразительности и производительности), давайте продолжим изучать основы программирования в Crystal и поможем вам начать и продуктивно работать с этим языком.
2. Основные семантики и особенности Crystal
В этой главе вы изучите основы программирования Crystal, которые помогут вам быстро освоиться, даже если вы еще не умеете писать ни одной строки кода Crystal. Здесь вы узнаете о вещах, общих для многих других языков программирования, таких как переменные, функции и структуры управления, а также о функциях, характерных для Crystal, таких как система типов и передача блоков. Ожидается, что у вас уже есть базовый опыт работы с каким-либо другим языком программирования.
В этой главе будут рассмотрены следующие основные темы:
• Значения и выражения
• Управление потоком выполнения с помощью условных операторов.
• Изучение системы типов
• Организация кода в методах.
• Контейнеры данных
• Организация кода в файлах.
Для выполнения задач данной главы вам понадобится следующее:
• Рабочая установка Crystal.
• Текстовый редактор, настроенный для использования Crystal.
Вы можете обратиться к Главе 1 «Введение в Crystal» для получения инструкций по настройке Crystal и к Приложению A «Настройка инструментов» для получения инструкций по настройке текстового редактора для Crystal.
Каждый пример в этой главе (а также в остальной части книги) можно запустить, создав текстовый файл с расширением .cr для кода и затем используя команду crystal file.cr
в терминальном приложении. Вывод или любые ошибки будут показаны на экране.
Вы можете получить весь исходный код, использованный в этой главе, на GitHub книги по адресу https://github.com/PacktPublishing/Crystal-Programming/tree/main/Chapter02.
Программирование — это искусство преобразования и перемещения данных. Мы хотим получать информацию, возможно, от пользователя, печатающего на клавиатуре, от датчика Интернета вещей на крыше вашего дома или даже от входящего сетевого запроса, отправленного на ваш сервер. Затем мы хотим интерпретировать и понять эту информацию, представляя ее в нашей программе структурированным образом. Наконец, мы хотим обработать и преобразовать его, применяя алгоритмы и взаимодействуя с внешними источниками (например, запрос к базе данных или создание локального файла). Практически все компьютерные программы следуют этой структуре, и важно понимать, что все дело в данных.
Crystal имеет множество примитивных типов данных, используемых для выражения значений. Например, вы можете записывать целые числа, используя цифры, например 34. Вы также можете хранить данные в переменных. Они действуют как именованные контейнеры для хранения значений и могут изменяться в любое время. Для этого просто напишите имя переменной, затем символ равенства и значение, которое вы хотите сохранить. Вот пример программы Crystal:
score = 38
distance = 104
score = 41
p score
Вы можете выполнить эту программу Crystal, записав ее в файл и используя crystal file.cr
на вашем терминале. Если вы это сделаете, вы увидите 41
на экране. Видите эту последнюю строчку? Он использует метод p
для отображения значения переменной на экране.
Если вы работаете с другими языками, такими как Java, C#, Go или C, обратите внимание, что это полноценная программа. В Crystal вам не нужно создавать основную функцию, объявлять переменные или указывать типы. Вместо этого при создании новой переменной и изменении ее значения используется тот же синтаксис.
В одной строке можно присвоить несколько значений нескольким переменным, указав их через запятую. Множественное присвоение обычно используется для замены значений двух переменных. Посмотрите это, например:
# Назначаем две переменные одновременно
emma, josh = 19, 16
# Это то же самое, в две строки
emma = 19
josh = 16
# Теперь поменяем их значения emma, josh = josh, emma
p emma # => 16
p josh # => 19
Этот пример начинается со строки комментария. Комментарии предназначены для добавления пояснений или дополнительных деталей в исходный код и всегда начинаются с символа #
. Затем у нас есть множественное присваивание, создающее переменные с именами emma
и josh
со значениями 19
и 16
соответственно. Это точно так же, как если бы переменные создавались по одной в две строки. Затем используется другое множественное присвоение для обмена значениями двух переменных, одновременно присваивая emma
значение переменной josh
и josh
значения переменной emma
.
Имена переменных всегда пишутся строчными буквами в соответствии с соглашением о разделении слов символом подчеркивания (известным как snake_case). Хотя это и редкость, в именах переменных также могут использоваться заглавные буквы и неанглийские буквы.
Если используемые вами значения не изменятся, вы можете использовать константы вместо переменных. Они должны начинаться с заглавной буквы и обычно пишутся заглавными буквами, слова разделяются подчеркиванием и не могут быть изменены позже. Посмотрите это, например:
FEET = 0.3048 # Метры
INCHES = 0.0254 # Метры
my_height = 6 * FEET + 2 * INCHES # 1.87960 метров
FEET = 20 # Ошибка: константа FEET уже инициализирована.
Этот код показывает определение двух констант: ФУТОВ и ДЮЙМОВ. В отличие от