Erlang solves one of the most pressing problems facing developers today: how to write reliable, concurrent, high-performance systems. It's used worldwide by companies who need to produce reliable, efficient, and scalable applications. Invest in learning Erlang now. Moore's Law is the observation that the amount you can do on a single chip doubles every two years. But Moore's Law is taking a detour. Rather than producing faster and faster processors, companies such as Intel and AMD are producing multi-core devices: single chips containing two, four, or more processors. If your programs aren't concurrent, they'll only run on a single processor at a time. Your users will think that your code is slow. Erlang is a programming language designed for building highly parallel, distributed, fault-tolerant systems. It has been used commercially for many years to build massive fault-tolerated systems that run for years with minimal failures. Erlang programs run seamlessly on multi-core computers: this means your Erlang program should run a lot faster on a 4 core processor than on a single core processor, all without you having to change a line of code. Erlang combines ideas from the world of functional programming with techniques for building fault-tolerant systems to make a powerful language for building the massively parallel, networked applications of the future. This book presents Erlang and functional programming in the familiar Pragmatic style. And it's written by Joe Armstrong, one of the creators of Erlang. It includes example code you'll be able to build upon. In addition, the book contains the full source code for two interesting applications: A SHOUTcast server which you can use to stream music to every computer in your house, and a full-text indexing and search engine that can index gigabytes of data. Learn how to write programs that run on dozens or even hundreds of local and remote processors. See how to write robust applications that run even in the face of network and hardware failure, using the Erlang programming language.
Cited By
- Barney L and Neto A Unsafe Impedance: Safe Languages and Safe by Design Software Proceedings of the 23rd ACM SIGPLAN International Workshop on Erlang, (76-83)
- Moradi Moghadam M, Bagherzadeh M, Khatchadourian R and Bagheri H đAkka: Mutation Testing for Actor Concurrency in Akka using Real-World Bugs Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (262-274)
- Bagherzadeh M, Fireman N, Shawesh A and Khatchadourian R (2020). Actor concurrency bugs: a comprehensive study on symptoms, root causes, API usages, and differences, Proceedings of the ACM on Programming Languages, 4:OOPSLA, (1-32), Online publication date: 13-Nov-2020.
- Kopestenski I and Van Roy P Erlang as an enabling technology for resilient general-purpose applications on edge IoT networks Proceedings of the 18th ACM SIGPLAN International Workshop on Erlang, (1-12)
- Pina L, Andronidis A, Hicks M and Cadar C MVEDSUA Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, (573-585)
- Albert E, Correas J, Johnsen E, Pun K and RomĂĄn-DĂez G (2018). Parallel Cost Analysis, ACM Transactions on Computational Logic, 19:4, (1-37), Online publication date: 31-Oct-2018.
- Desai A, Phanishayee A, Qadeer S and Seshia S (2018). Compositional programming and testing of dynamic distributed systems, Proceedings of the ACM on Programming Languages, 2:OOPSLA, (1-30), Online publication date: 24-Oct-2018.
- Hedden B and Zhao X A Comprehensive Study on Bugs in Actor Systems Proceedings of the 47th International Conference on Parallel Processing, (1-9)
- Valkov I, Chechina N and Trinder P Comparing languages for engineering server software Proceedings of the 33rd Annual ACM Symposium on Applied Computing, (218-225)
- Trinder P, Chechina N, Papaspyrou N, Sagonas K, Thompson S, Adams S, Aronis S, Baker R, Bihari E, Boudeville O, Cesarini F, Stefano M, Eriksson S, fördĆs V, Ghaffari A, Giantsios A, Green R, Hoch C, Klaftenegger D, Li H, Lundin K, Mackenzie K, Roukounaki K, Tsiouris Y and Winblad K (2017). Scaling Reliably, ACM Transactions on Programming Languages and Systems, 39:4, (1-46), Online publication date: 31-Dec-2018.
- Cassar I, Francalanza A, Aceto L and IngĂłlfsdĂłttir A eAOP: an aspect oriented programming framework for Erlang Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang, (20-30)
- RosĂ A, Chen L and Binder W (2016). Actor profiling in virtual execution environments, ACM SIGPLAN Notices, 52:3, (36-46), Online publication date: 12-May-2017.
- Gracia-Tinedo R, SampĂ© J, Zamora E, SĂĄnchez-Artigas M, GarcĂa-LĂłpez P, Moatti Y and Rom E Crystal Proceedings of the 15th Usenix Conference on File and Storage Technologies, (243-256)
- RosĂ A, Chen L and Binder W Actor profiling in virtual execution environments Proceedings of the 2016 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, (36-46)
- Kuraj I and Jackson D Exploring the role of sequential computation in distributed systems: motivating a programming paradigm shift Proceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, (145-164)
- Lutac A, Chechina N, Aragon-Camarasa G and Trinder P Towards reliable and scalable robot communication Proceedings of the 15th International Workshop on Erlang, (12-23)
- Oliveira A, Souza P and Souza S ValiErlang Proceedings of the 1st Brazilian Symposium on Systematic and Automated Software Testing, (1-10)
- RosĂ A, Chen L and Binder W Efficient profiling of actor-based applications in parallel and distributed systems Proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, (1-3)
- FördĆs V and TĂłth M (2016). Identifying Code Clones with RefactorErl, Acta Cybernetica, 22:3, (553-571), Online publication date: 1-Jun-2016.
- Naugler D (2016). An introduction to Elixir programming, Journal of Computing Sciences in Colleges, 31:5, (4-4), Online publication date: 1-May-2016.
- Nguyen T and Zhao X Decoupled concurrency Proceedings of the 31st Annual ACM Symposium on Applied Computing, (1358-1360)
- Lin J, Yu I, Johnsen E and Lee M ABS-YARN Proceedings of the 19th International Conference on Fundamental Approaches to Software Engineering - Volume 9633, (49-65)
- Chechina N, Li H, Ghaffari A, Thompson S and Trinder P (2016). Improving the network scalability of Erlang, Journal of Parallel and Distributed Computing, 90:C, (22-34), Online publication date: 1-Apr-2016.
- Gebrewahid E, Arslan M, Karlsson A and Ul-Abdin Z Support for data parallelism in the CAL actor language Proceedings of the 3rd Workshop on Programming Models for SIMD/Vector Processing, (1-8)
- Muscholl A Automated Synthesis of Distributed Controllers Proceedings, Part II, of the 42nd International Colloquium on Automata, Languages, and Programming - Volume 9135, (11-27)
- OlĂĄh G, Nagy G and PorkolĂĄb Z Analyzing Scale-Free Properties in Erlang and Scala Central European Functional Programming School, (380-393)
- Alvaro P, Rosen J and Hellerstein J Lineage-driven Fault Injection Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, (331-346)
- Naugler D (2015). Elixir, Journal of Computing Sciences in Colleges, 30:5, (28-28), Online publication date: 1-May-2015.
- FernĂĄndez-DĂaz Ă, Benac-Earle C and Fredlund L (2015). Adding distribution and fault tolerance to Jason, Science of Computer Programming, 98:P2, (205-232), Online publication date: 1-Feb-2015.
- Johnsen E, Schlatte R and Tapia Tarifa S Deployment Variability in Delta-Oriented Models Part I of the Proceedings of the 6th International Symposium on Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change - Volume 8802, (304-319)
- Ghaffari A Investigating the scalability limits of distributed Erlang Proceedings of the Thirteenth ACM SIGPLAN workshop on Erlang, (43-49)
- He J, Wadler P and Trinder P Typecasting actors Proceedings of the Fifth Annual Scala Workshop, (23-33)
- Voellmy A, Wang J, Hudak P and Yamamoto K (2013). Mio, ACM SIGPLAN Notices, 48:12, (129-140), Online publication date: 31-Jan-2014.
- Cardoso R, Zatelli M, HĂŒbner J and Bordini R Towards benchmarking actor- and agent-based programming languages Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (115-126)
- Zhao X and Jamali N Load balancing non-uniform parallel computations Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (97-108)
- Black A (2013). Object-oriented programming, Information and Computation, 231, (3-20), Online publication date: 1-Oct-2013.
- Voellmy A, Wang J, Hudak P and Yamamoto K Mio Proceedings of the 2013 ACM SIGPLAN symposium on Haskell, (129-140)
- Jergler M, Doblander C, Najafi M and Jacobsen H Grand challenge Proceedings of the 7th ACM international conference on Distributed event-based systems, (307-312)
- Cardoso R, HĂŒbner J and Bordini R Benchmarking communication in actor- and agent-based languages Proceedings of the First International Conference on Engineering Multi-Agent Systems, (58-77)
- Cardoso R, HĂŒbner J and Bordini R Benchmarking communication in actor- and agent-based languages Proceedings of the 2013 international conference on Autonomous agents and multi-agent systems, (1267-1268)
- Vikas , Giacaman N and Sinnen O Pyjama Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores, (43-52)
- Johnsen E, Schlatte R and Tapia Tarifa S Modeling resource-aware virtualized applications for the cloud in real-time ABS Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering, (71-86)
- Johnsen E Separating Cost and Capacity for Load Balancing in ABS Deployment Models Revised Lectures of the 11th International Symposium on Formal Methods for Components and Objects - Volume 7866, (145-167)
- LĂłpez M, Castro L and Cabrero D Declarative distributed advertisement system for iDTV Proceedings of the 14th symposium on Principles and practice of declarative programming, (185-194)
- Toscano L, D'Angelo G and Marzolla M Parallel discrete event simulation with Erlang Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computing, (83-92)
- LĂłpez M, Castro L and Cabrero D Failover and takeover contingency mechanisms for network partition and node failure Proceedings of the eleventh ACM SIGPLAN workshop on Erlang workshop, (51-60)
- Nobakht B, de Boer F, Jaghoori M and Schlatte R Programming and deployment of active objects with application-level scheduling Proceedings of the 27th Annual ACM Symposium on Applied Computing, (1883-1888)
- D'Angelo G, Ferretti S and Marzolla M Time warp on the go Proceedings of the 5th International ICST Conference on Simulation Tools and Techniques, (242-248)
- Basu S, Bultan T and Ouederni M Deciding choreography realizability Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (191-202)
- Basu S, Bultan T and Ouederni M (2012). Deciding choreography realizability, ACM SIGPLAN Notices, 47:1, (191-202), Online publication date: 18-Jan-2012.
- Gorlick M, Strasser K, Baquero A and Taylor R CREST Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, (193-194)
- Johnsen E, Schlatte R and Tapia Tarifa S A formal model of user-defined resources in resource-restricted deployment scenarios Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software, (196-213)
- Bain T, Campbell P and Karlsson J Modeling growth and dynamics of neural networks via message passing in Erlang Proceedings of the 10th ACM SIGPLAN workshop on Erlang, (94-97)
- Amaral C, Florido M and Jansson P Interfacing dynamically typed languages and the why tool Proceedings of the 10th ACM SIGPLAN workshop on Erlang, (92-93)
- Aronis S and Sagonas K Typed callbacks for more robust behaviours Proceedings of the 10th ACM SIGPLAN workshop on Erlang, (23-29)
- Arts T, Hughes J, Norell U, Smallbone N and Svensson H Accelerating race condition detection through procrastination Proceedings of the 10th ACM SIGPLAN workshop on Erlang, (14-22)
- Zhao X and Jamali N Supporting Deadline Constrained Distributed Computations on Grids Proceedings of the 2011 IEEE/ACM 12th International Conference on Grid Computing, (165-172)
- Fourtounis G, Ălveczky P and Papaspyrou N Formally specifying and analyzing a parallel virtual machine for lazy functional languages using Maude Proceedings of the fifth international workshop on High-level parallel programming and applications, (19-26)
- Sivieri A, Cugola G and Ghezzi C Computational REST meets Erlang Proceedings of the 49th international conference on Objects, models, components, patterns, (244-259)
- Johnsen E, Lanese I and Zavattaro G Fault in the future Proceedings of the 13th international conference on Coordination models and languages, (1-15)
- Ortiz A Teaching concurrency-oriented programming with Erlang Proceedings of the 42nd ACM technical symposium on Computer science education, (195-200)
- Honda K, Mukhamedov A, Brown G, Chen T and Yoshida N Scribbling interactions with a formal foundation Proceedings of the 7th international conference on Distributed computing and internet technology, (55-75)
- Siegel S and Gopalakrishnan G Formal analysis of message passing Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation, (2-18)
- Johnsen E, HÀhnle R, SchÀfer J, Schlatte R and Steffen M ABS Proceedings of the 9th international conference on Formal Methods for Components and Objects, (142-164)
- Johnsen E, Owe O, Schlatte R and Tarifa S Dynamic resource reallocation between deployment components Proceedings of the 12th international conference on Formal engineering methods and software engineering, (646-661)
- Biggs G, Ando N and Kotoku T Coordinating software components in a component-based architecture for robotics Proceedings of the Second international conference on Simulation, modeling, and programming for autonomous robots, (168-179)
- Walkinshaw N, Bogdanov K, Derrick J and Paris J Increasing functional coverage by inductive testing Proceedings of the 22nd IFIP WG 6.1 international conference on Testing software and systems, (126-141)
- Bohlin T, Jonsson B and Soleimanifard S Inferring compact models of communication protocol entities Proceedings of the 4th international conference on Leveraging applications of formal methods, verification, and validation - Volume Part I, (658-672)
- Kerdprasop K and Kerdprasop N Parallelization of K-means clustering on multi-core processors Proceedings of the 10th WSEAS international conference on Applied computer science, (472-477)
- Wiger U Generic load regulation framework for Erlang Proceedings of the 9th ACM SIGPLAN workshop on Erlang, (57-68)
- Armstrong J (2010). Erlang, Communications of the ACM, 53:9, (68-75), Online publication date: 1-Sep-2010.
- Kuuskeri J and Turto T On actors and the REST Proceedings of the 10th international conference on Web engineering, (144-157)
- Johnsen E, Owe O, Schlatte R and Tarifa S Validating timed models of deployment components with parametric concurrency Proceedings of the 2010 international conference on Formal verification of object-oriented software, (46-60)
- Plociniczak H and Eisenbach S JErlang Proceedings of the 12th international conference on Coordination Models and Languages, (61-75)
- Agnarsson S Parallel programming in morpho Proceedings of the 10th international conference on Applied Parallel and Scientific Computing - Volume Part I, (97-107)
- Popovic M and Basicevic I (2010). Test case generation for the task tree type of architecture, Information and Software Technology, 52:6, (697-706), Online publication date: 1-Jun-2010.
- Grogono P and Jafroodi N A fair protocol for non-deterministic message passing Proceedings of the Third C* Conference on Computer Science and Software Engineering, (53-58)
- Schintke F, Reinefeld A, Haridi S and SchĂŒtt T Enhanced Paxos Commit for Transactions on DHTs Proceedings of the 2010 10th IEEE/ACM International Conference on Cluster, Cloud and Grid Computing, (448-454)
- Rivas S, Francisco M and GulĂas V Property driven development in Erlang, by example Proceedings of the 5th Workshop on Automation of Software Test, (75-78)
- Naugler D (2010). Concurrent programming in Erlang, Journal of Computing Sciences in Colleges, 25:5, (6-7), Online publication date: 1-May-2010.
- Sagonas K Using static analysis to detect type errors and concurrency defects in erlang programs Proceedings of the 10th international conference on Functional and Logic Programming, (13-18)
- Adams J, Ernst D, Murphy T and Ortiz A Multicore education Proceedings of the 41st ACM technical symposium on Computer science education, (194-195)
- Clarke D, Johnsen E and Owe O Concurrent objects Ă la carte Concurrency, Compositionality, and Correctness, (185-206)
- Walkinshaw N and Derrick J Incrementally discovering testable specifications from program executions Proceedings of the 8th international conference on Formal methods for components and objects, (272-289)
- Paladi N and Arts T Model based testing of data constraints Proceedings of the 8th ACM SIGPLAN workshop on ERLANG, (71-82)
- CortĂ©s H, GarcĂa M, HernĂĄndez J, HernĂĄndez M, PĂ©rez-Cordoba E and Ramos E Development of a distributed system applied to teaching and learning Proceedings of the 8th ACM SIGPLAN workshop on ERLANG, (41-50)
- GrĂŒner S and Lorentsen T Teaching Erlang using robotics and player/stage Proceedings of the 8th ACM SIGPLAN workshop on ERLANG, (33-40)
- Lövei L Automated module interface upgrade Proceedings of the 8th ACM SIGPLAN workshop on ERLANG, (11-22)
- Karmani R, Shali A and Agha G Actor frameworks for the JVM platform Proceedings of the 7th International Conference on Principles and Practice of Programming in Java, (11-20)
- Wrigstad T, Eugster P, Field J, Nystrom N and Vitek J Software hardening Proceedings for the 1st workshop on Script to Program Evolution, (58-70)
- Arad C, Dowling J and Haridi S Developing, simulating, and deploying peer-to-peer systems using the Kompics component model Proceedings of the Fourth International ICST Conference on COMmunication System softWAre and middlewaRE, (1-9)
- Naugler D (2009). An intermediate introduction to the Erlang programming language, Journal of Computing Sciences in Colleges, 24:5, (4-4), Online publication date: 1-May-2009.
- CorrĂȘa F Actors in a new "highly parallel" world Proceedings of the Warm Up Workshop for ACM/IEEE ICSE 2010, (21-24)
- Larson J (2009). Erlang for concurrent programming, Communications of the ACM, 52:3, (48-56), Online publication date: 1-Mar-2009.
- Lövei L, Hoch C, Köllö H, Nagy T, NagynĂ© VĂg A, HorpĂĄcsi D, Kitlei R and KirĂĄly R Refactoring module structure Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, (83-89)
- SchĂŒtt T, Schintke F and Reinefeld A Scalaris Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, (41-48)
- Boberg J Early fault detection with model-based testing Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, (9-20)
- Castro L, GulĂas V, Abalde C and ParĂs J (2008). Environment-independent methodology for accessing external data sources, WSEAS Transactions on Information Science and Applications, 5:9, (1-10), Online publication date: 1-Sep-2008.
- Larson J (2008). Erlang for Concurrent Programming, Queue, 6:5, (18-23), Online publication date: 1-Sep-2008.
- Sillito J Stage Proceedings of the 1st international workshop on Multicore software engineering, (33-40)
- Claessen K and Svensson H Finding counter examples in induction proofs Proceedings of the 2nd international conference on Tests and proofs, (48-65)
- Park D (2008). Concurrent programming in a nutshell, Journal of Computing Sciences in Colleges, 23:4, (51-57), Online publication date: 1-Apr-2008.
- Naugler D (2008). Learning the Erlang programming language, Journal of Computing Sciences in Colleges, 23:4, (5-5), Online publication date: 1-Apr-2008.
- Vinoski S (2007). Reliability with Erlang, IEEE Internet Computing, 11:6, (79-81), Online publication date: 1-Nov-2007.
- Meijer E (2007). Confessions of a used programming language salesman, ACM SIGPLAN Notices, 42:10, (677-694), Online publication date: 21-Oct-2007.
- Meijer E Confessions of a used programming language salesman Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications, (677-694)
- Nystrom J Priority messaging made easy Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop, (65-72)
- Fredlund L and Svensson H McErlang Proceedings of the 12th ACM SIGPLAN international conference on Functional programming, (125-136)
- Fredlund L and Svensson H (2007). McErlang, ACM SIGPLAN Notices, 42:9, (125-136), Online publication date: 1-Oct-2007.
- Vinoski S (2007). Concurrency with Erlang, IEEE Internet Computing, 11:5, (90-93), Online publication date: 1-Sep-2007.
Index Terms
- Programming Erlang: Software for a Concurrent World