Erlang - concurrency-oriented programming by Serhiy Yvtyshenko

784 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
784
On SlideShare
0
From Embeds
0
Number of Embeds
296
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Erlang - concurrency-oriented programming by Serhiy Yvtyshenko

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

×