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

7,536 views
7,343 views

Published on

Почему Erlang несравненно лучше, чем Java, C++, Node.js и прочие бейсики.

Published in: Technology
0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,536
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
77
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Что и почему писать на Erlang

    1. 1. Что и почемуписать на Erlang Макс Лапшин erlyvideo max@erlyvideo.org
    2. 2. Erlang — это круто• Опыт создания видеостримингового сервера erlyvideo• Есть с чем сравнивать: C++, Java, ObjectiveC• Erlang прекрасно себя показал
    3. 3. Erlang — это круто• Это не больно• Это свободная /cores по утрам• Это возможность пускать новичков в продакшн• Это решение проблем продакшна
    4. 4. Область применимостиДолгоживущие серверные приложения,обеспечивающие коммуникацию большого числаонлайн пользователей
    5. 5. Область применимости• Игры• Чаты, конференции• Аудио/видео коммуникации
    6. 6. Область применимости• Игры• Чаты, конференции• Аудио/видео коммуникации• Коммуникация онлайн-пользователей
    7. 7. Это всё можно делать• на Java
    8. 8. Это всё можно делать• на Java• на C++
    9. 9. Это всё можно делать• на Java• на C++• на Node.js
    10. 10. Это всё можно делать• на Java• на C++• на Node.js• на прочих перфокартовых технологиях
    11. 11. Проблемы общего назначенияПлатформы общего назначения имеют проблемы,фатальные для описываемой ситуации
    12. 12. Проблемы общего назначенияПлатформы общего назначения имеют проблемы,фатальные для описываемой ситуации
    13. 13. Проблемы общего назначенияПлатформы общего назначения имеют проблемы,фатальные для описываемой ситуацииВ контексте этих проблем Java от бейсика неотличается
    14. 14. Проблемы Java• Утечки памяти
    15. 15. Проблемы Java• Утечки памяти• Утечки ресурсов
    16. 16. Проблемы Java• Утечки памяти• Утечки ресурсов• Обработка ошибок
    17. 17. Проблемы Java• Утечки памяти• Утечки ресурсов• Обработка ошибок• Сложность параллельного программирования
    18. 18. Причина проблемВ языках типа Java разделены объекты и потокивыполненияУ них разное время жизни
    19. 19. Причина проблемНелокальность исключений по отношению кобъектамОбработка ошибок становится проблемой ипревращает код в спагетти
    20. 20. Причина проблемМутабельные данные превращают параллельноепрограммирование в кошмар
    21. 21. Результаты проблемПривлечение новых программистов — головная больИх ошибки валят весь проектЦена программирования растет
    22. 22. Erlang — это круто
    23. 23. Erlang — это круто• Вся память разделена на изолированные потоки исполнения
    24. 24. Erlang — это круто• Вся память разделена на изолированные потоки исполнения• Общение происходит через обмен копируемыми сообщениями
    25. 25. Erlang — это круто• Вся память разделена на изолированные потоки исполнения• Общение происходит через обмен копируемыми сообщениями• Все данные немутабельны, ссылок нет
    26. 26. Erlang — это круто• Вся память разделена на изолированные потоки исполнения• Общение происходит через обмен копируемыми сообщениями• Все данные немутабельны, ссылок нет• Эти потоки выглядят как процессы ОС и так же называются — «процессы»
    27. 27. Erlang — это крутоСпроектирован программистами Ericsson, которыеочень хотели спать по ночам
    28. 28. А вы хотите, что бы ночью работало только ПО?
    29. 29. Решение проблем• Просто и автоматически
    30. 30. Решение проблем• Просто и автоматически• Данные живут не дольше процесса
    31. 31. Решение проблем• Просто и автоматически• Данные живут не дольше процесса• Отсутствие мутабельности и ссылок снимает проблему их утекания
    32. 32. Решение проблем• Просто и автоматически• Данные живут не дольше процесса• Отсутствие мутабельности и ссылок снимает проблему их утекания• Ошибки автоматически пишутся в лог и завершают текущий процесс
    33. 33. Решение проблем• Просто и автоматически• Данные живут не дольше процесса• Отсутствие мутабельности и ссылок снимает проблему их утекания• Ошибки автоматически пишутся в лог и завершают текущий процесс• Ресурсы закрываются вместе с процессом
    34. 34. Let it crash• Программистам платят только за happy path• Продавцы продают код, а не обработку ошибок
    35. 35. ERror handling LANGuage{ok, F} = file:open(“a.txt”),{ok, Bin} = file:read(F, 1024)
    36. 36. soft-realtime• Нет ссылок• у каждого процесса изолированная куча• сборка мусора раздельная по ядрам
    37. 37. Многоядерность• Процессы изолированы• Никаких взаимных мьютексов• Автоматический шедулинг по ядрам из коробки
    38. 38. Горячая замена кода• Деплой кода без отключения онлайн пользователей
    39. 39. Легкая кластеризация• Сообщения точно так же копируются по сети• Идентификаторы процессов прозрачно переходят по сети
    40. 40. Говорят, Node.js круче• Нам не нужны изолированные треды• Нам не нужна многопроцессорность из коробки• Нам не нужна готовая инфраструктура обработки ошибок• Нам не нужна прозрачная сетевая работа• Мы выбираем server-side JS, потому что мы знаем JS
    41. 41. Evented — шаг назад• Evented подход превращает код в спагетти• Обработка ошибок в коллбеках ещё сложнее чем try/catch• Ни одна указанная проблема не решается• Годится для nginx
    42. 42. В Erlang и это круче{ok, F} = http_file:open(“http://ya.ru/”),{ok, Bin} = http_file:read(F, 1024)
    43. 43. Резюме• Классические решения имеют проблемы, вылезающие в продакшне• Проблемы дизайна усложняют включение новых программистов• Некоторые «модные» технологии ничего нового не привносят
    44. 44. Резюме• В Erlang дизайн платформы решает указанные проблем• Удешевляется поддержка и программирование• Растет плотность информации в коде (до 10 раз)• Облегчается включение новых программистов
    45. 45. Вопросы? Макс Лапшинmax@erlyvideo.org

    ×