I empathize with Smalltalkers and Lispers who are in a perpetual state of been-there-done-that. Tons of “new” technologies (on-the-fly code reloading, edit-and-continue debugging, refactoring, and anonymous functions, among others) have been available in Smalltalk-80 since its inception (and frequently in Common Lisp’s predecessors and peers since before that).

That said, when I read C# developers lamenting that .NET 3.5 is only a bad imitation of Smalltalk-80, I have a slightly different reaction than they. Yes, I wish I could program in Smalltalk (or its successors, such as Self more often, and yes, I wish Smalltalk had wider adoption, but, at this point in my life, I also recognize that neither Smalltalk nor Common Lisp will ever be a mainstream language. Although I may scream “But we already had this!” from time to time, in my gut, I know that our last best hope is to see existing mainstream languages steal as much as possible from Smalltalk and Common Lisp. To that end, I’m actually excited about C# 3, which I feel adopts more Lisp- and Smalltalk-like features than any other mainstream language I’ve yet seen. Is it perfect? Is it really on par with Smalltalk or Common Lisp? No. But in the end, I’d much rather have 90% of Smalltalk available everywhere than 100% of Smalltalk available only in a few nooks. This is a step in the right direction.