Erlang

обзор

Дмитрий Грошев (@lambdadmitry)

  • Erlang приятен, как язык и платформа
  • удобен для больших команд
  • удобен для узких ниш

Приятность

Отступление

Programming…

  • …in the small
  • …in the large

…in the small

Хорошее

  • очень простой язык
  • pattern matching
  • атомы
  • хвостовая рекурсия
  • list comprehensions
  • модули
  • иммутабельность всего
  • single assignment
  • нет сложных типов

Мой любимый язык: баланс выразительности и сложности

Плохое

  • иммутабельность всего
  • single assignment
  • нет сложных типов
  • очень простой язык

…in the large

Хорошее

  • Акторы
  • OTP
  • Обработка ошибок
  • Не нужно думать

Плохое

Erlang любят исследователи!

  • статический анализ динамических языков (e.g. Dialyzer)
  • распределённые алгоритмы (e.g. RAFT)

Платформа

Отступление про историю

  • 1995: первый продакшн
  • 1998: бан в Ericsson, opensource
  • 2000–2004: бан отменён
  • 2006: SMP

Следы: tradeoff'ы, Mnesia, полносвязный кластер

Хорошее

  • обработка ошибок
  • «плавность» выполнения (вытеснение тредов)
  • удобство интроспекции «на лету»
  • scalability

Плохое

  • большой рантайм-оверхед (~Python)
  • опасность NIF
  • «изображает ОС» ⓒ amarao

Команды и ниши

Большие команды

  • Настоящая простота (а не как у Java)
  • Ericsson, Motorola, Klarna
  • одна крупная петербуржская торговая компания

Узкие ниши

  • Riak, CouchDB
  • Erlyvideo
  • WhatsApp
  • YAWNDB
  • перекладывание байтиков
  • инфраструктура

Сравнения

  • vs lowlvl Java: Hibernate, Spring, …
  • vs highlvl Java: LMAX Disruptor
  • vs Python/Ruby: Django/Rails

Есть PropEr, но нет веб-фреймворка!

Выводы

  • простой и полезный инструмент
  • быстро изучается
  • совсем не silver bullet
  • изучение окупается

Пользуясь случаем…

…консультирую и учу

Вопросы?

Слайды: si14.github.io/sprug-2014-02-slides

Твиттер: @lambdadmitry

Почта: lambdadmitry@gmail.com