Concurrency Oriented Programming in a Modern World • Robert Virding & Francesco Cesarini • GOTO 2023

Learn about concurrency-oriented programming in a modern world, explore Erlang and Elixir languages, and discover how to build scalable and reliable systems using concurrency.

Key takeaways
  • Concurrency is a property of the problem you’re trying to solve, not a property of the language.
  • Erlang and Elixir are concurrency-oriented programming languages that provide a solid runtime and a focus on solving problems.
  • Concurrency is not the same as parallelism, and Erlang’s concurrency model is based on low shared memory and message passing.
  • Processes in Erlang are lightweight and can be created and destroyed quickly, making them suitable for high-concurrency applications.
  • The actor model is a concurrency model that allows processes to communicate with each other by sending and receiving messages.
  • Erlang’s supervisor process monitors and restarts other processes that fail, allowing for fault-tolerant systems.
  • Concurrency is essential for building scalable and reliable systems, and Erlang and Elixir provide tools and abstractions to support this.
  • The Erlang ecosystem has over 35 languages running on top of it, and Elixir is a new programming language that is part of this ecosystem.
  • Concurrency-oriented programming is about solving problems in a way that is concurrent, rather than trying to solve a problem with concurrency.
  • The Erlang concurrency model is based on the idea that processes are isolated and can fail independently, and that supervisors monitor and restart processes that fail.
  • Concurrency is not just about solving problems, but also about building systems that are scalable and reliable.
  • Erlang and Elixir provide a way to build systems that are concurrent, scalable, and reliable, and that can be used to solve a wide range of problems.