Crystal — потрясающий новый язык, который я проверял. Его синтаксис очень похож на Ruby, но он статически типизирован.

У него потрясающий вывод типов, поэтому объявления типов требуются очень редко.

Но самая крутая вещь в Crystal — это то, что этот код не компилируется:

message = if rand(2) > 0
  "Hi"
end
puts message + "!"

Компилятор Crystals понимает, что сообщение может быть нулевым, и поэтому мы не можем просто отправить его методом +, не проверив это. Нам нужно внести это изменение, чтобы оно скомпилировалось:

if message
  puts message + "!"
end

Почему это так круто?

Как ни странно, по крайней мере 50% ошибок, возникающих в рабочей среде, являются результатом попытки отправить метод в nil. В Ruby это называется NoMethodError.

Основные языки со статической типизацией не проверяют ошибки типов такого рода, поэтому в Java возникает исключение NullPointerException.

Таким образом, Crystal обещает быть таким же выразительным и кратким, как Ruby, но устранять по крайней мере 50% ваших ошибок.

Это довольно интересно само по себе, но Кристал также:

  • Обладает производительностью, конкурентоспособной с C.
  • Создает автономные двоичные файлы, поэтому вы можете запускать программы на машинах, на которых не установлен Crystal.

Crystal, вероятно, еще далеко от того, чтобы стать жизнеспособной заменой Ruby, но это очень интересный язык.

Первоначально опубликовано на www.nickpad.com.