Top Banner
Erlang Good news, bad news.
25

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

Jun 15, 2015

Download

Technology

Доклад Алексейя Тули на декабрьской линуксовке MLUG 2013
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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?

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