Message Passing, Concurrency, And Parallelism with Erlang Presented By: Craig R. Kuehn Department of Computer Science and Software Engineering University.

Slides:



Advertisements
Similar presentations
OJ Reeves. Agenda  The Boring Stuff Basic syntax, expressions, funcs, records Atoms, BIFs, data types, bools, equality  The not so Boring Stuff Pattern.
Advertisements

CSCI 330: Programming Language Concepts Instructor: Pranava K. Jha Control Flow-II: Execution Order.
Thomas Arts Industrial Use of a Functional Language Thomas Arts Ericsson Computer Science Laboratory Stockholm, Sweden
Erlang Paul Ang, Alex Quintero, Jessica Lombardi, Robin Adams.
Names and Bindings.
Patterns in ML functions. Formal vs. actual parameters Here's a function definition (in C): –int add (int x, int y) { return x + y; } –x and y are the.
Principles of programming languages 4: Parameter passing, Scope rules Department of Information Science and Engineering Isao Sasano.
Hüseyin Ergin University of Alabama Software Modeling Lab Software Engineering Group Department of Computer Science College of Engineering.
Simple Introduction to Clojure with Analysis By: Shannon Birchell.
Lecture 3: Topics If-then-else Operator precedence While loops Static methods Recursion.
Registered Processes A perennial problem in client-server computing is “How do clients find the server?” Two possible answers:  Clients are told about.
C. Varela; Adapted w/permission from S. Haridi and P. Van Roy1 Declarative Computation Model Single assignment store Kernel language syntax Carlos Varela.
Erlang concurrency. Where were we? Finished talking about sequential Erlang Left with two questions  retry – not an issue; I mis-read the statement in.
ICS 201 Course Overview.
Names and Scopes CS 351. Program Binding We should be familiar with this notion. A variable is bound to a method or current block e.g in C++: namespace.
1  1998 Morgan Kaufmann Publishers Chapter 9 Multiprocessors.
Scripting Languages For Virtual Worlds. Outline Necessary Features Classes, Prototypes, and Mixins Static vs. Dynamic Typing Concurrency Versioning Distribution.
Where were we? Fundamental idea: compute new values rather than assigning repeatedly to variables Write-once variables Lists Pattern matching.
1 CS 603: Advanced Topics in Distributed Systems Spring 2002 Professor Chris Clifton.
Introducing the Erlang Language Why Erlang?  Exemplifies the “you can have code and concurrency that is free from side effects…there is no other way”
Java Review 2 – Errors, Exceptions, Debugging Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
FUNCTIONAL PROGRAMMING IN ERLANG ID1218 Lecture Christian Schulte Software and Computer Systems School of Information and.
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
Parallel and Distributed Computing in CS2013 Mehran Sahami Computer Science Department Stanford University.
Advanced Software Tools Research Seminar Fall 07 Arik Nemtsov.
The ALGOL Family Mason Vines CPSC425. Overview ALGOL 58 ALGOL 60 ALGOL 68 Success and Failure of ALGOL.
Call-by-Value vs. Call-by-Reference Call-by-value parameters are used for passing information from the calling function to the called function (input parameters).
1 Chapter 5: Names, Bindings and Scopes Lionel Williams Jr. and Victoria Yan CSci 210, Advanced Software Paradigms September 26, 2010.
Comparative Programming Languages hussein suleman uct csc304s 2003.
1 Programming Thinking and Method (0) Zhao Hai 赵海 Department of Computer Science and Engineering Shanghai Jiao Tong University
17-Sep-15 Erlang. Running Erlang Double-click on the Erlang icon, or type erl into a terminal (cmd) window You can try short pieces of code from here,
Computing Science 1P Lecture 21: Friday 20 th April Simon Gay Department of Computing Science University of Glasgow 2006/07.
CSC3315 (Spring 2009)1 CSC 3315 Programming Languages Hamid Harroud School of Science and Engineering, Akhawayn University
Keneequa Brown Chris Duzan Navaid Khalfay. Originally developed in 1986 by Joe Armstrong as a proprietary language within Ericsson Released as open source.
Multicore Computing Using Erlang Art Gittleman California State University Long Beach
Motorola Internal Use Only Evaluating Erlang for Robust Telecoms Software David King 2004 S 3 Symposium – Henry Nystrom, Phil Trinder, David King.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
Supported by ELTE IKKK, Ericsson Hungary, in cooperation with University of Kent Erlang refactoring with relational database Anikó Víg and Tamás Nagy Supervisors:
Basic Semantics Associating meaning with language entities.
Variables and ConstantstMyn1 Variables and Constants PHP stands for: ”PHP: Hypertext Preprocessor”, and it is a server-side programming language. Special.
Supported by ELTE IKKK, Ericsson Hungary, in cooperation with University of Kent Erlang refactoring with relational database Anikó Víg and Tamás Nagy Supervisors:
CSCE 824 Secure and Distributed Database Management Systems FarkasCSCE 8241.
Functional Programming With examples in F#. Pure Functional Programming Functional programming involves evaluating expressions rather than executing commands.
Practical Erlang Programming Basic Erlang. © Erlang Training and Consulting Ltd2Basic Erlang Practical Erlang Programming.
Python Functions.
Distributed Programming Concepts and Notations. Inter-process Communication Synchronous Messages Asynchronous Messages Select statement Remote procedure.
Erlang Noah Dietrich Chris Ruffalo.
CS1101 Group1 Discussion 10 Lek Hsiang Hui comp.nus.edu.sg
Programming Language Theory & Design Programming state of the art is in its infancy We require new tools (languages, editors, debuggers, test tools) to.
CS 152: Programming Language Paradigms March 12 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak.
Practical Erlang Programming OSCON Tutorial July 21 st 2009, San Jose Francesco Cesarini Erlang Training and Consulting Ltd
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Erlang Erricsson and Ellemtel Computer Science Laboratories
Department of Electronic & Electrical Engineering Statements Blocks{} Semicolons ; Variables Names keywords Scope.
1 Objective Caml (Ocaml) Aaron Bloomfield CS 415 Fall 2005.
Erlang - a complete development environment for concurrent programming RTLab. Kim Tae-Hyon.
TOPIC : SEQUENTIAL AND PARALLEL BLOCKS Module 2.3 : Behavioral modeling in verilog.
Scaling For (Almost) Free
Types Type Errors Static and Dynamic Typing Basic Types NonBasic Types
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
New trends in parallel computing
Erlang 15-Nov-18.
Threading And Parallel Programming Constructs
Basic Syntax and Semantics
Final Review In Text: Chapters 1-3, 5-16.
Final Review In Text: Chapters 1-3, 5-16.
Declarative Computation Model Single assignment store (VRH 2
Computer Science 312 Concurrent Programming I Processes and Messages 1.
Industrial Use of a Functional Language
Computer Science 312 Making choices Tail Recursion
Presentation transcript:

Message Passing, Concurrency, And Parallelism with Erlang Presented By: Craig R. Kuehn Department of Computer Science and Software Engineering University of Wisconsin-Platteville

History  1985 – Tried 20 Different Languages  1987 – First Experiments with Erlang  1991 – First Project in Erlang  1993 – BOS  1996 – OTP!  1999 – OPEN SOURCE!!!  2003 – Workshop Joins ACM SIGPLAN ICPF  2006 – SMP Capable Ellemtel CS Lab

Ready!  Most Important Rule: Programming Is Fun!!  AI class?  Functional Programming?  Concurrency-Oriented Programming?

GO!!!Set!

The Basics… Variables We Have to Start Somewhere  Start With a Capital Letter  Single Assignment – Not Like C++ or Java (I told you to forget about them)  “=“ -> Lhs = Rhs  Bound v.s. Unbound  “_” the anonymous variable  Why Single Assignment?  Scope

…The Basics Continued… Data Types  Integers  Floats  Atoms  Tuples  Records  Lists  Strings  Binaries

…The Basics Continued Still… Modules  Basic Unit  moduleName.erl  Compiled  moduleName.beam  Module  Import  Export

…The Basics Continued Still More… Functions  Clauses  Head -> Body  “Tried” In Order  Arity  fun Anonymous Function  Higher-Order Functions  List Comprehensions  BIFs

…The Basics Continued And Still More… Conditions/Controls  Not really needed  Guards (semicolon and comma delimited)  Case  If  Exceptions

Intermission From The Heavy Stuff Targets or Goals In Mind During The Design  Fault Tolerant  Continuous  Concurrent  Distributed, Heterogeneous  Highly Reliable, “Soft” Real-time  Scalable  Tail Recursive  Process-Oriented A Tidbit About Erlang A Tidbit About Erlang

The Advanced Part… Process Stuff  Process Dictionary  Pure Message Passing Language  Detriment To Your Health  Bad Horror Movies  Relax Marching Onward Marching Onward

…The Advanced Part Continued… Message Passing, Concurrency, and Parallelism Tools  Spawn()  “!” The Send Operator  Receive…end (Blocking and Non-Blocking)

…The Advanced Part Continued Still… The Intricate Parts of Receive  Timer  First Message  Not A Match  No More Messages  It Is A Match!!!  Timer Elapses

…The Advanced Part Continued Still More…  Publishing a Process Identifier  Spawning with MFA  “Hot Swapping” Message Passing, Concurrency, and Parallelism Specs

…The Advanced Part Continued And Still More…  Exit Signals  Linking  Monitors Message Passing, Concurrency, and Parallelism Errors

Gosh, Finally!  Concurrency-Oriented Programming  Erlang  UW-Platteville CS Department The Future:

So You Think You Have A Question, Do You? Well Do You?