This book is an in-depth introduction to Erlang, a programming language ideal for any situation where concurrency, fault tolerance, and fast response is essential. Erlang is gaining widespread adoption with the advent of multi-core processors and their new scalable approach to concurrency. With this guide you'll learn how to write complex concurrent programs in Erlang, regardless of your programming background or experience. Written by leaders of the international Erlang community -- and based on their training material -- Erlang Programming focuses on the language's syntax and semantics, and explains pattern matching, proper lists, recursion, debugging, networking, and concurrency. This book helps you: Understand the strengths of Erlang and why its designers included specific features Learn the concepts behind concurrency and Erlang's way of handling it Write efficient Erlang programs while keeping code neat and readable Discover how Erlang fills the requirements for distributed systems Add simple graphical user interfaces with little effort Learn Erlang's tracing mechanisms for debugging concurrent and distributed systems Use the built-in Mnesia database and other table storage features Erlang Programming provides exercises at the end of each chapter and simple examples throughout the book.
Cited By
- Bartolo Burlò C, Francalanza A and Scalas A Towards a Hybrid Verification Methodology for Communication Protocols (Short Paper) Formal Techniques for Distributed Objects, Components, and Systems, (227-235)
- 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.
- Chechina N, MacKenzie K, Thompson S, Trinder P, Boudeville O, Fördős V, Hoch C, Ghaffari A and Hernandez M (2017). Evaluating Scalable Distributed Erlang for Scalability and Reliability, IEEE Transactions on Parallel and Distributed Systems, 28:8, (2244-2257), Online publication date: 1-Aug-2017.
- Seijas P and Thompson S Identifying and introducing interfaces and callbacks using Wrangler Proceedings of the 28th Symposium on the Implementation and Application of Functional Programming Languages, (1-13)
- Cassar I and Francalanza A On Implementing a Monitor-Oriented Programming Framework for Actor Systems Proceedings of the 12th International Conference on Integrated Formal Methods - Volume 9681, (176-192)
- Seijas P, Thompson S and Francisco M Model extraction and test generation from JUnit test suites Proceedings of the 11th International Workshop on Automation of Software Test, (8-14)
- 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.
- Li H and Thompson S Safe Concurrency Introduction through Slicing Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation, (103-113)
- Babu P, Kumar C, Murali N and Jayakumar T (2014). Towards assessment of software reliability and its characteristics in safety systems of nuclear reactors, ACM SIGSOFT Software Engineering Notes, 39:5, (1-17), Online publication date: 17-Sep-2014.
- Lamela Seijas P, Thompson S, Taylor R, Bogdanov K and Derrick J Synapse Proceedings of the Thirteenth ACM SIGPLAN workshop on Erlang, (73-74)
- Li H and Thompson S Improved semantics and implementation through property-based testing with QuickCheck Proceedings of the 9th International Workshop on Automation of Software Test, (50-56)
- Li H, Thompson S, Lamela Seijas P and Francisco M Automating property-based testing of evolving web services Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation, (169-180)
- Francalanza A and Zerafa T Code management automation for Erlang remote actors Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (13-18)
- 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)
- Francalanza A and Zerafa T Towards an abstraction for remote evaluation in Erlang Proceedings of the twelfth ACM SIGPLAN workshop on Erlang, (75-76)
- Francesquini E, Goldman A and Méhaut J Actor scheduling for multicore hierarchical memory platforms Proceedings of the twelfth ACM SIGPLAN workshop on Erlang, (51-62)
- Piotrowski M and Turek W Software agents mobility using process migration mechanism in distributed Erlang Proceedings of the twelfth ACM SIGPLAN workshop on Erlang, (43-50)
- Li H and Thompson S Multicore profiling for Erlang programs using percept2 Proceedings of the twelfth ACM SIGPLAN workshop on Erlang, (33-42)
- 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)
- D'Osualdo E, Kochems J and Ong L Soter Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions, (137-140)
- 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)
- 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)
- Babu P, Kumar C, Murali N and Jayakumar T (2012). An intuitive approach to determine test adequacy in safety-critical software, ACM SIGSOFT Software Engineering Notes, 37:5, (1-10), Online publication date: 7-Sep-2012.
- Earle C and Fredlund L Verification of timed erlang programs using mcerlang Proceedings of the 14th joint IFIP WG 6.1 international conference and Proceedings of the 32nd IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems, (251-267)
- Boudeville O, Cesarini F, Chechina N, Lundin K, Papaspyrou N, Sagonas K, Thompson S, Trinder P and Wiger U RELEASE Proceedings of the 2012 Conference on Trends in Functional Programming - Volume 7829, (263-278)
- Turner D Some History of Functional Programming Languages Proceedings of the 2012 Conference on Trends in Functional Programming - Volume 7829, (1-20)
- Li H and Thompson S Let's make refactoring tools user-extensible! Proceedings of the Fifth Workshop on Refactoring Tools, (32-39)
- Aronis S and Sagonas K Typed callbacks for more robust behaviours Proceedings of the 10th ACM SIGPLAN workshop on Erlang, (23-29)
- Zinn C Building a faceted browser in CouchDB using views on views and erlang metaprogramming Proceedings of the 20th international conference on Functional and constraint logic programming, (104-121)
- Li H and Thompson S Incremental clone detection and elimination for erlang programs Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software, (356-370)
- Ortiz A Teaching concurrency-oriented programming with Erlang Proceedings of the 42nd ACM technical symposium on Computer science education, (195-200)
- Arts T and Thompson S From test cases to FSMs Proceedings of the 9th ACM SIGPLAN workshop on Erlang, (1-12)
- Li H and Thompson S Improved testing through refactoring Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques, (198-202)
- Guo Q, Derrick J, Earle C and Fredlund L Model-checking Erlang Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques, (23-38)
- Ptaszek M and Malawski M ComputErl - erlang-based framework for many task computing Proceedings of the 11th international conference on Trends in functional programming, (184-197)
- Naugler D (2010). Concurrent programming in Erlang, Journal of Computing Sciences in Colleges, 25:5, (6-7), Online publication date: 1-May-2010.
- 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.
Recommendations
Teaching concurrency-oriented programming with Erlang
SIGCSE '11: Proceedings of the 42nd ACM technical symposium on Computer science educationTeaching how to write correct programs is hard; teaching how to write correct concurrent programs is even harder. There is a desperate need for a better concurrency programming model than what most people are currently using. The Erlang programming ...