• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Erlang intro
 

Erlang intro

on

  • 433 views

Presentation starts with introduction to types and Erlang's syntax. After that it demonstrates basic support for distributed programming and finally covers parallel Erlang.

Presentation starts with introduction to types and Erlang's syntax. After that it demonstrates basic support for distributed programming and finally covers parallel Erlang.

Statistics

Views

Total Views
433
Views on SlideShare
433
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

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 оказал существенное влияние на успех NyanCat’a.
  • Сегодня мы узнаем, что пришлось сделать Нян Кэту на пути к успеху и параллельно изучим основные концепции языка Erlang. Начнем с типов данных и основных конструкций языкаи закончим обзором OTP фреймворка.
  • Вот за что мне нравится Эрланг – в нем так мало встроенных типов!!! Но тут возникает – а достачно ли их?! Может каких-то типов нам не хватает?
  • Показать, как создать запись. Запись ~= tuple. Теперь у нас есть всё (ну или почти всё), для того, чтобы создать Nyan Cat’а. Конечно же реальные приложения не пишутся в шеле Эрланга.
  • Большое демо – создаем модуль nyan, функцию sing с проверкой, что тип – это atom, функцию eat, которая принимает только запись типа food (food, {content}). Case на примере реакции кота на определенную еду.MFA на примере apply, использование MFA можно встретить во многих модулях из stdlibBIFs – невозможно реализовать в Erlang, либо реализация будет неоптимальной: date(), time().Try..catch – есть, но не будем его сегодня рассматривать.А теперь более подробно поговорим о переменных... Мы уже видели, что переменные в Эрланге начинаются с большой буквы.ЭЭ, а где циклы?
  • С большой буквыПоказать ошибку, когда I = I + 1Bound & unbound
  • Пример Саши Колоницкого
  • Variable placeholder => “_”Unused variable = starts with “_” – “_Tail”Паттерн слева, выражение справа вычисляется и потом сравнивается с паттерном.Нет никакой связи с паттернами в смысле регулярных выражений.В какой-то момент Нян Кэт понял, что сидя на одном компьютере сильно популярным не станешь (да и не безопасно это. А вдруг комп сломается?)И поэтому решил узнать, как работает Distributed Erlang.

Erlang intro Erlang intro Presentation Transcript

  • Learning Erlang Ivan Yatskevich Lead Software Engineer, EPAM
  • Learn at least one new language every year. Tip 8: Invest Regularly in Your Knowledge Portfolio
  • OTP Framework Parallel Erlang Distributed ErlangSequentialErlang
  • Part I: Sequential ErlangData types, modules, functions, variables and pattern matching
  • Data types• Numbers 12, 2#10, 16#FF, 2.76• Atoms ok, false, summer, „Wednesday‟• Bit strings and binaries <<“Are you sure?”>>, <<45, 19, 4>>
  • Data types (cont’d)• Containers (Lists, Tuples) List = [1, true, “Erlang”] Tuple = {io, format, [“~p~n”]}• Functions Tripler = fun(N) -> N*3 end• Identifiers (Refs, Pids, Ports)
  • (Fake) Data types• Boolean true, false• String “ABC” = [65, 66, 67]• Record (≈tuple)
  • Building blocks• Modules• Functions • Clauses • Guards • MFA • BIFs• Control structures • Case, If • Catch
  • Variables and MatchingIndex ≠ Index + 1
  • { "data": { "translations": [ { "translatedText": "Hallo Welt" } ] }}
  • Variables and Pattern MatchingTranslation ={data, {translations, [ {translatedText, "Hallo Welt"} ] }}.{data, {translations, [ {translatedText, Text}|Tail ] }} = Translation.
  • Variables and Pattern MatchingTranslation ={data, {translations, [ {translatedText, "Hallo Welt"} ] }}.{_, {_, [{_, Text}|_]}} = Translation.
  • LANPart II: Distributed ErlangNodes, net_adm module, a lot of fun
  • Distributed Erlang• Nodes $ erl –name nyan_cat@127.0.0.1• Cookies $ erl –sname nyan_cat –setcookie secret• net_adm:ping erl> net_adm:ping(tom_cat@192.168.32.4).
  • Part III: Parallel ErlangProcesses, Pids, message passing
  • Parallel Erlang• Processes Pid = spawn(fun() -> hi end).• Sending message Pid ! {any_message, [“with”, list]}.• Receiving message receive Pattern1 -> action1; Pattern2 -> action2 after TimeInMs -> action_after_timeout end.
  • Parallel Erlang (cont’d)• self()• make_ref()• System process and linking• Named process register(name_as_atom, Pid).
  • Part IV: OTP FrameworkOverview
  • OTP Frameworkhttp://learnyousomeerlang.com/what-is-otp
  • Resources• http://www.erlang.org• http://www.tryerlang.org• http://learnyousomeerlang.com• http://www.trapexit.org/• Programming Erlang, by Joe Armstrong• Erlang Programming, by Francesco Cesarini and Simon Thompson• Erlang and OTP in Action, by Martin Logan, Eric Merritt, and Richard Carlsson• http://nyan.cat
  • Thank you!Q&A