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

Post on 15-Jun-2015

398 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

ErlangGood news, bad news.

О себе

7 лет в IT

C/C++/Ruby

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

Linux/Mac OS X

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

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

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

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

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

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

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

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

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

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

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

“Each year your sequential programs will go slower.

Each year your concurrent programs will go faster.”

!

Joe Armstrong (Erlang inventor)

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

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

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

Erlang - это OTP (Open Telecom Platform)

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

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

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

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

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

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

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

Было в лиспе

OOP и Erlang

Erlang - OOP framework

Мой путь

+

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

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

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

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

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

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

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

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

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

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

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

Литература

Вопросы?

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

top related