Late-2009 Concurrency Linkography
I'm dumping in a ton of concurrency-related links that I've been absorbing, will build a structure for them as I go along. This is on a wiki not my blog because it could benefit from input from more than one person.
Snakes on the Web is a general survey on issues of Web development, but this link is to a section called "Concurrency" which I think is a nice statement of the general problem.
Java Concurrency in Practice by Brian Goetz et al. I haven't read this but everyone says it's the standard reference for thread-centric concurrent-programming issues.
Software Transactional Memory by Mark Volkmann. Focuses on STM and specifically the Clojure implementation, but has a helpful overview of lock- and actor-based approaches too.
The Landscape of Parallel Computing Research: A View From Berkeley (PDF). Discusses hardware as well as software, and proposes a set of 13 benchmarks which might be useful stand-ins for a variety of application classes.
Technical Books for Multi-Core Software Developers at software.intel.com, a bibliography of concurrent-programming books.
QuickSort Is Not a Concurrent Algorithm by Mike Acton; a good example of thinking about concurrency at a larger scale, presented as a white-board/PostIt lecture.
Joe Armstrong and Simon Peyton Jones discuss Erlang and Haskell Tons of interesting stuff; Armstrong asserts that the core of Erlang isn't so much the concurrency as the error handling. Peyton-Jones notes that just because you're functional doesn't mean that you get concurrency for free. If you say a(whatever) + b(whatever) when both are side-effect free, in principle you can do a and b in different processes; but the admin overhead will quickly outweigh the concurrency gain if done naively. P-J on some Erlang feature: "Sinfully easy"
succ Java 1: Common Ground by Curt Sampson compares idioms from Clojure, Groovy, Ruby, Scala, and Haskell. .
Java.next #4: Immutability By Stuart Halloway; Ruby/Groovy/Scala/Clojure.
The multicore crises: Scala vs. Erlang by Niclas Nilsson.
Two Clojure-centric discussions of concurrency and state issues: Values and Change - Clojure's approach to Identity and State and Clojure could be to Concurrency-Oriented Programming what Java was to OOP.
Clojure - Functional Programming for the JVM by Mark Volkmann, nice compact run through Clojure.
Rich Hickey's Clojure Keynote from the 2009 JVM Language Summit. Notes by @al3x and link to slides. From the context, I suspect that Persistent Data Structures and Managed References is similar in its content. Very impressive deep-dive.
Simon Peyton Jones on Functional Programming and Haskell Audio podcast. Quote: "Robust guarantees of where impurity is happening."
Real-World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen.
Learn You a Haskell Light-hearted walk through Haskell.
Functional Programming at Facebook There's a touch of Haskell but this is mostly an Erlang success story. Note: this is from Malcolm Wallace's CUFP 2009 video collection; the others, I thought, mostly highlighted the glaring absence of real commercial applications.
A project I ran in 2007 and 2008 to investigate the application of concurrency techniques to a boring logfile-processing job. My conclusion was that dramatic gains in performance were achievable, but that the cost in programming difficulty was too high.
The Wide Finder Project First cut, with TOC.
Wide Finder 2 Second cut, with TOC.
Wide Finder Home On wikis.sun.com.
Wide Finder 2: processing 42GB of httpd logs, 300X faster than naïve Ruby by Mauricio Fernandez.
Wide Finder 2: The Widening by Alastair Rankine.