Kevin of hypotheticalabs.com recently attended the Erlang Studio session in Chicago, taught by Joe Armstrong. Lucky for us, he blogged day-by-day a summary of the class!
There are lots of interesting tidbits here... it must have been fun to observe Joe in action. :-) Below is one particularly juicy morsel from Day 2:
Joe made several points during the lecture segments which struck me as totally obvious yet totally unexpected. I can’t wait to trot some of these out the next time I’m discussing the merits of Erlang with my non-enlightened colleagues."
- Shared resource concurrency evolved before networked computers — All this stuff about locks and synchronization comes from the pre-networked phase of computer history. It’s one of the reasons why concurrent and distributed computing in languages with these primitives is so difficult.
- What if the OOP part of other languages (Java, C++, Ruby, etc) had the same behavior as their concurrency support? What if you were limited to only creating 500 objects total for an application because any more than that would make the app unstable and almost certainly crash it in hard to debug ways? What if these objects behaved differently on different platforms? — This is a stunning (at least to me) point. Concurrency is only going to become more important in the future. Why do we put up with such a sorry state of concurrency support in existing languages?