Elm - это захватывающий и относительно молодой функциональный язык программирования, ориентированный на современную веб-разработку. Он компилируется в оптимизированный Javascript и может похвастаться большой производительностью. В отличие от Javascript, который не создавался специально для прогрессивных веб-приложений, Elm был разработан именно для этого, и это видно. Все, что вам нужно, чтобы начать создавать действительно отличный современный веб-сайт, уже собрано в Elm. Это настоящий язык программирования, в котором "батарейки включены".

Когда дело доходит до Вяза, есть много поводов для радости. Возможно, самой интересной особенностью является компилятор, в котором есть несколько очень дружелюбных сообщений об ошибках. Больше никаких undefined - это не функция! Ваш опыт программирования станет больше похож на беседу (вместо того, чтобы ощущать, как будто вы бьетесь головой о стену). Компилятор чувствует себя помощником, и ошибки читаются человеком. Действительно, команда Elm любит использовать концепцию компилятор как помощник. Результатом является супер освежающий опыт программирования.

Синтаксис Elm также довольно освежает с упором на чистый и читаемый код. Как и Python, Elm считает пробелы синтаксически значимыми. Но Elm делает еще один шаг вперед с пробелами. Вместо скобок и запятых для функций, Elm использует только пробелы. Это может занять некоторое время, но результат выглядит действительно чистым.

Известный менеджер состояний Redux также позаимствовал некоторые концепции программирования от Elm. Действия в Redux эквивалентны сообщениям Elm. Если сравнивать, действия redux на самом деле выглядят многословными и неуклюжими.

const ADD_TODO = 'ADD_TODO'
{
  type: ADD_TODO,
  text: 'Build my first Redux app'
}

vs.

type Msg = AddTodo String

Это из-за алгебраических типов данных Элма. Если что-то является типом объединения, это один из конечного числа типов, каждый со своей собственной структурой. Эта замечательная языковая функция - вот почему сообщения Elm настолько лаконичны по сравнению с действиями Redux.

Уникальный синтаксис Elm полностью исключает ошибки времени выполнения. Elm использует интерфейс типов для обнаружения проблем во время компиляции и сообщает вам, в чем именно заключается несоответствие типов и как его исправить. Спасибо, мама! … Нет, но на самом деле это круто. Это сэкономит вам время, потраченное на обнаружение ошибки - время, которое можно потратить на создание новой функции или нового проекта, или на что угодно. Если вы работаете над большим проектом и вам нужно долго ждать сборки, чтобы увидеть глупую ошибку типа, то это серьезные секунды, которые тратятся и тратятся на рабочий процесс. Вяз решает эту проблему.

Еще один аргумент в пользу того, что Elm cli позволяет очень легко запустить проект. Как разработчик Javascript накладные расходы на запуск проекта могут быть обременительными, а также связаны с несколькими решениями: следует ли мне использовать Angular, React или Vue для интерфейса? А что насчет гос-менеджмента? Redux? Mobx? Вы, вероятно, тоже захотите добавить в смесь бабель. А как насчет Webpack или Grunt? Эти решения требуют не только времени, но и времени, прежде чем вы сможете сесть и приступить к написанию кода. Бу, это отстой. Но с Вязом ... это просто вяз. Я думаю, что это тема для Вяза. Это должен быть их девиз. Начать работу с вашим новым проектом становится тривиальной задачей. Просто используйте elm -actor из командной строки, и ваш проект будет работать на http: // localhost: 8000.

Я также упоминал, что Элм чрезвычайно производительный и сверхлегкий? Elm показал хорошие результаты по сравнению с лучшими фреймворками Javsacript. Сгенерированный javascript не обязательно быстрее, но у языка есть определенные гарантии дизайна, которые оптимизируют производительность. Помните, что у Elm нет побочных эффектов, поэтому он может использовать это в своих интересах во время выполнения. Внутри Elm есть «ленивая функция», которая может кэшировать результаты функции и не требует повторного вычисления. выход в будущем. Функциональное программирование - это круто.

Для модульного тестирования? Тест вяз ... и это то, что все используют. Это еще одна вещь, в которой каждый может попасть на одну страницу. Никто не должен думать о том, использовать ли чай, мокко или что-то еще. Это также делает написание тестов свойств, которые требуют большого количества входных данных, намного чище.

Elm уже обращается к будущей функциональности, так что сейчас самое время сесть на поезд Elm. В будущем Elm может переключиться с компиляции на javascript на компиляцию в WebAssembly, что может означать, что Elm станет еще быстрее.

Еще не уверены попробовать Вяз? Может быть, задайте себе еще несколько вопросов. Вы когда-нибудь разочаровывались в npm? Является ли зависимость от зависимости препятствием для вашего проекта, готового к производству? Вам надоели ложные обещания семантического управления версиями? Не смотрите дальше! У Elm есть собственный менеджер пакетов, который обеспечивает семантическое управление версиями! Это огромный аргумент в пользу Elm. Компилятор знает обо всех ваших зависимостях и четко расскажет о критических изменениях, что в конечном итоге избавит вас от огромной ошибки.

Одним из недостатков Elm (а их немного) является то, что экосистема, по общему признанию, сейчас мала. Так что это не в масштабе NPM или даже около Apache Commons, но сообщество великое и очень гостеприимное для новичков. Несмотря на небольшой размер сообщества, пользователи Elm все еще делают классные вещи. Подобно библиотеке стилевых элементов, которая представляет собой новый язык макета, для которого в качестве цели компиляции используется css. Это действительно хорошая система компоновки, которая работает в браузере и упрощает вертикальное центрирование! Ух ты!

Кто использует вяз? Вероятно, имена, которые вы не слышали ... Но есть и те, которые могут быть у вас: Carfax, Prezi и noredink.

Если вас убедили попробовать Elm, посетите некоторые из этих ресурсов. Ваша первая остановка должна быть elm - lang.org для введения и некоторой документации. Этот курс по Elm - тоже отличное введение https://frontendmasters.com/courses/elm/. И отличный подкаст для ваших ушей https://elmtown.audio/.