Plus ça change

Wednesday, 3 Oct 2007

Cédric Beust:

In effect, Erlang seems to be moving locks scattered in various places throughout your code (e.g. synchronized blocks in Java) into one single bottleneck. No matter how efficient this bottleneck is, I’m having a hard time imagining that this approach scales as miraculously as Erlang advocates claim. At least, Java gives me complete control on the coarseness of the locks that I use, and also absolute freedom on where I want to place these locks.

This sounds strangely familiar.

[In an alternate universe where it is 12 years ago:] “In effect, Java seems to be moving deallocations scattered in various places throughout your code (e.g. object lifecycles in C++) into one single garbage collector. No matter how intelligent this garbage collector is, I’m having a hard time imagining that this approach does the bookkeeping as miraculously as Java advocates claim. At least, C++ gives me complete control on the coarseness of the memory allocations that I use, and also absolute freedom on how long I want to retain these allocations.”

Yeah, I’ve seen that movie.

(The analogy has flaws. The similarity is not close. I know. Neither is it too superficial for the analogy to be useful.)