Everyone knows that writing concurrent systems is difficult. The trouble is that nearly all programs are accidentally concurrent!
Sure, you do not use locks or semaphores. But are you are using the event loop in JavaScript? Are you mutating any local state? Do you use objects? Do you have dynamic event streams? This talk will reframe these extraordinarily common patterns as concurrent systems. This reframing is a shockingly powerful way of understand "accidental complexity" in your code base. It often reveals a truly insane concurrent system that no benevolent coder would knowingly design.
This talk will start by exploring "message-passing concurrency" as a foundation. This is very sane approach to concurrency as seen in Concurrent ML, Go, and Clojure. With this foundation, we will go through some seemingly simple examples and tease out the underlying concurrent system. The goal of this talk is for you to walk away being able to recognize concurrency and use this reframing to avoid "accidental complexity" as much as possible. Message-passing concurrency is also the foundation of interactivity in Elm as well, so we will also see how Elm guides you towards using concurrency appropriately in your front-end code without you even thinking about it.
These ideas should be applicable in nearly every code base you see, and this perspective should help you write better code whether you are writing JavaScript or Elm or anything else!
This tutorial will focus on getting started with Elm, with an emphasis on understanding the fundamentals, so that you are able to build a basic web app in Elm.
No previous knowledge of Elm is required.
Evan is a functional programmer at heart, and his broad goal is to provide the tools and learning resources to make functional languages common in industry. At Prezi, his focus is developing Elm’s compiler, tools, and community to make it a great for web programming, both within Prezi and in industry in general.
Github: evancz
Twitter: @czaplic