ErlangПрагматичный рассказ про прагматичный язык                                      yzh44yzh.com
●   Немного истории●   Обзор языка    ●   Многопоточность    ●   Устойчивость к ошибкам    ●   Распределенность    ●   Гор...
Немного истории●   Ericsson 70-e годы. Язык и ОС PLEX●   1985 г – исследование существующих языков●   1987 г – началась ра...
Обзор языка.    ●   Многопоточность    ●   Устойчивость к ошибкам    ●   Распределенность    ●   Горячее обновление       ...
Обзор языка.  ●   Erlang Run-Time System (ERTS)      ●   Sheduler      ●   I/O      ●   Garbage Collector                 ...
Обзор языка. Многопоточность.●   Shared memory with locks? Нет (ну почти нет)●   Software transactional memory? Нет (ну по...
Обзор языка. Многопоточность.   run() ->       Pid = spawn(fun ping/0),       Pid ! self(),       receive            pong ...
Обзор языка. Устойчивость к ошибкам. Defensive Programming – не нужно      Try … catch – не нужно                         ...
Обзор языка. Устойчивость к ошибкам.        Let It Crush                               yzh44yzh.com
Обзор языка. Устойчивость к ошибкам.Делаем только Happy Case :)                                yzh44yzh.com
Обзор языка. Устойчивость к ошибкам.                               yzh44yzh.com
Обзор языка. Распределенность.         Erlang Node                                 yzh44yzh.com
Обзор языка. Распределенность.         Message Passing       Location Transparency                                 yzh44yz...
Обзор языка. Распределенность.        Trusted окружение               или           TCP сокеты                            ...
Обзор языка. Горячее обновление.●   Обновить beam●   Использовать инфраструктуру OTP фреймворка                           ...
OTP фреймворк.   Open Telecom Platform                           yzh44yzh.com
OTP фреймворк.         Set of principles:     ●   Supervision Trees     ●   Behaviours     ●   Applications     ●   Releas...
OTP фреймворк. Behaviours.         ●   gen_server         ●   gen_event         ●   gen_fsm         ●   supervisor        ...
OTP фреймворк. gen_server.        ●   init/1        ●   handle_call/3        ●   handle_cast/2        ●   handle_info/2   ...
OTP фреймворк. gen_event.        ●   event        ●   event manager        ●   event handlers                             ...
OTP фреймворк. gen_event.●   gen_event:start({local, manager_name}).●   gen_event:add_handler(manager_name,    handler_mod...
OTP фреймворк. gen_fsm.       Finite State Machine                              yzh44yzh.com
OTP фреймворк. supervisor.           Restart Strategy:       ●   one_for_one       ●   one_for_all       ●   rest_for_one ...
OTP фреймворк. supervisor.    Child Specification:●   Id = term()●   StartFunc = {M, F, A}●   Restart = permanent | transi...
OTP фреймворк. application.    Directory Structure:●   src -- contains the Erlang source code.●   ebin -- contains the Erl...
OTP фреймворк. application.   application resource file   {application, ch_app,    [{description, "Channel allocator"},   ...
Сфера применения.    Долгоживущие сервеные приложения, обеспечивающие    коммуникацию большого числа пользователей.●   com...
Истории успеха.    AXD301 ATM Switch●   telephony-class 10–160 Gbps ATM switch●   1.5 million lines of Erlang code●   has ...
Истории успеха.    CouchDB●   open source database made by Damien Katz●   schema-less replicated document store, storing o...
Импровизация по другим темам :)●   Недостатки языка●   Средства разработки (Emacs, Erlide, ErlGray)●   Книги●   Чем Erlang...
Upcoming SlideShare
Loading in …5
×

Erlang: прагматичный рассказ про прагматичный язык

4,520 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Erlang: прагматичный рассказ про прагматичный язык

    Слайды презентация Юрия Жлобы (yzh44yzh.com) на 5-ой встрече Scala Enthusiasts Belarus
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
4,520
On SlideShare
0
From Embeds
0
Number of Embeds
2,805
Actions
Shares
0
Downloads
23
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Erlang: прагматичный рассказ про прагматичный язык

  1. 1. ErlangПрагматичный рассказ про прагматичный язык yzh44yzh.com
  2. 2. ● Немного истории● Обзор языка ● Многопоточность ● Устойчивость к ошибкам ● Распределенность ● Горячее обновление● Live Coding: сервис сокращенных ссылок● OTP фреймворк● Сфера применения. Истории успеха.● Импровизация по другим темам :) yzh44yzh.com
  3. 3. Немного истории● Ericsson 70-e годы. Язык и ОС PLEX● 1985 г – исследование существующих языков● 1987 г – началась разработка Erlang● 1995 г – релиз Erlang● 1996 г – релиз OTP● 1998 г – Erlang/OTP выпущены в open source● 2006 г – рост популярности платформы yzh44yzh.com
  4. 4. Обзор языка. ● Многопоточность ● Устойчивость к ошибкам ● Распределенность ● Горячее обновление yzh44yzh.com
  5. 5. Обзор языка. ● Erlang Run-Time System (ERTS) ● Sheduler ● I/O ● Garbage Collector yzh44yzh.com
  6. 6. Обзор языка. Многопоточность.● Shared memory with locks? Нет (ну почти нет)● Software transactional memory? Нет (ну почти нет)● Futures, Promises и подобное? Нет● Message Passing – это оно :) yzh44yzh.com
  7. 7. Обзор языка. Многопоточность. run() -> Pid = spawn(fun ping/0), Pid ! self(), receive pong -> ok end. ping() -> receive From -> From ! pong end. yzh44yzh.com
  8. 8. Обзор языка. Устойчивость к ошибкам. Defensive Programming – не нужно Try … catch – не нужно yzh44yzh.com
  9. 9. Обзор языка. Устойчивость к ошибкам. Let It Crush yzh44yzh.com
  10. 10. Обзор языка. Устойчивость к ошибкам.Делаем только Happy Case :) yzh44yzh.com
  11. 11. Обзор языка. Устойчивость к ошибкам. yzh44yzh.com
  12. 12. Обзор языка. Распределенность. Erlang Node yzh44yzh.com
  13. 13. Обзор языка. Распределенность. Message Passing Location Transparency yzh44yzh.com
  14. 14. Обзор языка. Распределенность. Trusted окружение или TCP сокеты yzh44yzh.com
  15. 15. Обзор языка. Горячее обновление.● Обновить beam● Использовать инфраструктуру OTP фреймворка yzh44yzh.com
  16. 16. OTP фреймворк. Open Telecom Platform yzh44yzh.com
  17. 17. OTP фреймворк. Set of principles: ● Supervision Trees ● Behaviours ● Applications ● Releases yzh44yzh.com
  18. 18. OTP фреймворк. Behaviours. ● gen_server ● gen_event ● gen_fsm ● supervisor yzh44yzh.com
  19. 19. OTP фреймворк. gen_server. ● init/1 ● handle_call/3 ● handle_cast/2 ● handle_info/2 ● terminate/2 ● code_change/3 yzh44yzh.com
  20. 20. OTP фреймворк. gen_event. ● event ● event manager ● event handlers yzh44yzh.com
  21. 21. OTP фреймворк. gen_event.● gen_event:start({local, manager_name}).● gen_event:add_handler(manager_name, handler_module, []).● gen_event:notify(manager_name, event).● gen_event:delete_handler(manager_name, handler_module, []). yzh44yzh.com
  22. 22. OTP фреймворк. gen_fsm. Finite State Machine yzh44yzh.com
  23. 23. OTP фреймворк. supervisor. Restart Strategy: ● one_for_one ● one_for_all ● rest_for_one yzh44yzh.com
  24. 24. OTP фреймворк. supervisor. Child Specification:● Id = term()● StartFunc = {M, F, A}● Restart = permanent | transient | temporary● Shutdown = brutal_kill | integer() >=0 | infinity● Type = worker | supervisor● Modules = [Module] yzh44yzh.com
  25. 25. OTP фреймворк. application. Directory Structure:● src -- contains the Erlang source code.● ebin -- contains the Erlang object code, the beam files.● include -- used for include files.● priv -- used for application specific files. yzh44yzh.com
  26. 26. OTP фреймворк. application. application resource file {application, ch_app, [{description, "Channel allocator"}, {vsn, "1"}, {modules, [ch_app, ch_sup, ch3]}, {registered, [ch3]}, {applications, [kernel, stdlib, sasl]}, {mod, {ch_app,[]}} ]}. yzh44yzh.com
  27. 27. Сфера применения. Долгоживущие сервеные приложения, обеспечивающие коммуникацию большого числа пользователей.● computer telephony● messaging systems● retail and commercial banking● enterprise● web services yzh44yzh.com
  28. 28. Истории успеха. AXD301 ATM Switch● telephony-class 10–160 Gbps ATM switch● 1.5 million lines of Erlang code● has been installed in networks all over the world● largest “Voice over ATM” backbone in the world● 99.9999999% availability.● Erlang code was 4 to 10 times shorter than similar systems written in C/C++, Java, and PLEX yzh44yzh.com
  29. 29. Истории успеха. CouchDB● open source database made by Damien Katz● schema-less replicated document store, storing objects in JSON format● and accessed through a RESTful interface.● first version of CouchDB in C++● entire C++ code base was replaced with Erlang● one of the best known Erlang open source applications currently being used in production systems worldwide. yzh44yzh.com
  30. 30. Импровизация по другим темам :)● Недостатки языка● Средства разработки (Emacs, Erlide, ErlGray)● Книги● Чем Erlang лучше Scala, чем Scala лучше Erlang?● Как убедить себя, работодателя, заказчика использовать Erlang?● Предложите свою тему :) yzh44yzh.com

×