Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Краткое введение в Erlang/OTP
1. 5-я конференция .NET разработчиков
21 октября 2012
www.dotnetconf.ru
Краткое введение в Erlang/OTP
Александр Карпич
«Планар»
twitter.com/_ymn
2. Веб сегодня
●
Большое количество
пользователей
●
Множество долгоживущих
соединений
●
Многопроцессорные
конфигурации оборудования
Краткое введение в Erlang/OTP Александр Карпич
, 2
3. Больше интерактива!
●
Аудио/видео стримминг
●
Системы обмена сообщениями
●
Мобильные приложения
Краткое введение в Erlang/OTP Александр Карпич
, 3
4. Инструменты:
●
C++
●
Java
●
.NET
●
Node.JS
●
Всякие Python, Perl, Ruby
Краткое введение в Erlang/OTP Александр Карпич
, 4
5. Проблемы реализации
●
Утечки памяти
●
Утечки ресурсов
●
Сложность параллельного
программирования
●
Проблемы с масштабированием
Краткое введение в Erlang/OTP Александр Карпич
, 5
9. ●
25 лет использования в продакшн
●
Придуман ленивыми инженерами,
которые хотели проводить выходные дома
●
Erlang — не академическая поделка вроде
Haskell
●
Разрабатывался и тестировался в «боевых»
условиях
Краткое введение в Erlang/OTP Александр Карпич
, 9
14. Killer features
• Изолированные потоки исполнения
• Обмен копируемыми сообщениями
• Иммутабельные данные
Краткое введение в Erlang/OTP Александр Карпич
, 14
15. Решение проблем
• Иммутабельные данные решают
проблему утечек ресурсов
• Данные умирают вместе с
процессами
• Специфическая обработка ошибок
Краткое введение в Erlang/OTP Александр Карпич
, 15
16. Обработка ошибок
• Проверка входящих параметров?
• Исключения?
• POSIX Сигналы?
Краткое введение в Erlang/OTP Александр Карпич
, 16
28. Переменные
• Имена начинаются с большой буквы
• Одиночное присваивание
1> A = 42.
42
2> A = 43.
** exception error: no match of right hand side value 43
Краткое введение в Erlang/OTP Александр Карпич
, 28
29. Pattern matching
fib(0) → 0;
fib(1) → 1;
fib(N) when N>1 → fib(N-1) + fib(N-2).
Краткое введение в Erlang/OTP Александр Карпич
, 29
36. Сравнение с другими языками
Краткое введение в Erlang/OTP Александр Карпич
, 36
37. Erlang vs. C/C++
• Более продуктивен
• Более надежен
• Более краток
• Модель акторов
• На порядок медленнее
Краткое введение в Erlang/OTP Александр Карпич
, 37
38. Erlang vs. Java
• Проектировался для
многопроцессорных конфигураций
• Легко масштабируется
• Горячая замена кода
• Меньше библиотек
Краткое введение в Erlang/OTP Александр Карпич
, 38
39. Недостатки
• На порядок медленнее C
• Работа со строками
• Динамическая типизация
• Непривычный синтаксис
Краткое введение в Erlang/OTP Александр Карпич
, 39