Brave New Concurrent World

  • Published on

  • View

  • Download

Embed Size (px)


[talk from Webcamp Ljubljana 2009] A non-apologetic treatise on how to think concurrency. Contains exotic languages, swearing, and only a passing relevance to the web.


<ul><li> 1. Brave New Concurrent World Webcamp Ljubljana[email_address]</li></ul> <p> 2. Why should you give a fuck? </p> <ul><li>More data &gt; better algorithms </li></ul> <ul><li>Moores Law: from GHz to cores </li></ul> <ul><li>Conventional computation models are badly broken </li></ul> <p> 3. Some big ideas in concurrency 4. Decouple temporal and spital order 5. </p> <ul><li>a*(b*c)=(a*b)*c </li></ul> <ul><li>a+b=b+a </li></ul> <p>Associativity v .commutativity 6. </p> <ul><li>First/rest </li></ul> <ul><li>Linked lists </li></ul> <ul><li>Partitions </li></ul> <ul><li>trees </li></ul> <p>Linearv.m ulti - way d ecom position 7. </p> <ul><li>Recursive updates </li></ul> <ul><li>Map to singelton solutions </li></ul> <ul><li>Merge subsolutions </li></ul> <p>Accumulation v . merging 8. The future is a function of the past, it doesnt change it 9. Identity is an illusion There is no enduring changing entity 10. Immutable values </p> <ul><li>Copy on change (pure functions) </li></ul> <ul><li><ul><li>State transitions never disturb prior </li></ul></li></ul> <ul><li><ul><li>Structure sharing where possible </li></ul></li></ul> <ul><li>Never need synchronization </li></ul> <p> 11. Forget everything you know about performance 12. Doredundant operations to reduce communication 13. Takeextra space to permit temporal decoupling 14. 15. Map/reduce Concurrency in practice 16. 17. Finegranularity N(map tasks) &gt;&gt; N(machines) 18. Fault tolerance via re-execution 19. Refinement s </p> <ul><li>Redundant execution </li></ul> <ul><li>Locality optimizations </li></ul> <ul><li><ul><li>Master s chedule r </li></ul></li></ul> <p> 20. How not to get (completely) ass-raped in the near future </p> <ul><li>Functional programming </li></ul> <ul><li>Smart(er) compilers/run-times </li></ul> <ul><li>Erlang, Clojure, (Haskell, Go, Fortress, ...) </li></ul>