Говорим о новом

Обзор функционального типизированного языка для фронтенд разработки

Elm-lang

Автор: Давыденков Михаил

Содержание


  • С чего всё началось или зачем спасать фронтенд :) ?
  • Размышления об истории развития языков
  • Идеи в основе языка
  • Синтаксические особенности и главные фишки
  • Elm architecture
  • Недостатки языка
  • Ссылочки

С чего всё началось

Жили-были хаскелисты, и было им одиноко. И решили они притащить хаскель во фронтенд во имя добра. И всё завертелось..

ast

Elm Selling points

  • JS Interoperability (ports and flags)
  • No Runtime Exceptions
  • Great performance (its own virtual DOM implementation)
  • Enforced SemVer
  • Unidirectional dataflow
  • Code maintainability and extensibility

Немного про историю развития языков

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

ast

Mainstream языки в настоящее время находятся под влиянием ФП и достаточно много нового адаптируют под себя

ast

Однако до конца не ясно в какую сторону развивается JS

Есть два стула  две оси. На одной доступность языка для понимания и скорость вхождения в язык, на другой - поддерживаемость и расширяемость написанных программ. Что выберете?

ast

Однако не всё так однозначно

ast

Светлое будущее

ast

В основе нового языка авторы закладывали некоторые идеи

Дружелюбность к пользователю

ast

Формирование современного коммьюнити

ast

Минимализм в фичах

ast

Tooling, который в разы сложнее создать в JS и языках-конкурентах (TypeScript, Dart)

ast

Mario Time Traveller

ast

Практически отсутствие рантайм ошибок (защита от опечаток и грубых логических несостыковок), управление эффектами, надежда на WebAssemly и многое другое

ast

Другие фишки языка и Elm architecture

Примеры простые и сложные

Но всё же в каждой бочке мёда есть ложка дёгтя. И не одна.. (я остался разочарован языком)

Минусы

  • Язык вовсе не так прост как его подают. Чтобы его понять мне пришлось осилить книжку по Haskell на 1000 страниц
  • Отсутствие средств писать полиморфический код (это то за что бьют Go-lang). Из-за этого в языке есть дублирование и неконсистентность (List.map, Set.map и тд)
  • Пока что слабо развита инфраструктура и тулинг вокруг языка. Шаг влево, шаг вправо и готовься писать велосипед (селекты, автокомплиты, календари, драг н дроп, роутеры)
  • Интероперабилити с JS требует писать много много кода руками. И не самого простого. Проще застрелиться чем вставить на страницу TinyMCE и настроить его плагины
  • Создатель языка достаточно молод и многие жалуются что он страдает острой формой диктаторства

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

Ссылочки

THE END