Design, composition and performance are critical in creating software. What are we doing when we design software? In what ways is design taking things apart? What does this have to do with Clojure, languages and libraries in general? This talk will explore the nature of design and composition and how it impacts our approach to software development practice and tools.
Core.async - Communicating Sequential Processes using Channels, in Clojure
Track: Tomorrow's Developer ToolsLocation:Bayview A/BAbstract:
There comes a time in all good programs when components or subsystems must stop communicating directly with one another. This is often achieved via the introduction of queues between the producers of data and the consumers/processors of that data. This architectural indirection ensures that important decisions can be made with some degree of independence, and leads to systems that are easier to understand, manage, monitor and change, and make better use of computational resources, etc. The objectives of core.async are:
- To provide facilities for independent threads of activity, communicating via queue-like channels.
- To support both real threads and shared use of thread pools (in any combination), as well as ClojureScript on JS engines.
- To build upon the work done on CSP and its derivatives, e.g. Java CSP and the Go programming language.
This talk will cover the motivation, design and use of the new Clojure core.async library, the reasons for choosing the CSP approach and how it helps to structure applications.