Erlang - concurrency-oriented programming by Serhiy Yvtyshenko
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Erlang - concurrency-oriented programming by Serhiy Yvtyshenko

on

  • 812 views

 

Statistics

Views

Total Views
812
Views on SlideShare
537
Embed Views
275

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 275

http://www.itbooze.com.ua 275

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Erlang - concurrency-oriented programming by Serhiy Yvtyshenko Presentation Transcript

  • 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 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. Хто використовує ErlangAmazon (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
  • 15. Приклад №1: Pattern Matching
  • 16. Приклад №2: Створення процесу Pid = spawn(fun server_fun:loop/0).
  • 17. Приклад №3: Годинник
  • 18. Приклад №4: Чат
  • 19. Дякую за увагу Якщо у Вас є питання чи Ви бажаєте вивчати Erlang i/або HTML5 – буду радий познайомитися.Явтушенко Сергій:ua.programmer@gmail.com