Содержание
Слышали ли вы когда-нибудь об удивительном языке под названием Crystal? Хорошо, давайте немного разберемся во всем, что может предложить этот удивительный язык программирования.
Цель этой небольшой статьи - рассказать немного о Crystal и о том, почему вам может быть интересно разрабатывать на нем.
Что такое Crystal?
Будучи мультипарадигмальным языком программирования для людей и компьютеров, разработанным Ари Бореншвейгом, Хуаном Вайнерманом, Брайаном Кардиффом, а также более чем 480 участниками на сегодняшний день, с синтаксисом, вдохновленным языком Ruby, Crystal выделяется тем, что применяет концепции параллелизма и общего использования ”дифференцированным” способом, используя статическую проверку типов через алгоритм глобального вывода. В настоящее время находится в активной разработке, лицензируется под Apache 2.0.
История
С началом первых работ в 2011 году с целью объединить производительность и элегантность Ruby со скоростью, эффективностью и безопасностью компилируемого языка, появляется так называемый Joy, который позже был переименован в Crystal.
Первый компилятор был написан на Ruby, но переписан на Crystal, что позволило использовать его в качестве самостоятельного хостинга с ноября 2013 года, первая версия вышла в июне 2014 года, а в июле 2016 года он вошел в индекс TIOBE. Первая стабильная версия появилась в марте 2021 года, знаменитая версия 1.0!
Почему Crystal эффективнее?
Все просто: Crystal компилирует нативный код с помощью LLVM, исключая динамические аспекты Ruby. Продвинутый глобальный вывод типов, применяемый в компиляторе, в сочетании с union-типами создает ощущение скриптового языка более высокого уровня, чем многие другие языки программирования, которые можно сравнить.
Кроме того, в Crystal есть система макросов и поддержка перегрузки методов и операторов. Модель параллелизма вдохновлена последовательным взаимодействием процессов (CSP), реализующим зеленые потоки, называемые волокнами, и другими концепциями, вдохновленными языком программирования Go. Еще одним важным моментом является автоматическая сборка мусора, предлагающая сборщик Boehm.
Как установить?
Установка зависит от используемой операционной системы! Вы можете попробовать установить через стандартный менеджер пакетов, найдя пакет с именем crystal, или же следовать официальному руководству по установке!
Если вы используете Windows, вы можете либо установить через WSL, либо попробовать пробную версию официального установщика для Windows!
Осколки
Shards - это название менеджера зависимостей в языке программирования Crystal, который по умолчанию использует файл shard.yml для определения настроек проекта.
имя: shards версия: 0.1.0 зависимости: openssl: github: datanoise/openssl.cr ветка: master development_dependencies: minitest: git: https://github.com/ysbaddaden/minitest.cr.git версия: ~> 0.3.1 лицензия: MIT
Используя расширение файла .cr по умолчанию, давайте создадим практический пример, показывающий основу простого “Hello World”, HTTP-сервера и модели параллелизма!
Hello World!
p "Hello World!" # или puts "Hello World!".
HTTP-сервер
require "http/server"
server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello, got #{context.request.path}!"
end
puts "Listening on http://127.0.0.1:8080"
server.listen(8080)
Теперь просто зайдите на локальную страницу с портом “8080”, чтобы проверить!
Модель параллелизма
channel = Channel(Int32).new
total_lines = 0
files = Dir.glob("*.txt")
files.each do |f|
spawn do
lines = File.read_lines(f)
channel.send lines.size
end
end
files.size.times do
total_lines += channel.receive
end
puts total_lines
Где я могу узнать больше о Crystal?
Вы можете прочитать официальную документацию, следить за официальным языковым профилем на GitHub и даже изучить мое собственное руководство на португальском языке по началу работы с Crystal: знаменитый Crystal4noobs!