SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
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
     Pascal/Delp
11               1.47                 -0.9                           35              -                          25                0               0
     hi
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

Contenu connexe

Erlang - concurrency-oriented programming by Serhiy Yvtyshenko

  • 1. Erlang - concurrency-oriented programming Serhiy Yvtyshenko
  • 2. Як ми програмували ? • Одночасно виконується одне завдання. • Якщо щось піде не так - процес/система крешиться. • Щоб дізнатися чи є оновлення - потрібно постій робити запити. • Організація багатопотоковості – надзвичайно складна.
  • 3. Зміни • Ми маємо багатопроцесорті сервери і технології віртуалізації • Ми хочемо щоб програма швидко реагувала на наші команди • Паралельна обробка великих обємів данних • Необхідна коректна реакція на форсмажорні обставини • Легке маштабування
  • 4. Світ паралельний Erlang дозволяє програмувати за прикладом наших думок і взаємодій.
  • 5. Основні особливості • Декларативна мова програмування. • Паралельне виконання коду без блокувань, синхронізації і спільної памяті • Віртуальна машина яка максимально використовує всі ресурси сервера/кластера • Коректна робота за будь-яких обставин • Легке маштабування • Готовий фреймворк і база данних • Оновлення коду на льоту
  • 6. Чи легко вивчити цю мову ? Так – якщо Ви зможете змінити своє мислення
  • 7. Змінюємо спосіб мислення 1 • Цілі числа довільного розміру • Змінним можна присвоїти значення один раз • Немає звичних масивів, але є атоми, кортежі, списки. • «=» оператор шаблону а не присвоєння (x =6, x=4+2) • Немає циклів
  • 8. Змінюємо спосіб мислення 2 • BIF (built-in functions) і NIF (native implemented functions) • Проста робота з бінарними данними • Створення процесів і відправка повідомлень між ними є надзвичано проста і швидка • Єдиний спосіб взаємодії між процесами – це відправка повідомлень
  • 9. Змінюємо спосіб мислення 3 • Ви маєте повний контроль над процесами • Легко створювати кластер • Простий спосіб створення TPC/UDP сервера (Nonblocking/Blocking/Hybrid) • Легка взаємодія з зовнішніми програмами С/python і т.д. • ETS / DETS таблиці • OTP Фреймворк
  • 10. Змінюємо спосіб мислення 4 • Mnesia • Оновлення коду на льоту • Моніторинг/ логи / дебаг / тестування
  • 11. Де не використовувати Erlang • Парсинг • Конвертація данних • Складна обробка данних • Однопотокові завдання
  • 12. Скільки нас ? (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 Pascal/Delp 11 1.47 -0.9 35 - 25 0 0 hi 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
  • 13. Хто використовує Erlang Amazon (SimpleDB), Yahoo! (Delicious), Facebook (чат), Телкоми (Ericsson, Motorola, T- Mobile), Electronic Arts, 37signals, Wooga, Machine Zone, RebbitMQ, Riak, Couchbase, Wings 3D, ejabberd, ПриватБанк
  • 14. Книги • Programming Erlang: Software for a Concurrent World by Joe Armstrong • Erlang Programming By Francesco Cesarini, Simon Thompson
  • 16. Приклад №2: Створення процесу Pid = spawn(fun server_fun:loop/0).
  • 19. Дякую за увагу Якщо у Вас є питання чи Ви бажаєте вивчати Erlang i/або HTML5 – буду радий познайомитися. Явтушенко Сергій: ua.programmer@gmail.com