I think the second one is a "lost in translation." I can imagine that there's way of presenting the punchline so that it'd be funny, but I couldn't give you the words to say it in English.
The first joke - thoughtful irony (the plumber prides himself in being covered in shit - but is it worth it?). The second is very uniquely Russian (I only kind of get it) - somehow, vulgarity with a good comeback is funny. The third makes fun of overvaluing superficial social status (being in the aeroplane industry), which I could see as an internal stereotype of Jewish culture.
I don't speak Russian, but I had a lot of Russian friends growing up. So I've heard a lot of jokes fall flat in translation from Russian. I thought I recognised the sound.
Garbage Collection would only inspire him to find another plumber joke, I guess. Because GC is the same pain in the arse as malloc, except the former gives a good excuse for writing awful applications, while the latter doesn't.
I've never seen an application impacted by generational GC. I have seen Mark/Sweep slow down an application though.
I have seen Yacc/Lex based C code perform slower than Smalltalk. I also know of instances where block cipher code in C ran 3% slower than equivalent Smalltalk code.
When a C program is worse than its high-level counterpart, it usually means poor choice of some dynamic data structure or algorithm on the C side. As a rule high-level languages provide well-polished, high-quality implementations of most common structures, e.g. all kinds of associative arrays, while a C programmer is left with his own basic knowledge of this kind of stuff.
The garbage collector alone can't make Smalltalk better than C, it's just impossible unless some very advanced optimizations are used, say, compile-time decisions to allocate an object on the stack (if you look at the latest JVM, for example). But even then in C, these decisions can be made by the programmer.
In the cases I am talking about, a good C programmer would've created buffer caches which would've pre-allocated memory and reused it. Instead the programmers in question naively malloced when they needed it and freed when they were done. A generational collector does something almost as good as this for you -- they make transient objects very cheap.
Also, the Smalltalk in the block cipher case was written by a very good Smalltalker who knows how to write code that results in fast JITed machine code, who also had the luxury of requesting custom primitive operations like rotations on 32 bit registers. So if the C programs in question had the same level of programmer working on them, they would no doubt have blown away the Smalltalk implementations.
I agree that High Level implementations just get you pretty good for a little effort, and that C will get you darn good for a premium effort.
The analogies with programming are brilliant. The jokes probably aren't the best jokes in the world (although I can certainly see their charm by translating them back to Russian on the fly), but author's point is to show the dark, depressing side of our business.
The second, not so much.
reply