Larry O'Brien mentioned Joel Spolsky's "Law of Leaky Abstractions" in passing while discussing Moore's Law and Silver Bullets. I don't really want to get into his main topic; I was diverted by this comment:
I strive to keep this in mind while teaching:
class Foo {
public static void Main(string[] args) {
System.Console.WriteLine("Hello, World"); }
}
might be the most trivial C# program there is, but understanding every word and punctuation mark requires a survey of a dozen or so topics, each of which involves abstractions with plenty of leaks.
Compare that to Smalltalk: Transcript show: 'Hello World'. Up there, as Larry said, there's a whole lot of leaking going on. Before you can even get to the simple stuff, you have to explain wads of utter trivia. I'm not going to claim that abstractions don't leak out in Smalltalk - but I am going to claim that they don't raise a flood tide. In C# and Java, they don't just leak - they jump out and scare off the children and animals.