* * * * * More forays into multiprocessor programming > From: "andrew cooke" > To: sean@conman.org > Subject: Erlang bugs > Date: Wed, 23 May 2007 08:12:35 -0400 (CLT) > > Hi, > > Found your page [1] (which references my Erlang Sudoku solver) via > Technorati. > > I can't for the life of me remember exactly what the cause was for the bug > that you mention in that post, but I am pretty sure it wasn't to do with > messaging or otherwise related to concurrency. A better explanation of why > it was hard to track down is that the program is largely “indeterminate” in > that the flow of control is unpredictable (because of random choices rather > than concurrency itself). > > However, when I added extra communication for the “community” version— > http://www.acooke.org/cute/CommunityS0.html [2]—that did have serious > deadlock issues that were directly related to concurrency. And I was > surprised at how easy they were (ie how easy it was to introduce errors)—I > had somehow convinced myself that Erlang made everything much safer. In > retrospect its advantage is not that Erlang's message passing somehow > magically avoids deadlocking, but that (1) it provides a clean framework > for thinking about message passing that's nicely isolated and easy to read > and manage and (2) assuming you stick to the pure functional parts of the > language, state is already explicit and so easier to reason about. > > Andrew > > (Couldn't see a way to comment on the page, so emailing instead) > Just another datapoint that writing concurrent programs, even in a langauge like Erlang [3] which makes it easy, isn't easy. [1] gopher://gopher.conman.org/0Phlog:2007/05/21.1 [2] http://www.acooke.org/cute/CommunityS0.html [3] http://www.erlang.org/ Email Sean Conner at sean@conman.org .