25
Erlang Good news, bad news.

Алексей Туля - А нужен ли вам erlang?

Embed Size (px)

DESCRIPTION

Доклад Алексейя Тули на декабрьской линуксовке MLUG 2013

Citation preview

Page 1: Алексей Туля - А нужен ли вам erlang?

ErlangGood news, bad news.

Page 2: Алексей Туля - А нужен ли вам erlang?

О себе

7 лет в IT

C/C++/Ruby

Специализация: облачные хранилища (Dropbox), виртуализация

Linux/Mac OS X

Page 3: Алексей Туля - А нужен ли вам erlang?
Page 4: Алексей Туля - А нужен ли вам erlang?
Page 5: Алексей Туля - А нужен ли вам erlang?
Page 6: Алексей Туля - А нужен ли вам erlang?

Как создавать программы, почти такие же надежные, как железо

Как программировать, почти так же просто, как собирать железо

!Позитивное программирование

Идея создания языка

Page 7: Алексей Туля - А нужен ли вам erlang?

Краткая история

1986 - первая версия (by Ericsson in Computer Science lab)

1998 - открыт исходный код !

История в трех словах: завелось и поехало

Page 8: Алексей Туля - А нужен ли вам erlang?

Истории успеха

ejabberd, CouchDB, Facebook Chat backend, Amazon SimpleDB, Twitter client integration

Page 9: Алексей Туля - А нужен ли вам erlang?

Возможности Erlang

“Each year your sequential programs will go slower.

Each year your concurrent programs will go faster.”

!

Joe Armstrong (Erlang inventor)

Page 10: Алексей Туля - А нужен ли вам erlang?

Возможности Erlang

- Модель многопоточности, основанная на легких процессах, обменивающихся сообщениями; - Распределенность, сетевая прозрачность; - Устойчивость к ошибкам; - Горячее обновление кода.

Page 11: Алексей Туля - А нужен ли вам erlang?

Возможности Erlang

Erlang - это OTP (Open Telecom Platform)

Page 12: Алексей Туля - А нужен ли вам erlang?

Многопоточность Erlang

Нет deadlock и race conditions? есть. особенно если обращаться к внешним ресурсам.

Page 13: Алексей Туля - А нужен ли вам erlang?

Распределенность Erlang

Чтобы сделать программу на erlang надежной - нужно как минимум два компьютера.

Page 14: Алексей Туля - А нужен ли вам erlang?

Устойчивость к ошибкам Erlang

Три уровня защиты: Изолированность потоков, супервайзеры, распределенность !На практике все это все равно не спасает от проблем

Page 15: Алексей Туля - А нужен ли вам erlang?

Горячее обновление кода Erlang

Было в лиспе

Page 16: Алексей Туля - А нужен ли вам erlang?

OOP и Erlang

Erlang - OOP framework

Page 17: Алексей Туля - А нужен ли вам erlang?

Мой путь

+

Page 18: Алексей Туля - А нужен ли вам erlang?

Достоинства языка Erlang

- неизменяемые переменные - нет общего состояния между процессами (передача сообщений) - быстрое обучение (несколько недель) - зрелость языка - меньше кода - меньше багов - горячее обновление кода - удобное создание и парсинг бинарных протоколов - есть вакансии. хорошие. сравнительно много для мира ФП

Page 19: Алексей Туля - А нужен ли вам erlang?

Недостатки языка Erlang

 - это не язык общего назначения  - динамическая типизация - для меня недостаток  - плохая документация для библиотек  - бардак с библиотеками, нестабильны, куча версий, форков и непонятно какую использовать  - синтаксис языка часто удручает. Это Prolog (80’s). - тяжелый рефакторинг, много синтаксических ошибок  - хочется статической типизации  - erlang  медленный. В важных местах прибегать к С.  - мало разработчиков

Page 20: Алексей Туля - А нужен ли вам erlang?

Erlang хорошо подходит для

- системы мониторинга - распределенные БД - СПЕЦИАЛИЗИРОВАННЫЕ высокопроизводительные веб-серверы - приложения, нуждающиеся в кластеризации и распределении вычислений - для soft real-time приложений (streaming видео это soft real time, баллистические ракеты это hard real-time). - различные load-balancer без привязки к протоколу.

Page 21: Алексей Туля - А нужен ли вам erlang?

Erlang плохо подходит для

- веб-приложений которые работают с CRUD (create/retrieve/update/delete), веб-формы, веб-UI, сайты). - тяжелые вычислительные задачи - обработка строк: парсеры, преобразования, и.т.д.. - Desktop GUI

Page 22: Алексей Туля - А нужен ли вам erlang?

- политика (erlang это не С и не Java, политика компании)  - один производитель - представьте, что Ericcson перестанет поддерживать erlang  - не мейнстрим. мало программистов.

Почему не стоит писать на Erlang

Page 23: Алексей Туля - А нужен ли вам erlang?

1. Learn you some Erlang for Great Good 2. tryerlang.org

Литература

Page 24: Алексей Туля - А нужен ли вам erlang?

Вопросы?

Page 25: Алексей Туля - А нужен ли вам erlang?

Спасибо за внимание!