SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Introduc)on to Erlang 
          Abd El‐Fa3ah Hussein Mahran 
Agenda
    History of Erlang
    Erlang Features
    Erlang/OTP and design patterns
    Tools applications
    Applications written in Erlang
    Erlang IDEs
    Erlang syntax
    How to get Erlang
    Demo
    Conclusion
    Q&A
History of Erlang

    Erlang is a programming
     language
    Ericsson wanted
     programming language for
     developing
     telecommunication switching
     systems.
    The language must be a very
     high level symbolic language
     in order to achieve
     productivity gains
    The language must contain
     primitives for concurrency
     and error recovery
History of Erlang
                                                               1998:
                       No language well suited                 Open Source
                        for telecom systems                    Erlang
1984:                       development
Ericsson
Computer
Science Lab                    1991:
formed                         First fast
                               implementation
                1987:
 1984-86:       Early Erlang
 Experiments Prototype                                1996:
 programming projects                                 Open Telecom Platform
 POTS with                                            (research on verification...)‫‏‬
 several languages                              1995:
                                                Several
                                                new projects
                                       1993:
                                       Distributed
                                       Erlang
Erlang is Concurrent functional
         programming language

It was designed by Ericsson to support distributed, fault-tolerant,
soft-real-time, and non-stop applications
Erlang Features
    Concurrency
    Fault tolerance
    Soft Real-Time
    Distribution
    Hot Code Loading
    External Interfaces
    Platform Independent
Erlang/OTP and design patterns

    Gen_Server Behaviour
    Gen_Fsm Behaviour
    Gen_Event Behaviour
    Supervisor Behaviour
    Releases
    Target systems
Tools applications
    Dialyzer
    Eunit
    Edoc
    Common_test
    Test_server
    Jinterface
    Erl_interface
                      Depending on
    wx
                     C++ WXwidgets
    Ssh
    Ssl
    xmerl
Applications written in Erlang
Applications written in Erlang
    Ericsson Company                                          Netkit Solutions (Network Equipment Monitoring
                                                                and Operations Support Systems)
    Bluetail/Alteon/Nortel (distributed, fault tolerant
     email system, SSL accelerator)                            Process-one (Jabber Messaging)

    Cellpoint (Location-based Mobile Services)                Schlund + Partner (Messaging and Interactive
                                                                Voice Response services)
    Corelatus (SS7 monitoring).
                                                               Quviq (Software Test Tool)
    dqdp.net (in Latvian) (Web Services).
                                                               RabbitMQ (AMQP Enterprise Messaging)
    Facebook (Facebook chat backend)
                                                               T-Mobile (previously one2one) (advanced call
    Finnish Meteorological Institute (Data acquisition         control services)
     and real-time monitoring)
                                                               Telia (a telecomms operator)
    IDT corp. (Real-time least-cost routing expert
     systems)                                                  Vail Systems (Interactive Voice Response
                                                                systems)
    Kreditor (Electronic payment systems)
                                                               Wavenet (SS7 and IVR applications)
    Mobilearts (GSM and UMTS services)
Erlang IDEs
    Eclipse (ErlIDE plugin)
    NetBeans (ErlyBird)
    Emacs
    VIM
    Any other editor (Gedit, Notepad++)
Erlang syntax
    Data types
    If statement
    Case statement
    Functions
    Modules
    Hello World program
    How Erlang works
Data types
    Number
        Integer 12, 43
        Float    34.3
    Atoms       create, remove
    Binaries <<“hello”>>
                                      Erlang don’t have
    Reference                         boolean as data
    Fun                             type, instead Erlang
    Port Identifier                 has true and false
    Pid    <0,36,0>
    Tuple {1, 2, 3}
    List    [1, 2, 3, 4]
    String “hello”
    Record -record(person, {name, age, phone}).
If statement
if
  GuardSeq1 ->
      Body1;
  ...;
  GuardSeqN ->
      BodyN
end.
Case Statement
case Expr of
  Pattern1 [when GuardSeq1]->
       Body1;
  ...;
  PatternN [when GuardSeqN] ->
       BodyN
end.
Functions
Clause 1     Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
                 Body1;
             ...;
Clause 2     Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
                 …..,
                 BodyK.

                                    Parameters
                                                   Conditions
      Function name



                            Body
Modules
-module(moduleName).

-export([func/0, func/1]).

func() ->
  foo(5),
  ….

func(A) ->
  foo(A),
  ….

foo(N) ->
  …,
  …,
  ...
Hello world Program
                                      Save the file as
                                  “hello_world.erl”, After
-module(hello_world).             compilation output will
                                  be “hello_world.beam”

-export([print/0]).
                                  $ erl
                                  Eshell V 5.7.1 (abort with ^G)
print() ->                        1> c(hello_world).
                                  {ok, hello_world}
  io:format(“Hello World…!~n”).   2> hello_world:print().
                                  Hello World…!
                                  3>
How Erlang works
    Pattern matching technique
         Var = 3.
         [Var1, Var2] = [3, 4].
         {Var3, _Var4, Var5} = {4, 5, a}.
         [H | T] = [iti, erlang, course, book].
 1 = 1.
 {ok, Var} = {ok, “Connected to DB”}.   √
 1 = 2.
 {ok, var} = {ok, “Connected to DB”}.   X
Recursion and Tail Recursion


fact(0) ->            fact(N) ->
   1;                    fact_help(N, 1).
fact(N) when N>0 ->
   N * fact(N -1).    fact_help(0, Acc) ->
                         Acc;
                      fact_help(N, Acc) when N>0 ->
                         NewAcc = N * Acc,
                         fact_help(N-1, NewAcc).
Quick Sort
quicksort([]) -> % If the list [] is empty, return an empty list (nothing to sort)
   [];
quicksort([Pivot|Rest]) ->
   quicksort([Front || Front <- Rest, Front < Pivot])
       ++ [Pivot] ++
       quicksort([Back || Back <- Rest, Back >= Pivot]).
How to get Erlang
    Erlang.org
    Download
    Documentation
    Trapexit.org
    Erlang Factory
    Erlang-Consulting
Demo
    Hot Code swapping
    Concurrency
    Fault tolerance
    Distributed application
Hot Code swapping
-module(changing_code).

-export([start/0, loop/0]).
                                               % Forces the use of
start() ->
                                                   loop/0 from
   spawn(changing_code, loop, []).
                                               the latest version of
loop() ->                                        changing_code
   receive
      switch ->
           changing_code:loop();
      hello ->
           io:format(“CAT Hackers ----1~n”),
           loop();
     Msg ->
           io:format(“~p~n”, [Msg]),
           loop(),
end.
Concurrency
portscan(Ip, From, To) when From < To ->
  io:format("Ports open for: ~p:~n", [Ip]),
  pforeach(fun(Port) -> scan(Ip,Port) end,lists:seq(From, To)).

scan(Ip, Port) ->
   case gen_tcp:connect(Ip,Port,[{active, false}, binary]) of
      {ok,P} ->
          gen_tcp:close(P),
             io:format("~p is open~n", [Port]);
          _ ->
             ok
   end.

pforeach(F, [H|T]) ->
          spawn(fun() -> F(H) end),
          pforeach(F, T);
pforeach(_ , []) ->
   ok.
Fault tolerance
init([]) ->
    AChild=
    {main_module,{main_module, start_link, []}, permanent,
    2000, worker, [main_module]},
    {ok,{{one_for_one, 1, 60}, [AChild]}}.
Distributed application
                                Timeout to wait until
                                restart application on
                                                                Nodes
                                     other node


[{kernel,
   [{distributed,
    [{dist_app, 5000, [‘node1@ricsson.com’, {‘node2@ricsson.com’, ‘node3@ricsson.com’}]}]},
    {sync_nodes_mandatory, [‘node2@ricsson.com’, ‘node3@ricsson.com’]},
    {sync_nodes_timeout, 5000} ] } ].




      Specifies how many
     milliseconds to wait for
       the other nodes to
               start
Conclusion
    Erlang is concurrent functional programming
     language.
    Its main goal is error recovery, fault tolerant,
     distributed applications, and non-stop applications.
    It released to Open source since 1998.
    Companies that are using Erlang.
    How Erlang works.
    How to get and use Erlang.
References

    Erlang.org
    Trapexit.org
    Programming Erlang, Joe Armstong
    Wikipedia.com
Q&A
Thanks

Weitere ähnliche Inhalte

Was ist angesagt?

Modules and ports in Verilog HDL
Modules and ports in Verilog HDLModules and ports in Verilog HDL
Modules and ports in Verilog HDLanand hd
 
SiLLis: Simplified Language for Listener
SiLLis: Simplified Language for ListenerSiLLis: Simplified Language for Listener
SiLLis: Simplified Language for Listenerpaolograssi
 
Platform-independent static binary code analysis using a meta-assembly language
Platform-independent static binary code analysis using a meta-assembly languagePlatform-independent static binary code analysis using a meta-assembly language
Platform-independent static binary code analysis using a meta-assembly languagezynamics GmbH
 
Verilog Lecture4 2014
Verilog Lecture4 2014Verilog Lecture4 2014
Verilog Lecture4 2014Béo Tú
 
Verilog Lecture5 hust 2014
Verilog Lecture5 hust 2014Verilog Lecture5 hust 2014
Verilog Lecture5 hust 2014Béo Tú
 
Game development
Game developmentGame development
Game developmentAsido_
 
Verilog HDL Training Course
Verilog HDL Training CourseVerilog HDL Training Course
Verilog HDL Training CoursePaul Laskowski
 
Experiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesExperiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesRicardo Castro
 
System Verilog Tutorial - VHDL
System Verilog Tutorial - VHDLSystem Verilog Tutorial - VHDL
System Verilog Tutorial - VHDLE2MATRIX
 
Erlang Workshop at Dyncon 2011
Erlang Workshop at Dyncon 2011Erlang Workshop at Dyncon 2011
Erlang Workshop at Dyncon 2011Adam Lindberg
 
Eric Lafortune - ProGuard and DexGuard for optimization and protection
Eric Lafortune - ProGuard and DexGuard for optimization and protectionEric Lafortune - ProGuard and DexGuard for optimization and protection
Eric Lafortune - ProGuard and DexGuard for optimization and protectionGuardSquare
 
Verilog presentation final
Verilog presentation finalVerilog presentation final
Verilog presentation finalAnkur Gupta
 
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streams
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streamsTech talks annual 2015 kirk pepperdine_ripping apart java 8 streams
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streamsTechTalks
 
Trace-Checking CPS Properties: Bridging the Cyber-Physical Gap
Trace-Checking CPS Properties: Bridging the Cyber-Physical GapTrace-Checking CPS Properties: Bridging the Cyber-Physical Gap
Trace-Checking CPS Properties: Bridging the Cyber-Physical GapLionel Briand
 
Verilog 語法教學
Verilog 語法教學 Verilog 語法教學
Verilog 語法教學 艾鍗科技
 

Was ist angesagt? (20)

Modules and ports in Verilog HDL
Modules and ports in Verilog HDLModules and ports in Verilog HDL
Modules and ports in Verilog HDL
 
SiLLis: Simplified Language for Listener
SiLLis: Simplified Language for ListenerSiLLis: Simplified Language for Listener
SiLLis: Simplified Language for Listener
 
Platform-independent static binary code analysis using a meta-assembly language
Platform-independent static binary code analysis using a meta-assembly languagePlatform-independent static binary code analysis using a meta-assembly language
Platform-independent static binary code analysis using a meta-assembly language
 
Crash course in verilog
Crash course in verilogCrash course in verilog
Crash course in verilog
 
Vhdl programming
Vhdl programmingVhdl programming
Vhdl programming
 
Verilog Lecture4 2014
Verilog Lecture4 2014Verilog Lecture4 2014
Verilog Lecture4 2014
 
VHDL CODES
VHDL CODES VHDL CODES
VHDL CODES
 
Verilog Lecture5 hust 2014
Verilog Lecture5 hust 2014Verilog Lecture5 hust 2014
Verilog Lecture5 hust 2014
 
Game development
Game developmentGame development
Game development
 
Verilog HDL Training Course
Verilog HDL Training CourseVerilog HDL Training Course
Verilog HDL Training Course
 
Experiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesExperiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gates
 
System Verilog Tutorial - VHDL
System Verilog Tutorial - VHDLSystem Verilog Tutorial - VHDL
System Verilog Tutorial - VHDL
 
Erlang Workshop at Dyncon 2011
Erlang Workshop at Dyncon 2011Erlang Workshop at Dyncon 2011
Erlang Workshop at Dyncon 2011
 
Eric Lafortune - ProGuard and DexGuard for optimization and protection
Eric Lafortune - ProGuard and DexGuard for optimization and protectionEric Lafortune - ProGuard and DexGuard for optimization and protection
Eric Lafortune - ProGuard and DexGuard for optimization and protection
 
Verilog presentation final
Verilog presentation finalVerilog presentation final
Verilog presentation final
 
VLSI & E-CAD Lab Manual
VLSI & E-CAD Lab ManualVLSI & E-CAD Lab Manual
VLSI & E-CAD Lab Manual
 
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streams
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streamsTech talks annual 2015 kirk pepperdine_ripping apart java 8 streams
Tech talks annual 2015 kirk pepperdine_ripping apart java 8 streams
 
ECAD lab manual
ECAD lab manualECAD lab manual
ECAD lab manual
 
Trace-Checking CPS Properties: Bridging the Cyber-Physical Gap
Trace-Checking CPS Properties: Bridging the Cyber-Physical GapTrace-Checking CPS Properties: Bridging the Cyber-Physical Gap
Trace-Checking CPS Properties: Bridging the Cyber-Physical Gap
 
Verilog 語法教學
Verilog 語法教學 Verilog 語法教學
Verilog 語法教學
 

Ähnlich wie Introduction To Erlang Final

Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...siouxhotornot
 
Keynote joearmstrong
Keynote joearmstrongKeynote joearmstrong
Keynote joearmstrongSentifi
 
Erlang
ErlangErlang
ErlangESUG
 
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On SessionIntroduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On SessionAndré Graf
 
Erlang Message Passing Concurrency, For The Win
Erlang  Message  Passing  Concurrency,  For  The  WinErlang  Message  Passing  Concurrency,  For  The  Win
Erlang Message Passing Concurrency, For The Winl xf
 
Erlang Developments: The Good, The Bad and The Ugly
Erlang Developments: The Good, The Bad and The UglyErlang Developments: The Good, The Bad and The Ugly
Erlang Developments: The Good, The Bad and The Uglyenriquepazperez
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlangMirko Bonadei
 
Erlang is not a city in Germany
Erlang is not a city in GermanyErlang is not a city in Germany
Erlang is not a city in Germanymomo-13
 
The Erlang Programming Language
The Erlang Programming LanguageThe Erlang Programming Language
The Erlang Programming LanguageDennis Byrne
 

Ähnlich wie Introduction To Erlang Final (20)

Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
 
Keynote joearmstrong
Keynote joearmstrongKeynote joearmstrong
Keynote joearmstrong
 
Erlang
ErlangErlang
Erlang
 
Erlang OTP
Erlang OTPErlang OTP
Erlang OTP
 
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On SessionIntroduction to Erlang/(Elixir) at a Webilea Hands-On Session
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
 
Erlang Message Passing Concurrency, For The Win
Erlang  Message  Passing  Concurrency,  For  The  WinErlang  Message  Passing  Concurrency,  For  The  Win
Erlang Message Passing Concurrency, For The Win
 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
 
Erlang real time
Erlang real timeErlang real time
Erlang real time
 
Erlang Developments: The Good, The Bad and The Ugly
Erlang Developments: The Good, The Bad and The UglyErlang Developments: The Good, The Bad and The Ugly
Erlang Developments: The Good, The Bad and The Ugly
 
Erlang in 10 minutes
Erlang in 10 minutesErlang in 10 minutes
Erlang in 10 minutes
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlang
 
Java
JavaJava
Java
 
Erlang
ErlangErlang
Erlang
 
Erlang os
Erlang osErlang os
Erlang os
 
Elixir
ElixirElixir
Elixir
 
Erlang
ErlangErlang
Erlang
 
Erlang is not a city in Germany
Erlang is not a city in GermanyErlang is not a city in Germany
Erlang is not a city in Germany
 
The Erlang Programming Language
The Erlang Programming LanguageThe Erlang Programming Language
The Erlang Programming Language
 
Java introduction
Java introductionJava introduction
Java introduction
 
Elixir introduction
Elixir introductionElixir introduction
Elixir introduction
 

Mehr von SinarShebl

Pluggable Authentication Module
Pluggable Authentication ModulePluggable Authentication Module
Pluggable Authentication ModuleSinarShebl
 
Java Script Utilities
Java Script UtilitiesJava Script Utilities
Java Script UtilitiesSinarShebl
 
All Bow To Open Solaris Crossbow H4ck3rz Due
All Bow To Open Solaris Crossbow H4ck3rz DueAll Bow To Open Solaris Crossbow H4ck3rz Due
All Bow To Open Solaris Crossbow H4ck3rz DueSinarShebl
 
Fedora 11 Features and Installation
Fedora 11 Features and InstallationFedora 11 Features and Installation
Fedora 11 Features and InstallationSinarShebl
 

Mehr von SinarShebl (8)

Infosec
InfosecInfosec
Infosec
 
Cloud
CloudCloud
Cloud
 
Pluggable Authentication Module
Pluggable Authentication ModulePluggable Authentication Module
Pluggable Authentication Module
 
Scmp P & F
Scmp P & FScmp P & F
Scmp P & F
 
Java Script Utilities
Java Script UtilitiesJava Script Utilities
Java Script Utilities
 
All Bow To Open Solaris Crossbow H4ck3rz Due
All Bow To Open Solaris Crossbow H4ck3rz DueAll Bow To Open Solaris Crossbow H4ck3rz Due
All Bow To Open Solaris Crossbow H4ck3rz Due
 
Fedora 11 Features and Installation
Fedora 11 Features and InstallationFedora 11 Features and Installation
Fedora 11 Features and Installation
 
Google Docs
Google DocsGoogle Docs
Google Docs
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Kürzlich hochgeladen (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Introduction To Erlang Final

  • 2. Agenda   History of Erlang   Erlang Features   Erlang/OTP and design patterns   Tools applications   Applications written in Erlang   Erlang IDEs   Erlang syntax   How to get Erlang   Demo   Conclusion   Q&A
  • 3. History of Erlang   Erlang is a programming language   Ericsson wanted programming language for developing telecommunication switching systems.   The language must be a very high level symbolic language in order to achieve productivity gains   The language must contain primitives for concurrency and error recovery
  • 4. History of Erlang 1998: No language well suited Open Source for telecom systems Erlang 1984: development Ericsson Computer Science Lab 1991: formed First fast implementation 1987: 1984-86: Early Erlang Experiments Prototype 1996: programming projects Open Telecom Platform POTS with (research on verification...)‫‏‬ several languages 1995: Several new projects 1993: Distributed Erlang
  • 5. Erlang is Concurrent functional programming language It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, and non-stop applications
  • 6. Erlang Features   Concurrency   Fault tolerance   Soft Real-Time   Distribution   Hot Code Loading   External Interfaces   Platform Independent
  • 7. Erlang/OTP and design patterns   Gen_Server Behaviour   Gen_Fsm Behaviour   Gen_Event Behaviour   Supervisor Behaviour   Releases   Target systems
  • 8. Tools applications   Dialyzer   Eunit   Edoc   Common_test   Test_server   Jinterface   Erl_interface Depending on   wx C++ WXwidgets   Ssh   Ssl   xmerl
  • 10. Applications written in Erlang   Ericsson Company   Netkit Solutions (Network Equipment Monitoring and Operations Support Systems)   Bluetail/Alteon/Nortel (distributed, fault tolerant email system, SSL accelerator)   Process-one (Jabber Messaging)   Cellpoint (Location-based Mobile Services)   Schlund + Partner (Messaging and Interactive Voice Response services)   Corelatus (SS7 monitoring).   Quviq (Software Test Tool)   dqdp.net (in Latvian) (Web Services).   RabbitMQ (AMQP Enterprise Messaging)   Facebook (Facebook chat backend)   T-Mobile (previously one2one) (advanced call   Finnish Meteorological Institute (Data acquisition control services) and real-time monitoring)   Telia (a telecomms operator)   IDT corp. (Real-time least-cost routing expert systems)   Vail Systems (Interactive Voice Response systems)   Kreditor (Electronic payment systems)   Wavenet (SS7 and IVR applications)   Mobilearts (GSM and UMTS services)
  • 11. Erlang IDEs   Eclipse (ErlIDE plugin)   NetBeans (ErlyBird)   Emacs   VIM   Any other editor (Gedit, Notepad++)
  • 12. Erlang syntax   Data types   If statement   Case statement   Functions   Modules   Hello World program   How Erlang works
  • 13. Data types   Number   Integer 12, 43   Float 34.3   Atoms create, remove   Binaries <<“hello”>> Erlang don’t have   Reference boolean as data   Fun type, instead Erlang   Port Identifier has true and false   Pid <0,36,0>   Tuple {1, 2, 3}   List [1, 2, 3, 4]   String “hello”   Record -record(person, {name, age, phone}).
  • 14. If statement if GuardSeq1 -> Body1; ...; GuardSeqN -> BodyN end.
  • 15. Case Statement case Expr of Pattern1 [when GuardSeq1]-> Body1; ...; PatternN [when GuardSeqN] -> BodyN end.
  • 16. Functions Clause 1 Name(Pattern11,...,Pattern1N) [when GuardSeq1] -> Body1; ...; Clause 2 Name(PatternK1,...,PatternKN) [when GuardSeqK] -> ….., BodyK. Parameters Conditions Function name Body
  • 17. Modules -module(moduleName). -export([func/0, func/1]). func() -> foo(5), …. func(A) -> foo(A), …. foo(N) -> …, …, ...
  • 18. Hello world Program Save the file as “hello_world.erl”, After -module(hello_world). compilation output will be “hello_world.beam” -export([print/0]). $ erl Eshell V 5.7.1 (abort with ^G) print() -> 1> c(hello_world). {ok, hello_world} io:format(“Hello World…!~n”). 2> hello_world:print(). Hello World…! 3>
  • 19. How Erlang works   Pattern matching technique   Var = 3.   [Var1, Var2] = [3, 4].   {Var3, _Var4, Var5} = {4, 5, a}.   [H | T] = [iti, erlang, course, book]. 1 = 1. {ok, Var} = {ok, “Connected to DB”}. √ 1 = 2. {ok, var} = {ok, “Connected to DB”}. X
  • 20. Recursion and Tail Recursion fact(0) -> fact(N) -> 1; fact_help(N, 1). fact(N) when N>0 -> N * fact(N -1). fact_help(0, Acc) -> Acc; fact_help(N, Acc) when N>0 -> NewAcc = N * Acc, fact_help(N-1, NewAcc).
  • 21. Quick Sort quicksort([]) -> % If the list [] is empty, return an empty list (nothing to sort) []; quicksort([Pivot|Rest]) -> quicksort([Front || Front <- Rest, Front < Pivot]) ++ [Pivot] ++ quicksort([Back || Back <- Rest, Back >= Pivot]).
  • 22. How to get Erlang   Erlang.org   Download   Documentation   Trapexit.org   Erlang Factory   Erlang-Consulting
  • 23. Demo   Hot Code swapping   Concurrency   Fault tolerance   Distributed application
  • 24. Hot Code swapping -module(changing_code). -export([start/0, loop/0]). % Forces the use of start() -> loop/0 from spawn(changing_code, loop, []). the latest version of loop() -> changing_code receive switch -> changing_code:loop(); hello -> io:format(“CAT Hackers ----1~n”), loop(); Msg -> io:format(“~p~n”, [Msg]), loop(), end.
  • 25. Concurrency portscan(Ip, From, To) when From < To -> io:format("Ports open for: ~p:~n", [Ip]), pforeach(fun(Port) -> scan(Ip,Port) end,lists:seq(From, To)). scan(Ip, Port) -> case gen_tcp:connect(Ip,Port,[{active, false}, binary]) of {ok,P} -> gen_tcp:close(P), io:format("~p is open~n", [Port]); _ -> ok end. pforeach(F, [H|T]) -> spawn(fun() -> F(H) end), pforeach(F, T); pforeach(_ , []) -> ok.
  • 26. Fault tolerance init([]) -> AChild= {main_module,{main_module, start_link, []}, permanent, 2000, worker, [main_module]}, {ok,{{one_for_one, 1, 60}, [AChild]}}.
  • 27. Distributed application Timeout to wait until restart application on Nodes other node [{kernel, [{distributed, [{dist_app, 5000, [‘node1@ricsson.com’, {‘node2@ricsson.com’, ‘node3@ricsson.com’}]}]}, {sync_nodes_mandatory, [‘node2@ricsson.com’, ‘node3@ricsson.com’]}, {sync_nodes_timeout, 5000} ] } ]. Specifies how many milliseconds to wait for the other nodes to start
  • 28. Conclusion   Erlang is concurrent functional programming language.   Its main goal is error recovery, fault tolerant, distributed applications, and non-stop applications.   It released to Open source since 1998.   Companies that are using Erlang.   How Erlang works.   How to get and use Erlang.
  • 29. References   Erlang.org   Trapexit.org   Programming Erlang, Joe Armstong   Wikipedia.com
  • 30. Q&A