Saturday, January 14, 2012

STIC Conference Teasers: Big POOP

The Smalltalk Industry Conference list of talks is now up. One of the featured keynotes is Sam Adams,
with a talk entitled "Massive Parallelism + Object Oriented Programming = Big POOP". When he talks about massive parallelism, he's talking far beyond what we get today and questioning some of our fundamental assumptions. This is the same work that David Ungar talked about at the Splash conference last fall, which had some nice lines about how we can get much more parallelism if we're not so hung up on getting the right answer...

Here's Sam's abstract:

Object orientation has been very good to programmers. So has Moore’s Law, at least until we recently hit the single thread performance wall. We are now solidly in the age of parallelism, be it multcore, manycore, or massively parallel distributed systems. Both industry and academia have been wrestling with the complexities of this new reality for some years now, and yet no clear-cut solution has emerged to deliver both high performance parallel processing with high programmer productivity for mere mortals.

Since 2008 at IBM Research, David Ungar and I have been using Smalltalk along with a new manycore parallel virtual machine to explore new programming models in this space. In this talk I will share the history of this work, lessons learned, and where we think the future lies for massively parallel object oriented programming in Smalltalk.


  1. Concurrency on multi-core machines and getting instances of Smalltalk 'talking to each other' in some sort of distributed, collaborative way, perhaps like Erlang nodes can do, would be a huge boon for Smalltalk.

    The world now cares less about optimizing 'in the small' than it does about aggregating data 'in the large' and making objects behave more like real-world processes than Platonic concepts.

    This is why I think so highly of Erlang and often wish there was a way to bring the two worlds together.

    That said, I *love* Smalltalk's syntax hands-down and on deeper reflection and experience really only miss (lazy) list comprehensions as queries or generators in Smalltalk, which can be simulated in BlockClosures only so far.

    The gap that seems hard to close is the gap between Erlang's share-nothing, copy-everything philosophy and Smalltalk's dynamic world of objects that share quite a lot, and have many of the same synchronization/deadlock issues of other platforms, including native ones, that must share scarce resources in a disciplined way.

    If I could work on a compiler/programming language team, that would be the problem that would fascinate me most as an engineer... finding the right balance to make building such complex, living and constantly interacting systems in Smalltalk both productive and intuitive for developers.

    1. What a perfect lead-in to my second post on the subject, introducing a talk on a language that combines a Smalltalk object model and an Erlang approach to concurrency.