A Review of the Art of the Metaobject Protocol (2010) [pdf]
There’s some real gold in here:<p>&gt; Though it seems funny now to think that Scheme lexical environments
were ever difficult to understand, you must take my word that in 1976, people
with PhDs in computer science required careful explanation with lots of
examples to get it. In fact, many people — myself included — had to write
lexical interpreters to understand the interactions that led to the external
behavior, and understanding the interactions was required to get it.<p>Nowadays lexical scope is the default, and dynamic scope is hard to explain to folks who don’t understand it yet.  Makes you wonder how many hard problems would be easy with a different frame of reference.<p>&gt; Nevertheless, in 1980—to pick a round date—the AI folks and programming languages folks parted ways. And with their departure came programming language winter.<p>Although I imagine that a lot of folks would strongly disagree, there is a very real sense in which programming languages haven’t really progressed since the early 80s.<p>&gt; These interpreters became Scheme, and from them they
learned that function calling and message-passing were fundamentally the
same, a lesson still not well and thoroughly learned today.<p>Surprisingly, this still seems true a dozen years later.