View
626
Download
1
Category
Preview:
Citation preview
Erlang - concurrency-oriented programming
Serhiy Yvtyshenko
Як ми програмували ?
• Одночасно виконується одне завдання.
• Якщо щось піде не так - процес/система крешиться.
• Щоб дізнатися чи є оновлення - потрібно постій робити запити.
• Організація багатопотоковості –надзвичайно складна.
Зміни
• Ми маємо багатопроцесорті сервери і технології віртуалізації
• Ми хочемо щоб програма швидко реагувала на наші команди
• Паралельна обробка великих обємів данних
• Необхідна коректна реакція на форсмажорні обставини
• Легке маштабування
Світ паралельний
Erlang дозволяє програмувати за прикладом наших думок і взаємодій.
Основні особливості
• Декларативна мова програмування.
• Паралельне виконання коду без блокувань, синхронізації і спільної памяті
• Віртуальна машина яка максимально використовує всі ресурси сервера/кластера
• Коректна робота за будь-яких обставин
• Легке маштабування
• Готовий фреймворк і база данних
• Оновлення коду на льоту
Чи легко вивчити цю мову ?
Так – якщо Ви зможете змінити своє мислення
Змінюємо спосіб мислення 1
• Цілі числа довільного розміру
• Змінним можна присвоїти значення один раз
• Немає звичних масивів, але є атоми, кортежі, списки.
• «=» оператор шаблону а не присвоєння (x =6, x=4+2)
• Немає циклів
Змінюємо спосіб мислення 2
• BIF (built-in functions) і NIF (native implemented functions)
• Проста робота з бінарними данними
• Створення процесів і відправка повідомлень між ними є надзвичано проста і швидка
• Єдиний спосіб взаємодії між процесами –це відправка повідомлень
Змінюємо спосіб мислення 3
• Ви маєте повний контроль над процесами
• Легко створювати кластер
• Простий спосіб створення TPC/UDP сервера (Nonblocking/Blocking/Hybrid)
• Легка взаємодія з зовнішніми програмами С/python і т.д.
• ETS / DETS таблиці
• OTP Фреймворк
Змінюємо спосіб мислення 4
• Mnesia
• Оновлення коду на льоту
• Моніторинг/ логи / дебаг / тестування
Де не використовувати Erlang
• Парсинг
• Конвертація данних
• Складна обробка данних
• Однопотокові завдання
Скільки нас ? (TIOBE: 0.25%)Мова Доля на ринку(%) Зміни (в порівнянні з 07/11) Рабочий зараз Доля ринку в перспективі
Почали б проект зараз
Як додатковий робочий
В хоббі —проекті
1 Java 26.19 5.6 621 24.01 650 531 570
2 C# 21.26 - 504 23.2 629 0 673
3 PHP 14.5 -3 344 9.12 247 407 631
4 C++ 10.46 - 248 7.94 215 459 498
5 Python 6.33 - 150 12.52 339 453 424
6 Ruby 3.8 - 91 6.64 180 181 198
7 Javascript 3.71 1.08 88 3.43 93 1594 649
8 Objective-C 3.71 - 88 3.47 94 127 132
9 C 2.02 - 48 - 20 318 186
10 ActionScript 1.68 - 40 - 20 0 0
11Pascal/Delphi
1.47 -0.9 35 - 25 0 0
12 PL/SQL 1.01 - 24 - 10 452 0
13 1C 1.01 - 24 - 8 0 0
14 Perl - - 20 - 16 111 83
15 Basic - - 12 - 0 40 26
16 Scala - - 10 3.1 84 47 66
17 Groovy - - 8 - 25 92 40
18 Apex - - 4 - 0 0 0
19 Lua - - 4 - 0 45 25
20 Erlang - - 4 - 17 31 22
21 Haskell - - 1 - 17 0 37
22 F# - - 1 - 12 0 7
23 Lisp - - 1 - 0 33 43
24 Asm - - 2 - 0 0 35
25 Fortran - - 0 - 0 0
Хто використовує Erlang
Amazon (SimpleDB), Yahoo! (Delicious), Facebook (чат), Телкоми (Ericsson, Motorola, T-Mobile), Electronic Arts, 37signals, Wooga, Machine Zone, RebbitMQ, Riak, Couchbase, Wings 3D, ejabberd, ПриватБанк
Книги
• Programming Erlang: Software for a Concurrent World by Joe Armstrong
• Erlang Programming By Francesco Cesarini, Simon Thompson
Приклад №1: Pattern Matching
Приклад №2: Створення процесу
Pid = spawn(fun server_fun:loop/0).
Приклад №3: Годинник
Приклад №4: Чат
Дякую за увагу
Якщо у Вас є питання чи Ви бажаєте вивчати
Erlang i/або HTML5 – буду радий познайомитися.
Явтушенко Сергій:
ua.programmer@gmail.com
Recommended