Erlang. Types, Abstract Form & Core. Salvador Tamarit Muñoz. Universitat Politècnica de València

Size: px
Start display at page:

Download "Erlang. Types, Abstract Form & Core. Salvador Tamarit Muñoz. Universitat Politècnica de València"

Transcription

1 Erlang Types, Abstract Form & Core Salvador Tamarit Muñoz Universitat Politècnica de València

2 Contents 1 Introduction Motivation 2 Concurrent Erlang 3 Further reading

3 Introduction Introduction Erlang is a general-purpose concurrent, garbage-collected programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. It supports hot swapping, so that code can be changed without stopping a system. The first version was developed by Joe Armstrong in It was originally a proprietary language within Ericsson, but was released as open source in Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 3 / 41

4 Motivation Introduction Motivation Companies and projects using Erlang: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 4 / 41

5 Numbers: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 5 / 41

6 Variables & Pattern-Matching: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 6 / 41

7 Atoms: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 7 / 41

8 Boolean Algebra & Comparation Operators: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 8 / 41

9 Boolean Algebra & Comparation Operators: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 9 / 41

10 Tuples: >f(). %clear all variable names Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 10 / 41

11 Lists: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 11 / 41

12 Lists: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 12 / 41

13 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

14 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

15 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

16 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

17 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

18 List comprehensions: {2 n n L} where L = {1, 2, 3, 4} {x x L x mod 2 = 0} where L = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Prices of all the items costing between $3 and $10 with taxes (say 7%) counted in afterwards. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 13 / 41

19 List comprehensions: {x + y x L x y L y } where L x = {1, 2} and L y = {2, 3} Get all the places where it is foggy Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 14 / 41

20 List comprehensions: {x + y x L x y L y } where L x = {1, 2} and L y = {2, 3} Get all the places where it is foggy Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 14 / 41

21 List comprehensions: {x + y x L x y L y } where L x = {1, 2} and L y = {2, 3} Get all the places where it is foggy Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 14 / 41

22 List comprehensions: {x + y x L x y L y } where L x = {1, 2} and L y = {2, 3} Get all the places where it is foggy Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 14 / 41

23 Functions: Suppose you want to write this function in Erlang: It would look like this: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 15 / 41

24 Functions: Suppose you want to write this function in Erlang: It would look like this: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 15 / 41

25 Functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 16 / 41

26 Functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 16 / 41

27 Guards: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 17 / 41

28 Guards: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 17 / 41

29 Guards: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 17 / 41

30 case-of expressions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 18 / 41

31 case-of expressions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 18 / 41

32 if expressions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 19 / 41

33 if expressions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 20 / 41

34 Modules: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 21 / 41

35 Modules: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 21 / 41

36 Modules: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 22 / 41

37 Higher order functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 23 / 41

38 Higher order functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 23 / 41

39 Higher order functions: Module lists includes common examples of this abstractions like lists:map/2, lists:filter/2, lists:foldl/3 or lists:foldr/3. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 24 / 41

40 Higher order functions: Module lists includes common examples of this abstractions like lists:map/2, lists:filter/2, lists:foldl/3 or lists:foldr/3. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 24 / 41

41 Higher order functions: Module lists includes common examples of this abstractions like lists:map/2, lists:filter/2, lists:foldl/3 or lists:foldr/3. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 24 / 41

42 Anonymous functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 25 / 41

43 Anonymous functions: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 26 / 41

44 Records: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 27 / 41

45 Records: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 27 / 41

46 Records: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 28 / 41

47 Records: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 28 / 41

48 Records: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 29 / 41

49 Other data structures: Key-Value Stores Property lists (proplists), dictionaries (dict), ordered dictionaries (orddict) and general balanced trees (gb trees). Arrays Module array. Sets Classification according its internal representation: Not defined (sets), ordered lists (ordsets) or general balanced trees (gb sets). Additionally, it is provided a module to manipulate set of sets (sofs). Directed Graphs Two modules: digraph and digraph utils. Queues A double-ended FIFO queue (queue). ETS Erlang built-in Term Storage. Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 30 / 41

50 try-catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 31 / 41

51 try-catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 31 / 41

52 try-catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 32 / 41

53 try-catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 32 / 41

54 try-catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 33 / 41

55 catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 34 / 41

56 catch operator: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 34 / 41

57 Concurrent Erlang Concurrent Erlang Function spawn/1: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 35 / 41

58 Concurrent Erlang Concurrent Erlang The message passing operator (!): Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 36 / 41

59 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 37 / 41

60 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 37 / 41

61 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 38 / 41

62 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 38 / 41

63 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 39 / 41

64 Concurrent Erlang Concurrent Erlang The receive statement: Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 39 / 41

65 Further reading Further reading Salvador Tamarit Muñoz (UPV) Erlang - Abstract Form, Core & Types U. Politècnica de València 40 / 41

66 Thanks for listening!

An Introduction to Erlang

An Introduction to Erlang An Introduction to Erlang Alejandro Gómez Londoño Universidad EAFIT 8th March, 2013 What s Erlang? Erlang is a concurrent functional programming language, designed for writing concurrent programs that

More information

A Collection of Website Benchmarks Labelled for Template Detection and Content Extraction

A Collection of Website Benchmarks Labelled for Template Detection and Content Extraction A Collection of Website Benchmarks Labelled for Template Detection and Content Extraction Julián Alarte, David Insa, Josep Silva, Salvador Tamarit MiST Research Group, Universitat Politècnica de València

More information

Message Passing. Advanced Operating Systems Tutorial 7

Message Passing. Advanced Operating Systems Tutorial 7 Message Passing Advanced Operating Systems Tutorial 7 Tutorial Outline Review of Lectured Material Discussion: Erlang and message passing 2 Review of Lectured Material Message passing systems Limitations

More information

Introduction to Erlang. Franck Petit / Sebastien Tixeuil

Introduction to Erlang. Franck Petit / Sebastien Tixeuil Introduction to Erlang Franck Petit / Sebastien Tixeuil Firstname.Lastname@lip6.fr Hello World % starts a comment. ends a declaration Every function must be in a module one module per source file source

More information

Metaprogramming and symbolic execution for detecting runtime errors in Erlang programs

Metaprogramming and symbolic execution for detecting runtime errors in Erlang programs Metaprogramming and symbolic execution for detecting runtime errors in Erlang programs Emanuele De Angelis 1, Fabio Fioravanti 1, Adrián Palacios 2, Alberto Pettorossi 3 and Maurizio Proietti 4 1 University

More information

Detecting and Visualising Process Relationships in Erlang

Detecting and Visualising Process Relationships in Erlang Procedia Computer Science Volume 29, 2014, Pages 1525 1534 ICCS 2014. 14th International Conference on Computational Science Melinda Tóth and István Bozó Eötvös Loránd University, Budapest, Hungary {tothmelinda,

More information

Hashes, Hashmaps, frames, structs,... Erlang User Conference Stockholm 2011

Hashes, Hashmaps, frames, structs,... Erlang User Conference Stockholm 2011 Hashes, Hashmaps, frames, de title 48 pt structs,... Erlang User Conference Stockholm 2011 ubtitle 30 pt Björn-Egil Dahlberg, Kenneth Lundin Background Erlang/OTP makes the programmer productive But! there

More information

Erlang - functional programming in a concurrent world. Johan Montelius KTH

Erlang - functional programming in a concurrent world. Johan Montelius KTH Erlang - functional programming in a concurrent world Johan Montelius KTH 1 Erlang Concurrent Oriented Programming processes have state communicate using message passing access and location transparent

More information

Programming Paradigms

Programming Paradigms PP 2017/18 Unit 15 Concurrent Programming with Erlang 1/32 Programming Paradigms Unit 15 Concurrent Programming with Erlang J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE PP

More information

An Introduction to Erlang

An Introduction to Erlang Erlang Solutions Ltd An Introduction to Erlang From behind the trenches GOTO Copenhagen May 13 th, 2011 Francesco Cesarini Founder, Technical Director @FrancescoC francesco@erlang-solutions.com So Here

More information

COSC441. Lecture 8 Introduction to Erlang

COSC441. Lecture 8 Introduction to Erlang COSC441 Lecture 8 Introduction to Erlang Approach The reference book is Learn You Some Erlang for Great Good! by Fred Hébert. http://learnyousomeerlang.com lets you read it free on-line. What I am going

More information

Starting the System & Basic Erlang Exercises

Starting the System & Basic Erlang Exercises Starting the System & Basic Erlang Exercises These exercises will help you get accustomed with the Erlang development and run time environments. Once you have set up the Erlang mode for emacs, you will

More information

SCALARIS. Irina Calciu Alex Gillmor

SCALARIS. Irina Calciu Alex Gillmor SCALARIS Irina Calciu Alex Gillmor RoadMap Motivation Overview Architecture Features Implementation Benchmarks API Users Demo Conclusion Motivation (NoSQL) "One size doesn't fit all" Stonebraker Reinefeld

More information

Erlang 101. Google Doc

Erlang 101. Google Doc Erlang 101 Google Doc Erlang? with buzzwords Erlang is a functional concurrency-oriented language with extremely low-weight userspace "processes", share-nothing messagepassing semantics, built-in distribution,

More information

6.852: Distributed Algorithms Fall, Class 21

6.852: Distributed Algorithms Fall, Class 21 6.852: Distributed Algorithms Fall, 2009 Class 21 Today s plan Wait-free synchronization. The wait-free consensus hierarchy Universality of consensus Reading: [Herlihy, Wait-free synchronization] (Another

More information

Antonella Di Stefano, Corrado Santoro. (presenting)

Antonella Di Stefano, Corrado Santoro. (presenting) Antonella Di Stefano, Corrado Santoro (presenting) Motivations Erlang Language exat: Tool & Case-Studies Conclusions Agent Programming Two Main Aspects Agent Behaviour FSM-Based (State, Event) (State,

More information

Static rules of variable scoping in Erlang

Static rules of variable scoping in Erlang Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 137 145. Static rules of variable scoping in Erlang László Lövei, Zoltán Horváth,

More information

Erlang functional programming in a concurrent world

Erlang functional programming in a concurrent world KTH ROYAL INSTITUTE OF TECHNOLOGY Erlang functional programming in a concurrent world Johan Montelius and Vladimir Vlassov Erlang Concurrent Oriented Programming processes have state communicate using

More information

Erlang functional programming in a concurrent world Johan Montelius and Vladimir Vlassov

Erlang functional programming in a concurrent world Johan Montelius and Vladimir Vlassov KTH ROYAL INSTITUTE OF TECHNOLOGY Erlang functional programming in a concurrent world Johan Montelius and Vladimir Vlassov Erlang Concurrent Oriented Programming processes have state communicate using

More information

The Actor Model applied to the Raspberry Pi and the Embedded Domain. The Erlang Embedded Project. Omer

The Actor Model applied to the Raspberry Pi and the Embedded Domain. The Erlang Embedded Project. Omer The Actor Model applied to the Raspberry Pi and the Embedded Domain. The Erlang Embedded Project Omer Kilic @OmerK omer@erlang-solutions.com Outline Current state of Embedded Systems Overview of Erlang

More information

Introduction to Logic Programming, April 3, 2017

Introduction to Logic Programming, April 3, 2017 Introduction to Logic Programming, 16-17 April 3, 2017 Bibliography Leon Sterling and Ehud Shapiro, The Art of Prolog, MIT Press. Ivan Bratko, Prolog Programming for Artificial Intelligence, Addison-Wesley.

More information

An Introduction to Erlang. Richard Carlsson

An Introduction to Erlang. Richard Carlsson An Introduction to Erlang Richard Carlsson Erlang Buzzwords Functional (strict) Single-assignment Dynamically typed Concurrent Distributed Message passing Soft real-time Fault tolerant No sharing Automatic

More information

Debugging meets testing in Erlang

Debugging meets testing in Erlang Debugging meets testing in Erlang Salvador Tamarit, Adrián Riesco, Enrique Martín-Martín, Rafael Caballero (U. Complutense & U. Politécnica, Madrid, Spain) TAP 2016 5-7 July 2016, Vienna, Austria Outline

More information

Scenes From the Language Struggle in Toronto, Ontario. Mike Nolta

Scenes From the Language Struggle in Toronto, Ontario. Mike Nolta Scenes From the Language Struggle in Toronto, Ontario Mike Nolta Ch-Ch-Changes OpenMP & MPI are fine for now, but we need language support for parallelism. Corbato s Law: The number of lines of code a

More information

Scaling Up from 1000 to 10 Nodes

Scaling Up from 1000 to 10 Nodes Scaling Up from 1000 to 10 Nodes Anton Lavrik Alert Logic, Inc. 1 Alert Logic vs Twitter: daily numbers (2012) Alert Logic Twitter Events received 11.5B 0.5B Volume received 5TB 70GB Logs produced? 100TB

More information

Erlang. Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open. Check the source code of generic behaviours

Erlang. Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open. Check the source code of generic behaviours Lecture 9 Erlang Erlang Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open Check the source code of generic behaviours 2 Functional Haskell call-by-need (lazy)

More information

ERLANG BITS AND PIECES

ERLANG BITS AND PIECES ERLANG BITS AND PIECES Curt Clifton Rose-Hulman Institute of Technology Update ErlangInClass, open bap.erl GUARDS Guards are boolean-valued Erlang expressions, used in Function definitions: max(x,y) when

More information

CPS506 - Comparative Programming Languages Elixir

CPS506 - Comparative Programming Languages Elixir CPS506 - Comparative Programming Languages Elixir Dr. Dave Mason Department of Computer Science Ryerson University c 2017 Dave Mason History Joe Armstrong worked at Ericson Erlang originally for lab development

More information

1. Introduction: Key Features of Erlang

1. Introduction: Key Features of Erlang Годишник на секция Информатика Съюз на учените в България Том 6, 2013, 103 110 Annual of Informatics Section Union of Scientists in Bulgaria Volume 6, 2013, 103 110 KEY FEATURES AND SOME APPLICATION AREAS

More information

DISTRIBUTED SYSTEMS [COMP9243] Lecture 1.5: Erlang INTRODUCTION TO ERLANG BASICS: SEQUENTIAL PROGRAMMING 2. Slide 1

DISTRIBUTED SYSTEMS [COMP9243] Lecture 1.5: Erlang INTRODUCTION TO ERLANG BASICS: SEQUENTIAL PROGRAMMING 2. Slide 1 DISTRIBUTED SYSTEMS [COMP9243] THE ERLANG ENVIRONMENT Slide 1 Lecture 1.5: Erlang ➀ Introduction ➁ Basics: Sequential programming ➂ Concurrent programming Slide 3 unix% erl 1> 1 + 2. 3 2> c(demo). {ok,demo}

More information

JAVA PROGRAMMING. Unit-3 :Creating Gui Using The Abstract Windowing Toolkit:

JAVA PROGRAMMING. Unit-3 :Creating Gui Using The Abstract Windowing Toolkit: JAVA PROGRAMMING UNIT-1: Introduction To Java, Getting Started With Java, Applets And Application, Creating A Java Application, Creating A Java Applets, Object Oriented Programming In Java, Object And

More information

A Distributed and Robust SDN Control Plane for Transactional Network Updates

A Distributed and Robust SDN Control Plane for Transactional Network Updates A Distributed and Robust SDN Control Plane for Transactional Network Updates Marco Canini (UCL) with Petr Kuznetsov (Télécom ParisTech), Dan Levin (TU Berlin), Stefan Schmid (TU Berlin & T-Labs) 1 Network

More information

Logic Programming, 16-17

Logic Programming, 16-17 Logic Programming, 16-17 Inês Dutra DCC-FCUP ines@dcc.fc.up.pt (room: 1.31) September 21, 2016 Contents ˆ Introduction to logic languages. ˆ Differences between logic languages and other languages. ˆ Introduction

More information

An Introduction to Erlang

An Introduction to Erlang Erlang Solutions Ltd An Introduction to Erlang From behind the trenches GOTO Amsterdam Amsterdam, May 25 th 2012 Francesco Cesarini Founder, Technical Director @FrancescoC francesco@erlang-solutions.com

More information

Time and Space. Indirect communication. Time and space uncoupling. indirect communication

Time and Space. Indirect communication. Time and space uncoupling. indirect communication Time and Space Indirect communication Johan Montelius In direct communication sender and receivers exist in the same time and know of each other. KTH In indirect communication we relax these requirements.

More information

LFE - a lisp on the Erlang VM

LFE - a lisp on the Erlang VM Robert Virding Principle Language Expert at Erlang Solutions Ltd. LFE - a lisp on the Erlang VM What LFE isn t It isn t an implementation of Scheme It isn t an implementation of Common Lisp It isn t an

More information

Where shall I parallelize?

Where shall I parallelize? Where shall I parallelize? Judit Dániel Tamás Melinda István Viktória Zoltán Kőszegi Horpácsi Kozsik Tóth Bozó Fördős Horváth Eötvös Loránd University and ELTE-Soft Kft. Budapest, Hungary Erlang User Conference

More information

Scripting with Luerl

Scripting with Luerl Scripting with Luerl Luerl Luerl is an implementation of standard Lua written in Erlang/OTP. Lua is a powerful, efficient, lightweight, embeddable scripting language common in games, machine learning,

More information

Message-passing concurrency in Erlang

Message-passing concurrency in Erlang Message-passing concurrency in Erlang Lecture 8 of TDA383/DIT390 (Concurrent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2016/2017 Today s menu Actors and

More information

Message Passing Part I

Message Passing Part I Message Passing Part I Lecture 7 CS 390 1/29/08 Focus Given a collection of threads, how should they communicate information among one another? Using message-passing, they communicate through messages,

More information

Reminder from last time

Reminder from last time Concurrent systems Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability DrRobert N. M. Watson 1 Reminder from last time Liveness properties Deadlock (requirements;

More information

THEATR An actor based language

THEATR An actor based language Group members: Beatrix Carroll (bac2108) Suraj Keshri (skk2142) Michael Lin (mbl2109) Linda Ortega Cordoves (lo2258) THEATR An actor based language Goal Create an actor-based language with fault-tolerance

More information

Indirect Communication

Indirect Communication Indirect Communication Vladimir Vlassov and Johan Montelius KTH ROYAL INSTITUTE OF TECHNOLOGY Time and Space In direct communication sender and receivers exist in the same time and know of each other.

More information

Important Lessons. A Distributed Algorithm (2) Today's Lecture - Replication

Important Lessons. A Distributed Algorithm (2) Today's Lecture - Replication Important Lessons Lamport & vector clocks both give a logical timestamps Total ordering vs. causal ordering Other issues in coordinating node activities Exclusive access to resources/data Choosing a single

More information

Programming Distributed Systems

Programming Distributed Systems Peter Zeller, Annette Bieniusa Programming Distributed Systems Summer Term 2018 1/ 37 Programming Distributed Systems Introduction to Erlang Peter Zeller, Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern

More information

Story so far. Parallel Data Structures. Parallel data structure. Working smoothly with Galois iterators

Story so far. Parallel Data Structures. Parallel data structure. Working smoothly with Galois iterators Story so far Parallel Data Structures Wirth s motto Algorithm + Data structure = Program So far, we have studied parallelism in regular and irregular algorithms scheduling techniques for exploiting parallelism

More information

M.Sc. (Computer Science) I Year Assignments for May Paper I DATA STRUCTURES Assignment I

M.Sc. (Computer Science) I Year Assignments for May Paper I DATA STRUCTURES Assignment I Paper I DATA STRUCTURES (DMCS 01) 1. Explain in detail about the overview of Data structures. 2. Explain circular linked list and double-linked list. 3. Explain CPU scheduling in Multiprogramming Environment.

More information

Data Science with Python Course Catalog

Data Science with Python Course Catalog Enhance Your Contribution to the Business, Earn Industry-recognized Accreditations, and Develop Skills that Help You Advance in Your Career March 2018 www.iotintercon.com Table of Contents Syllabus Overview

More information

Main Points. File systems. Storage hardware characteristics. File system usage patterns. Useful abstractions on top of physical devices

Main Points. File systems. Storage hardware characteristics. File system usage patterns. Useful abstractions on top of physical devices Storage Systems Main Points File systems Useful abstractions on top of physical devices Storage hardware characteristics Disks and flash memory File system usage patterns File Systems Abstraction on top

More information

MCSA Universal Windows Platform. A Success Guide to Prepare- Programming in C# edusum.com

MCSA Universal Windows Platform. A Success Guide to Prepare- Programming in C# edusum.com 70-483 MCSA Universal Windows Platform A Success Guide to Prepare- Programming in C# edusum.com Table of Contents Introduction to 70-483 Exam on Programming in C#... 2 Microsoft 70-483 Certification Details:...

More information

Declarative Debugging of Concurrent Erlang Programs

Declarative Debugging of Concurrent Erlang Programs Dpto. Sistemas Informáticos y Computación, UCM. Technical Report 03/16 (Updated July 22, 2016) Declarative Debugging of Concurrent Erlang Programs (Extended version) Rafael Caballero Enrique Martin-Martin

More information

Erlang: An Overview. Part 2 Concurrency and Distribution. Thanks to Richard Carlsson for most of the slides in this part

Erlang: An Overview. Part 2 Concurrency and Distribution. Thanks to Richard Carlsson for most of the slides in this part Erlang: An Overview Part 2 Concurrency and Distribution Thanks to Richard Carlsson for most of the slides in this part Processes P1 fib(0) -> 1; fib(1) -> 1; fib(n) when N > 0 -> fib(n-1) + fib(n-2). Whenever

More information

Erlang. Joe Armstrong.

Erlang. Joe Armstrong. Erlang Joe Armstrong joe.armstrong@ericsson.com 1 Who is Joe? Inventor of Erlang, UBF, Open Floppy Grid Chief designer of OTP Founder of the company Bluetail Currently Software Architect Ericsson Current

More information

Intermediate representations of functional programming languages for software quality control

Intermediate representations of functional programming languages for software quality control Intermediate representations of functional programming languages for software quality control Melinda Tóth, Gordana Rakić Eötvös Loránd University Faculty of Informatics University of Novi Sad Chair of

More information

BUILDING A SCALABLE MOBILE GAME BACKEND IN ELIXIR. Petri Kero CTO / Ministry of Games

BUILDING A SCALABLE MOBILE GAME BACKEND IN ELIXIR. Petri Kero CTO / Ministry of Games BUILDING A SCALABLE MOBILE GAME BACKEND IN ELIXIR Petri Kero CTO / Ministry of Games MOBILE GAME BACKEND CHALLENGES Lots of concurrent users Complex interactions between players Persistent world with frequent

More information

Whatever can go wrong will go wrong. attributed to Edward A. Murphy. Murphy was an optimist. authors of lock-free programs 3.

Whatever can go wrong will go wrong. attributed to Edward A. Murphy. Murphy was an optimist. authors of lock-free programs 3. Whatever can go wrong will go wrong. attributed to Edward A. Murphy Murphy was an optimist. authors of lock-free programs 3. LOCK FREE KERNEL 309 Literature Maurice Herlihy and Nir Shavit. The Art of Multiprocessor

More information

Introduction to Data Management CSE 344

Introduction to Data Management CSE 344 Introduction to Data Management CSE 344 Lecture 22: More Transaction Implementations 1 Review: Schedules, schedules, schedules The DBMS scheduler determines the order of operations from txns are executed

More information

Functional Programming In Real Life

Functional Programming In Real Life Functional Programming In Real Life Dr. Erik Stenman CTO Kreditor Europe AB Creative Payment Solutions Introduction I will talk about KREDITOR, a company that bet it's future on Erlang, a functional programming

More information

MapReduce in Erlang. Tom Van Cutsem

MapReduce in Erlang. Tom Van Cutsem MapReduce in Erlang Tom Van Cutsem 1 Context Masters course on Multicore Programming Focus on concurrent, parallel and... functional programming Didactic implementation of Google s MapReduce algorithm

More information

Proof: if not f[u] < d[v], then u still grey while v is being visited. DFS visit(v) will then terminate before DFS visit(u).

Proof: if not f[u] < d[v], then u still grey while v is being visited. DFS visit(v) will then terminate before DFS visit(u). Parenthesis property of DFS discovery and finishing times (Thm 23.6 of CLR): For any two nodes u,v of a directed graph, if d[u] < d[v] (i.e. u discovered before v), either f[v] < f[u] (i.e. visit time

More information

Reversible Computing in Concurrent Interacting Systems

Reversible Computing in Concurrent Interacting Systems Reversible Computing in Concurrent Interacting Systems Ivan Lanese Focus research group Computer Science and Engineering Department University of Bologna/INRIA Bologna, Italy 1 Plan of the course 1. Motivation

More information

The Actor Model applied to the Raspberry Pi and the Embedded Domain. Omer

The Actor Model applied to the Raspberry Pi and the Embedded Domain. Omer The Actor Model applied to the Raspberry Pi and the Embedded Domain Omer Kilic @OmerK omer@erlang-solutions.com Agenda Current state of Embedded Systems Overview of the Actor Model Erlang Embedded Project

More information

Towards Load Balanced Distributed Transactional Memory

Towards Load Balanced Distributed Transactional Memory Towards Load Balanced Distributed Transactional Memory Gokarna Sharma and Costas Busch Louisiana State University Euro-Par 12, August 31, 2012 Distributed Transactional Memory (DTM) Transactions run on

More information

The Google File System

The Google File System The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google* 정학수, 최주영 1 Outline Introduction Design Overview System Interactions Master Operation Fault Tolerance and Diagnosis Conclusions

More information

An Introduction to Erlang

An Introduction to Erlang An Introduction to Erlang Part 2 - Concurrency Richard Carlsson Processes P1 fib(0) -> 1; fib(1) -> 1; fib(n) when N > 0 -> fib(n-1) + fib(n-2). Whenever an Erlang program is running, the code is executed

More information

A History of the Erlang VM

A History of the Erlang VM Erlang Solutions Ltd. A History of the Erlang VM Robert Virding Pre-history AXE programmed in PLEX PLEX - programming language for exchanges - proprietary - blocks (processes) and signals - in-service

More information

CS390 Principles of Concurrency and Parallelism. Lecture Notes for Lecture #5 2/2/2012. Author: Jared Hall

CS390 Principles of Concurrency and Parallelism. Lecture Notes for Lecture #5 2/2/2012. Author: Jared Hall CS390 Principles of Concurrency and Parallelism Lecture Notes for Lecture #5 2/2/2012 Author: Jared Hall This lecture was the introduction the the programming language: Erlang. It is important to understand

More information

Huge market -- essentially all high performance databases work this way

Huge market -- essentially all high performance databases work this way 11/5/2017 Lecture 16 -- Parallel & Distributed Databases Parallel/distributed databases: goal provide exactly the same API (SQL) and abstractions (relational tables), but partition data across a bunch

More information

Claes Wikstrom. Ericsson Telecommunications AB. Box S Alvsjo Sweden

Claes Wikstrom. Ericsson Telecommunications AB. Box S Alvsjo Sweden Implementing Distributed Real-time Control Systems in a Functional Programming Language Claes Wikstrom klacke@erix.ericsson.se Computer Science Laboratory Ericsson Telecommunications AB Box 1505 S - 125

More information

HiPE Copyright Ericsson AB. All Rights Reserved. HiPE March 11, 2019

HiPE Copyright Ericsson AB. All Rights Reserved. HiPE March 11, 2019 Copyright 2006-2019 Ericsson AB. All Rights Reserved. 3.18.3 March 11, 2019 Copyright 2006-2019 Ericsson AB. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may

More information

An Introduction to Erlang

An Introduction to Erlang Erlang Solutions Ltd An Introduction to Erlang From behind the trenches Erlang Factory Lite Zurich, April 23 rd 2012 Francesco Cesarini Founder, Technical Director @FrancescoC francesco@erlang-solutions.com

More information

Model checking pushdown systems

Model checking pushdown systems Model checking pushdown systems R. Ramanujam Institute of Mathematical Sciences, Chennai jam@imsc.res.in Update Meeting, IIT-Guwahati, 4 July 2006 p. 1 Sources of unboundedness Data manipulation: integers,

More information

What is consistency?

What is consistency? Consistency What is consistency? Consistency model: A constraint on the system state observable by applications Examples: Local/disk memory : Single object consistency, also called coherence write x=5

More information

CLOUD-SCALE FILE SYSTEMS

CLOUD-SCALE FILE SYSTEMS Data Management in the Cloud CLOUD-SCALE FILE SYSTEMS 92 Google File System (GFS) Designing a file system for the Cloud design assumptions design choices Architecture GFS Master GFS Chunkservers GFS Clients

More information

Erlang: An Overview. Part 1 Sequential Erlang. Thanks to Richard Carlsson for the original version of many slides in this part

Erlang: An Overview. Part 1 Sequential Erlang. Thanks to Richard Carlsson for the original version of many slides in this part Erlang: An Overview Part 1 Sequential Erlang Thanks to Richard Carlsson for the original version of many slides in this part Erlang buzzwords Functional (strict) Single-assignment Dynamically typed Concurrent

More information

Flat Datacenter Storage. Edmund B. Nightingale, Jeremy Elson, et al. 6.S897

Flat Datacenter Storage. Edmund B. Nightingale, Jeremy Elson, et al. 6.S897 Flat Datacenter Storage Edmund B. Nightingale, Jeremy Elson, et al. 6.S897 Motivation Imagine a world with flat data storage Simple, Centralized, and easy to program Unfortunately, datacenter networks

More information

1. Draw and explain program flow of control without and with interrupts. [16]

1. Draw and explain program flow of control without and with interrupts. [16] Code No: R05310503 Set No. 1 1. Draw and explain program flow of control without and with interrupts. [16] 2. Explain the following transitions: (a) Blocked Blocked/Suspended. (b) Blocked/Suspended Ready/Suspended.

More information

(b) If a heap has n elements, what s the height of the tree?

(b) If a heap has n elements, what s the height of the tree? CISC 5835 Algorithms for Big Data Fall, 2018 Homework Assignment #4 1 Answer the following questions about binary tree and heap: (a) For a complete binary tree of height 4 (we consider a tree with just

More information

Resource management. Real-Time Systems. Resource management. Resource management

Resource management. Real-Time Systems. Resource management. Resource management Real-Time Systems Specification Implementation Verification Mutual exclusion is a general problem that exists at several levels in a real-time system. Shared resources internal to the the run-time system:

More information

Erlang. Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open. Check the source code of generic behaviours

Erlang. Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open. Check the source code of generic behaviours Lecture 10 Erlang Erlang Functional Concurrent Distributed Soft real-time OTP (fault-tolerance, hot code update ) Open Check the source code of generic behaviours 2 Functional Haskell call-by-need (lazy)

More information

Combined Scheduling of Time-Triggered and Priority-Based Task Sets in Ravenscar

Combined Scheduling of Time-Triggered and Priority-Based Task Sets in Ravenscar Combined Scheduling of Time-Triggered and Priority-Based Task Sets in Ravenscar Jorge Real, Sergio Sáez, Alfons Crespo Universitat Politècnica de València, Spain 23 rd International Conference on Reliable

More information

Producer Consumer in Ada

Producer Consumer in Ada Concurrent Systems 8L for Part IB Handout 3 Dr. Steven Hand Example: Active Objects A monitor with an associated server thread Exports an entry for each operation it provides Other (client) threads call

More information

Verification of Language Based Fault-Tolerance

Verification of Language Based Fault-Tolerance Verification of Language Based Fault-Tolerance Clara Benac Earle 1 and Lars-Åke Fredlund 2,3 1 Computing Laboratory, University of Kent, England 2 LSIIS, Facultad de Informática, Universidad Politécnica

More information

Luerl - an implementation of Lua on the Erlang VM

Luerl - an implementation of Lua on the Erlang VM Robert Virding Principle Language Expert at Erlang Solutions Ltd. Luerl - an implementation of Lua on the Erlang VM Overview Why Erlang - The problem - The problem domain - A bit of philosophy - Properties

More information

Whatever can go wrong will go wrong. attributed to Edward A. Murphy. Murphy was an optimist. authors of lock-free programs LOCK FREE KERNEL

Whatever can go wrong will go wrong. attributed to Edward A. Murphy. Murphy was an optimist. authors of lock-free programs LOCK FREE KERNEL Whatever can go wrong will go wrong. attributed to Edward A. Murphy Murphy was an optimist. authors of lock-free programs LOCK FREE KERNEL 251 Literature Maurice Herlihy and Nir Shavit. The Art of Multiprocessor

More information

A Combined Semi-Pipelined Query Processing Architecture For Distributed Full-Text Retrieval

A Combined Semi-Pipelined Query Processing Architecture For Distributed Full-Text Retrieval A Combined Semi-Pipelined Query Processing Architecture For Distributed Full-Text Retrieval Simon Jonassen and Svein Erik Bratsberg Department of Computer and Information Science Norwegian University of

More information

Design of Concurrent and Distributed Data Structures

Design of Concurrent and Distributed Data Structures METIS Spring School, Agadir, Morocco, May 2015 Design of Concurrent and Distributed Data Structures Christoph Kirsch University of Salzburg Joint work with M. Dodds, A. Haas, T.A. Henzinger, A. Holzer,

More information

PYTHON CONTENT NOTE: Almost every task is explained with an example

PYTHON CONTENT NOTE: Almost every task is explained with an example PYTHON CONTENT NOTE: Almost every task is explained with an example Introduction: 1. What is a script and program? 2. Difference between scripting and programming languages? 3. What is Python? 4. Characteristics

More information

Introduction to Relational Databases

Introduction to Relational Databases Introduction to Relational Databases Third La Serena School for Data Science: Applied Tools for Astronomy August 2015 Mauro San Martín msmartin@userena.cl Universidad de La Serena Contents Introduction

More information

Inter-process communication (IPC)

Inter-process communication (IPC) Inter-process communication (IPC) We have studied IPC via shared data in main memory. Processes in separate address spaces also need to communicate. Consider system architecture both shared memory and

More information

Runtime Checking for Program Verification Systems

Runtime Checking for Program Verification Systems Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification

More information

Rigurous Software Development of Multi-Agent Systems

Rigurous Software Development of Multi-Agent Systems Rigurous Software Development of Multi-Agent Systems 2 nd Prometidos-CM Winter School Speaker: Álvaro Fernández Díaz Universidad Politécnica de Madrid Structure of the talk Multi-Agent Systems Purpose

More information

DATABASE SYSTEM CONCEPTS

DATABASE SYSTEM CONCEPTS DATABASE SYSTEM CONCEPTS HENRY F. KORTH ABRAHAM SILBERSCHATZ University of Texas at Austin McGraw-Hill, Inc. New York St. Louis San Francisco Auckland Bogota Caracas Lisbon London Madrid Mexico Milan Montreal

More information

Lock Tuning. Concurrency Control Goals. Trade-off between correctness and performance. Correctness goals. Performance goals.

Lock Tuning. Concurrency Control Goals. Trade-off between correctness and performance. Correctness goals. Performance goals. Lock Tuning Concurrency Control Goals Performance goals Reduce blocking One transaction waits for another to release its locks Avoid deadlocks Transactions are waiting for each other to release their locks

More information

Models and languages of concurrent computation

Models and languages of concurrent computation Models and languages of concurrent computation Lecture 11 of TDA383/DIT390 (Concurrent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2016/2017 Today s menu

More information

The Google File System

The Google File System The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google SOSP 03, October 19 22, 2003, New York, USA Hyeon-Gyu Lee, and Yeong-Jae Woo Memory & Storage Architecture Lab. School

More information

Cluster-Based Scalable Network Services

Cluster-Based Scalable Network Services Cluster-Based Scalable Network Services Suhas Uppalapati INFT 803 Oct 05 1999 (Source : Fox, Gribble, Chawathe, and Brewer, SOSP, 1997) Requirements for SNS Incremental scalability and overflow growth

More information

VLSI System Testing. Fault Simulation

VLSI System Testing. Fault Simulation ECE 538 VLSI System Testing Krish Chakrabarty Fault Simulation ECE 538 Krish Chakrabarty Fault Simulation Problem and motivation Fault simulation algorithms Serial Parallel Deductive Concurrent Random

More information

DISTRIBUTED COMPUTER SYSTEMS

DISTRIBUTED COMPUTER SYSTEMS DISTRIBUTED COMPUTER SYSTEMS CONSISTENCY AND REPLICATION CONSISTENCY MODELS Dr. Jack Lange Computer Science Department University of Pittsburgh Fall 2015 Consistency Models Background Replication Motivation

More information

Chapter 18: Parallel Databases

Chapter 18: Parallel Databases Chapter 18: Parallel Databases Introduction Parallel machines are becoming quite common and affordable Prices of microprocessors, memory and disks have dropped sharply Recent desktop computers feature

More information