Download - Erlang crash course CiA Oslo 2012
![Page 1: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/1.jpg)
Crash course in Erlang Erlang in 15 minutes
Baksia CiA2012 Erlang
Page 1
, 09.02.12
![Page 2: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/2.jpg)
• The world is concurrent • Things in the world don't share data • Things communicate with messages • Things fail
- Joe Armstrong
Baksia CiA2012 Erlang
Page 2
, 09.02.12
" Erlang
![Page 3: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/3.jpg)
• Created and maintained by Ericsson (now open source) • Functional, single assignment, strict evaluation, dynamic
typing • Actor model, concurrent oriented, fault tolerant, soft-real-
time • Light weight processes that communicate using message
passing (an Erlang process is more light weight than a Java thread)
• Erlang started life as a modified prolog • Erlang shell, escript and compiled .beam bytecode
Baksia CiA2012 Erlang
Page 3
, 09.02.12
" What is Erlang
![Page 4: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/4.jpg)
• An atom is a global constant starting with lower case • A tuple is an ordered set of elements • Your Java or C# class would be a tuple with an atom
identifier
Baksia CiA2012 Erlang
Page 4
, 09.02.12
" Atoms and tuples
![Page 5: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/5.jpg)
• Erlang is designed for massive concurrency. Erlang processes are light-weight (grow and shrink dynamically) with small memory footprint, fast to create and terminate and the scheduling overhead is low.
• A process is created by calling spawn • Spawn returns a process Id PID in which you can send
messages to with the bang ! sign
Baksia CiA2012 Erlang
Page 5
, 09.02.12
" Erlang processes
![Page 6: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/6.jpg)
Baksia CiA2012 Erlang
Page 6
, 09.02.12
" The *Real* Erlang "Hello, World!"
h"p://egarson.blogspot.com/2008/03/real-‐erlang-‐hello-‐world.html
![Page 7: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/7.jpg)
Baksia CiA2012 Erlang
Page 7
, 09.02.12
" Pattern matching
![Page 8: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/8.jpg)
Baksia CiA2012 Erlang
Page 8
, 09.02.12
" Variables and pattern matching
![Page 9: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/9.jpg)
Baksia CiA2012 Erlang
Page 9
, 09.02.12
" Actors and pattern matching
![Page 10: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/10.jpg)
Baksia CiA2012 Erlang
Page 10
, 09.02.12
" Loops
![Page 11: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/11.jpg)
Baksia CiA2012 Erlang
Page 11
, 09.02.12
" No while or for loops ?
![Page 12: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/12.jpg)
Baksia CiA2012 Erlang
Page 12
, 09.02.12
" Tail recursion
![Page 13: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/13.jpg)
Baksia CiA2012 Erlang
Page 13
, 09.02.12
" Tail optimized recursion
tail recursion as seen here is not making the memory grow because when the virtual machine sees a funcAon calling itself in a tail posiAon (the last expression to be evaluated in a funcAon), it eliminates the current stack frame.
![Page 14: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/14.jpg)
Baksia CiA2012 Erlang
Page 14
, 09.02.12
" Changes
![Page 15: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/15.jpg)
• BIFs are functions that are part of the Erlang language • BIFs usually do tasks that are impossible to do in Erlang
• list_to_tuple([22,cat,”text”]). • spawn(fun() -> my_fun(“Hello”) end).
Baksia CiA2012 Erlang
Page 15
, 09.02.12
" BIF Built In Functions
![Page 16: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/16.jpg)
• Great site • http://learnyousomeerlang.com/
Baksia CiA2012 Erlang
Page 16
, 09.02.12
" Learn you some Erlang
![Page 17: Erlang crash course CiA Oslo 2012](https://reader034.vdocuments.net/reader034/viewer/2022042521/54923196b4795927058b570e/html5/thumbnails/17.jpg)
Baksia CiA2012 Erlang
Page 17
, 09.02.12
CiA 2012 -‐ Bridging the gaps 8 februar 17:30 – 20:30