Изучение нового языка программирования может открыть ваш разум так, как вы никогда не считали возможным. Точно так же, как при изучении нового человеческого языка, такого как испанский или мандарин, вы учитесь думать с помощью разных слов и структур.
Вы подключаетесь к культурам и сообществам спикеров и узнаете, как они видят мир. Это обогащает, мягко говоря.
Преимущество языков программирования в том, что первый, который вы изучаете, всегда самый сложный. Как только вы поймете основные структуры, такие как операторы if и циклы for, вы увидите, как они появляются во многих новых языках, которые вы можете выучить.
Приобретайте билеты на TNW València в марте!
Сердце технологий приближается к сердцу Средиземноморья
И, в отличие от человеческих языков, новые языки программирования намного быстрее выучить. Они более логичны и содержат меньше слов или, лучше сказать, команд.
Из этого следует, что большинство программистов и специалистов по данным владеют более чем одним языком программирования.
У них может быть главный или любимый. Но большинство разработчиков программного обеспечения, которых я знаю, еженедельно используют как минимум пять языков, если считать языки сценариев.
Большинство программистов также время от времени пытаются выучить новый язык.
Это приходит вместе с работой. Кодирование означает оставаться любопытным.
Дело о Кристалле
Crystal, согласно его рекламе, — это язык, быстрый, как C, и гладкий, как Ruby.
Часть о его гладкости верна. Он скомпилирован и статически типизирован, что имеет свои преимущества и недостатки. Однако прежде всего он очень похож на Ruby по стилю.
Лично я никогда не писал больших проектов на Ruby. Но для довольно опытного разработчика Python код Crystal по-прежнему выглядит кристально чистым!
Вот пример рекурсивного цикла, вычисляющего факториалы:
Команда put звучит немного странно для людей, не привыкших к Ruby. По сути, это безвкусная версия печати на других языках. Между путами и печатью есть некоторые тонкие различия, но мы не будем в них углубляться.
Кроме того, этот пример выглядит довольно питоническим, верно?
Это похоже на if-предложения:
Если не считать забавных выражений, к которым непривычны люди, не являющиеся носителями Ruby, это снова очень читабельно.
Вообще говоря, синтаксис Crystal понятендаже при решении более крупных и сложных задач.
Статическая типизация
Crystal имеет статическую типизацию, но вы, возможно, заметили, что в приведенных выше примерах не так много идентификаторов типов. Это связано с тем, что Crystal требует, чтобы вы указали тип переменной только в том случае, если она неоднозначна.
Эта практика, конечно, помогает программистам быть более продуктивными.
Макросы
Статически типизированные языки, как правило, придирчивы к макросам. Кристалл, однако, умеет с ними обращаться.
Как показано в этот пример, вы можете использовать макрос Crystal для изменения фрагмента кода во время компиляции путем статического рассуждения, основанного на содержимом другого фрагмента того же кода. Попробуйте сделать это на C++, и вы либо потерпите неудачу, либо вам потребуется более 500 строк кода.
Или нет, ты гений? Дайте мне знать, если я ошибаюсь…
Это связано с некоторыми оговорками, потому что, как говорится, с большой силой приходит и большая ответственность. Статическая типизация обычно снижает некоторую опасность, но безумно мощные вещи (например, те, которые позволяет Crystal) несколько сводят на нет эту защиту.
Нет Nil-ошибок
Говоря о безопасности, у Crystal есть дополнительные меры безопасности в других местах. Nil — это отдельный тип для компилятора Crystal. Поэтому, если вы пытаетесь получить доступ к методу или контейнеру, который оказывается нулевым, компилятор предупредит вас. Это может привести к сбою компиляции, но, по крайней мере, вы сможете исправить ошибку до запуска потенциально большого кода.
Нет больше ада зависимости
Если вы когда-либо решали большую задачу на Python, вы, вероятно, знаете, что ад зависимости выглядит как.
Один модуль Python может зависеть от нескольких других, и как только вы импортируете все необходимые модули, вы понимаете, что разные версии модулей несовместимы. Теперь вам нужно выяснить, какие версии использовать, чтобы все подошло друг к другу, и все это может занять несколько часов, если ваш проект имеет определенный размер.
В Crystal эти модули называются осколками, и они компилируются в ваш двоичный исполняемый файл посредством статической компоновки. Я мог бы рассказать об этом подробно, но давайте вкратце: управление зависимостями в этом случае намного, намного проще.
Большой недостаток: кристалл крошечный
Кристалл был момент в 2017 году, когда всего за месяц он переместился с 60-го на 32-е место в индексе TIOBE. Трудно сказать о причинах такого стремительного роста, но вполне вероятно, что создатели Crystal в то время занимались маркетингом и заинтересовали программистов на Ruby.
Однако момент славы Кристал длился недолго. На момент написания этой статьи Crystal даже близко не входил в число 50 лучших языков программирования на рынке. Индекс ТИОБЕ.
Из-за раннего роста популярности некоторые люди надеялись, что одинаковые уровни популярности как Раст.
Это, однако, не материализовалось.
У программистов есть выразил разочарование о примерах проектов или кодовых базах. Кроме того, документация кажется немного неполной. Это оттолкнуло новых программистов в массовом порядке.
И из-за этого сообщество Crystal настолько мало, что вам придется подождать некоторое время, чтобы получить помощь, если у вас возникнут проблемы. Просто не так много ответов на StackOverflow, GitHub и им подобных.
Другой недостаток: Crystal не так быстр, как обещал.
Создатели Crystal хотели, чтобы язык был таким же быстрым, как C.
Это может быть правдой в отдельных случаях. Однако в большинстве случаев Crystal занимает около в два раза дольше выполнять как это делает С.
Языки программирования (или технологические компании, если на то пошло) нередко имеют раздутые заявления о миссии. И, честно говоря, вдвое медленнее, чем C, все равно довольно быстро.
Тем не менее, Crystal значительно отстает от своего первоначального обещания. Это настолько очевидно, что я не могу винить среднего разработчика в разочаровании.
Знаменитые последние слова: Crystal только для опытных программистов
Мне нравится изучать новые языки программирования, но я предпочитаю хорошо документированные языки с большим и поддерживающим сообществом. Многие программисты чувствуют то же самое.
У Crystal был шанс завоевать широкую популярность, но в целом за последние несколько лет он потерпел неудачу.
Это не означает, что у Crystal нет интересных вариантов использования. Это может быть интересным вариантом для людей, работающих с технологией блокчейн. Вы можете создать довольно мощная криптовалюта с Кристаллом.
При этом, если документация, маркетинг и общая поддержка сообщества для Crystal не улучшатся, он также не будет отличным вариантом для среднего разработчика блокчейна.
Если вы хотите играть с таким языком, как Crystal, вам лучше принести с собой немного опыта. Потому что, когда вы сталкиваетесь с проблемой, может быть некому помочь вам.
Эта статья была написана Ари Джури и изначально опубликована на Medium. Вы можете прочитать это здесь.