Я родом из Руби. Я люблю Ruby, люблю сообщество и до сих пор использую его в большинстве своих работ. Но время изменилось, теперь у большинства людей рубин ассоциируется с медленным и старым. Особенно после того, как Twitter объявил о переходе с Rails на Scala. А еще я видел множество бенчмарков, которые показывают, что Rails работает не очень хорошо. Я видел один тест, показывающий, что ActionCable работает хуже всего для соединения WebSocket.

Я не хочу чувствовать себя обделенным. Я хочу быть крутым парнем, которого ты знаешь. Парень, который разбирается в последних, самых быстрых и блестящих технологиях. Затем я наткнулся на эту новую технологию под названием Crystal Lang. Я посетил их веб-сайт. И я видел их слоган «Гладкий как Ruby, быстрый как C», хотя они изменили его на «Язык для людей и компьютеров».

Затем я попробовал. Да, мне понравилось. это кажется мне очень знакомым. Мне нравится, как они принудительно задают ненулевое значение по умолчанию, хотя вы все еще можете использовать нуль, но вам нужно обрабатывать его напрямую, иначе это ошибка времени компиляции. В нем есть все, что есть в Ruby, включая классный макрос, но не такой динамичный, как в Ruby. Но, что-то меня действительно беспокоит. Как язык со статической типизацией, я думаю, что интерфейс является его неотъемлемой частью. Но у Crystal нет этой функции, хотя у них есть аналогичный механизм для решения этой проблемы с использованием абстрактного класса. Но я думаю, что это недостаточно близко. Я столкнулся со многими ошибками при реализации абстрактного класса, особенно в closure/Proc. Может быть, я сделал это неправильно, но я не мог найти прямого решения для этого.

Здесь я попытался обобщить, что мне нравится и что не нравится в Crystal Language.

Что мне нравится

  1. Знакомый синтаксис
    Синтаксис выглядит как обычный синтаксис Ruby с аннотациями типов. Никаких жалоб на это. Это очень человечно, мне нравится.
  2. Не является нулевым по умолчанию
    Компилятор попытается перехватить любой код, который потенциально вызывает ошибку нулевого указателя, поэтому мы можем обработать нулевое условие до того, как это произойдет.
  3. Потрясающий макрос
    Макрос очень удобочитаем и выглядит как обычный код Crystal. А также он расширяется во время компиляции, поэтому меньше ошибок и нет изменения кода во время выполнения.
  4. Существует несколько рабочих полнофункциональных веб-фреймворков
    Да, еще один веб-фреймворк, почему бы и нет? Есть несколько фреймворков MVC, с которыми легко ознакомиться, если вы работали с рельсами или с laravel. Рекомендую попробовать Lucky Framework

Что мне не нравится

  1. Медленная компиляция
    По сравнению с go и elixir, я думаю, что компиляция кристалла занимает больше времени. Я не уверен насчет большой кодовой базы, я пробовал это на простом веб-сервере.
  2. Небольшое сообщество/очень ниша
    Поскольку это новый язык, не поддерживаемый крупной технологической компанией, неудивительно, что у него не так много поклонников. И меньшее количество библиотечных фондов. Я думаю, что большинство людей, которые хотят попробовать этот язык, пришли из Ruby в поисках «Faster Ruby». Поскольку уровень усыновления очень мал, найти вакансию Кристал довольно сложно.
  3. Отсутствие реализации интерфейса и абстрактного класса
    Я думаю, что реализация абстрактного класса в Crystal недостаточно развита, я сталкиваюсь с ошибками времени компиляции в коде, который, с моей точки зрения, должен быть действующий фрагмент кода. Вот некоторые примеры:

Я не нашел способ исправить этот код, пожалуйста, просветите меня 💜

Заключение

Нам не нужно знать новейшие, самые изящные и самые быстрые технологии. Я думаю, что навыки решения проблем, отладки, чистого кода и рефакторинга гораздо важнее этого. В конце концов, язык программирования — это всего лишь инструмент. Выберите тот, который подходит вам лучше всего. Если он выполняет свою работу, а клиент и НАЧАЛЬНИК довольны, этого должно быть достаточно. Я думаю, что для зарабатывания денег лучше всего использовать 15 лучших языков программирования. И эти нишевые технологии мы можем делать в качестве хобби. Программирование как хобби? Я думаю, тебе нужно иногда выходить из своей комнаты и делать зарядку 😀 ✌️