Upload
minsk-linux-user-group
View
373
Download
6
Tags:
Embed Size (px)
DESCRIPTION
Доклад Алексейя Тули на декабрьской линуксовке MLUG 2013
Citation preview
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
Вопросы?
Спасибо за внимание!