Краткое введение в Erlang/OTP

2,110 views

Published on

По материалам конференции .NET разработчиков - www.dotnetconf.ru

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,110
On SlideShare
0
From Embeds
0
Number of Embeds
753
Actions
Shares
0
Downloads
18
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Краткое введение в Erlang/OTP

  1. 1. 5-я конференция .NET разработчиков21 октября 2012www.dotnetconf.ru Краткое введение в Erlang/OTP Александр Карпич «Планар» twitter.com/_ymn
  2. 2. Веб сегодня● Большое количество пользователей● Множество долгоживущих соединений● Многопроцессорные конфигурации оборудования Краткое введение в Erlang/OTP Александр Карпич , 2
  3. 3. Больше интерактива!● Аудио/видео стримминг● Системы обмена сообщениями● Мобильные приложения Краткое введение в Erlang/OTP Александр Карпич , 3
  4. 4. Инструменты:● C++● Java● .NET● Node.JS● Всякие Python, Perl, Ruby Краткое введение в Erlang/OTP Александр Карпич , 4
  5. 5. Проблемы реализации● Утечки памяти● Утечки ресурсов● Сложность параллельного программирования● Проблемы с масштабированием Краткое введение в Erlang/OTP Александр Карпич , 5
  6. 6. Серебряной пули нет Краткое введение в Erlang/OTP Александр Карпич , 6
  7. 7. Но есть инструмент, позволяющий решать многие проблемы Краткое введение в Erlang/OTP Александр Карпич , 7
  8. 8. Краткое введение в Erlang/OTP Александр Карпич , 8
  9. 9. ● 25 лет использования в продакшн● Придуман ленивыми инженерами, которые хотели проводить выходные дома● Erlang — не академическая поделка вроде Haskell● Разрабатывался и тестировался в «боевых» условиях Краткое введение в Erlang/OTP Александр Карпич , 9
  10. 10. Кто использует?Краткое введение в Erlang/OTP Александр Карпич , 10
  11. 11. «You probably use systems based on Erlang/OTP every day without knowing it.» Mike Williams Краткое введение в Erlang/OTP Александр Карпич , 11
  12. 12. Кто используетКраткое введение в Erlang/OTP Александр Карпич , 12
  13. 13. Что написаноКраткое введение в Erlang/OTP Александр Карпич , 13
  14. 14. Killer features• Изолированные потоки исполнения• Обмен копируемыми сообщениями• Иммутабельные данные Краткое введение в Erlang/OTP Александр Карпич , 14
  15. 15. Решение проблем• Иммутабельные данные решают проблему утечек ресурсов• Данные умирают вместе с процессами• Специфическая обработка ошибок Краткое введение в Erlang/OTP Александр Карпич , 15
  16. 16. Обработка ошибок• Проверка входящих параметров?• Исключения?• POSIX Сигналы? Краткое введение в Erlang/OTP Александр Карпич , 16
  17. 17. Есть идея получшеКраткое введение в Erlang/OTP Александр Карпич , 17
  18. 18. Let it fail!Краткое введение в Erlang/OTP Александр Карпич , 18
  19. 19. Worker/SupervisorКраткое введение в Erlang/OTP Александр Карпич , 19
  20. 20. one_for_oneКраткое введение в Erlang/OTP Александр Карпич , 20
  21. 21. one_for_oneКраткое введение в Erlang/OTP Александр Карпич , 21
  22. 22. one_for_oneКраткое введение в Erlang/OTP Александр Карпич , 22
  23. 23. all_for_oneКраткое введение в Erlang/OTP Александр Карпич , 23
  24. 24. all_for_oneКраткое введение в Erlang/OTP Александр Карпич , 24
  25. 25. all_for_oneКраткое введение в Erlang/OTP Александр Карпич , 25
  26. 26. Учим Erlang за 40 минут Краткое введение в Erlang/OTP Александр Карпич , 26
  27. 27. Типы• Числа — 42, 3.14, 9.1E-31• Атомы — ok, true, blablabla• Кортежи — {1, true, {msg, 123}, 42}• Списки — [1, 2, [3, 4]]• Строки — «abc», [97, 98, 99]• Булева логика — true, false Краткое введение в Erlang/OTP Александр Карпич , 27
  28. 28. Переменные• Имена начинаются с большой буквы• Одиночное присваивание1> A = 42.422> A = 43.** exception error: no match of right hand side value 43 Краткое введение в Erlang/OTP Александр Карпич , 28
  29. 29. Pattern matchingfib(0) → 0;fib(1) → 1;fib(N) when N>1 → fib(N-1) + fib(N-2). Краткое введение в Erlang/OTP Александр Карпич , 29
  30. 30. Hello World!-module(hello).-export([start/0]).start() -> io:format("Hello world!~n"). Краткое введение в Erlang/OTP Александр Карпич , 30
  31. 31. Краткое введение в Erlang/OTP Александр Карпич , 31
  32. 32. Создаем процессPid = spawn(mod, func, [A, B, C]). Краткое введение в Erlang/OTP Александр Карпич , 32
  33. 33. Отправляем сообщение Pid ! Msg. Краткое введение в Erlang/OTP Александр Карпич , 33
  34. 34. Принимаем сообщение receive Msg → Msg end. Краткое введение в Erlang/OTP Александр Карпич , 34
  35. 35. Hello World!-module(hello).-export([start/0, loop/0]).start() -> Pid = spawn(hello, loop, []), Pid ! hello.loop() -> receive hello -> io:format("Hello, World!~n"), loop() end. Краткое введение в Erlang/OTP Александр Карпич , 35
  36. 36. Сравнение с другими языками Краткое введение в Erlang/OTP Александр Карпич , 36
  37. 37. Erlang vs. C/C++• Более продуктивен• Более надежен• Более краток• Модель акторов• На порядок медленнее Краткое введение в Erlang/OTP Александр Карпич , 37
  38. 38. Erlang vs. Java• Проектировался для многопроцессорных конфигураций• Легко масштабируется• Горячая замена кода• Меньше библиотек Краткое введение в Erlang/OTP Александр Карпич , 38
  39. 39. Недостатки• На порядок медленнее C• Работа со строками• Динамическая типизация• Непривычный синтаксис Краткое введение в Erlang/OTP Александр Карпич , 39
  40. 40. Расширяем возможности Краткое введение в Erlang/OTP Александр Карпич , 40
  41. 41. Краткое введение в Erlang/OTP Александр Карпич , 41
  42. 42. Материалы для обучения Краткое введение в Erlang/OTP Александр Карпич , 42
  43. 43. • http://learnyousomeerlang.com/• Armstrong — «Programming Erlang: Software for Concurrent World»• Cesarini, Thompson — «Erlang Programming»• erlang@conference.jabber.ru• http://erlang-russian.org/ Краткое введение в Erlang/OTP Александр Карпич , 43
  44. 44. Спасибо за внимание Александр Карпич «Планар» avkarpich@gmail.com twitter.com/_ymn Краткое введение в Erlang/OTP Александр Карпич , 44

×