Алексей Туля - А нужен ли вам erlang?
DESCRIPTION
Доклад Алексейя Тули на декабрьской линуксовке MLUG 2013TRANSCRIPT
![Page 1: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/1.jpg)
ErlangGood news, bad news.
![Page 2: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/2.jpg)
О себе
7 лет в IT
C/C++/Ruby
Специализация: облачные хранилища (Dropbox), виртуализация
Linux/Mac OS X
![Page 3: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/3.jpg)
![Page 4: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/4.jpg)
![Page 5: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/5.jpg)
![Page 6: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/6.jpg)
Как создавать программы, почти такие же надежные, как железо
Как программировать, почти так же просто, как собирать железо
!Позитивное программирование
Идея создания языка
![Page 7: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/7.jpg)
Краткая история
1986 - первая версия (by Ericsson in Computer Science lab)
1998 - открыт исходный код !
История в трех словах: завелось и поехало
![Page 8: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/8.jpg)
Истории успеха
ejabberd, CouchDB, Facebook Chat backend, Amazon SimpleDB, Twitter client integration
![Page 9: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/9.jpg)
Возможности Erlang
“Each year your sequential programs will go slower.
Each year your concurrent programs will go faster.”
!
Joe Armstrong (Erlang inventor)
![Page 10: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/10.jpg)
Возможности Erlang
- Модель многопоточности, основанная на легких процессах, обменивающихся сообщениями; - Распределенность, сетевая прозрачность; - Устойчивость к ошибкам; - Горячее обновление кода.
![Page 11: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/11.jpg)
Возможности Erlang
Erlang - это OTP (Open Telecom Platform)
![Page 12: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/12.jpg)
Многопоточность Erlang
Нет deadlock и race conditions? есть. особенно если обращаться к внешним ресурсам.
![Page 13: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/13.jpg)
Распределенность Erlang
Чтобы сделать программу на erlang надежной - нужно как минимум два компьютера.
![Page 14: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/14.jpg)
Устойчивость к ошибкам Erlang
Три уровня защиты: Изолированность потоков, супервайзеры, распределенность !На практике все это все равно не спасает от проблем
![Page 15: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/15.jpg)
Горячее обновление кода Erlang
Было в лиспе
![Page 16: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/16.jpg)
OOP и Erlang
Erlang - OOP framework
![Page 17: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/17.jpg)
Мой путь
+
![Page 18: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/18.jpg)
Достоинства языка Erlang
- неизменяемые переменные - нет общего состояния между процессами (передача сообщений) - быстрое обучение (несколько недель) - зрелость языка - меньше кода - меньше багов - горячее обновление кода - удобное создание и парсинг бинарных протоколов - есть вакансии. хорошие. сравнительно много для мира ФП
![Page 19: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/19.jpg)
Недостатки языка Erlang
- это не язык общего назначения - динамическая типизация - для меня недостаток - плохая документация для библиотек - бардак с библиотеками, нестабильны, куча версий, форков и непонятно какую использовать - синтаксис языка часто удручает. Это Prolog (80’s). - тяжелый рефакторинг, много синтаксических ошибок - хочется статической типизации - erlang медленный. В важных местах прибегать к С. - мало разработчиков
![Page 20: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/20.jpg)
Erlang хорошо подходит для
- системы мониторинга - распределенные БД - СПЕЦИАЛИЗИРОВАННЫЕ высокопроизводительные веб-серверы - приложения, нуждающиеся в кластеризации и распределении вычислений - для soft real-time приложений (streaming видео это soft real time, баллистические ракеты это hard real-time). - различные load-balancer без привязки к протоколу.
![Page 21: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/21.jpg)
Erlang плохо подходит для
- веб-приложений которые работают с CRUD (create/retrieve/update/delete), веб-формы, веб-UI, сайты). - тяжелые вычислительные задачи - обработка строк: парсеры, преобразования, и.т.д.. - Desktop GUI
![Page 22: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/22.jpg)
- политика (erlang это не С и не Java, политика компании) - один производитель - представьте, что Ericcson перестанет поддерживать erlang - не мейнстрим. мало программистов.
Почему не стоит писать на Erlang
![Page 24: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/24.jpg)
Вопросы?
![Page 25: Алексей Туля - А нужен ли вам erlang?](https://reader034.vdocument.in/reader034/viewer/2022042514/557ecc5cd8b42ae27f8b4aa6/html5/thumbnails/25.jpg)
Спасибо за внимание!