Are libraries the new languages?

What is the next step in the evolutionary tree of programming languages...the new languages I have heard of seemed to fall in the existing classifications: it integrates such feature from language A, such other from language B and so on...At the same time, object oriented languages can be enriched a lot just by creating new libraries. via [Curiosity is bliss]

No, libraries aren't themselves the future of programming innovation. Yes, the time spent mastering a modern library like the Base Class Library or the Java SDK is much, much larger than the time spent mastering the syntax of C# or Java. Yes, the time spent choosing methods is probably larger than the time spent choosing operations on the results of those methods. BUT...

Most programmers haven't really immersed themselves in non-imperative programming. Different languages facilitate different thoughts, different approaches to problem solving. You don't understand how a programming language solves problems by reading the grammar, any more than you understand Spain by the first chapter of a Spanish tutorial. I'm not going to say that declarative programming is always better than imperative programming, but there are certain problems that are really hard to even understand in an imperative language that just "fall out" when you think about them in Prolog. The reverse is also true.

Recently, I read this interesting article on generating an unending stream of digits for pi. Five lines of Haskell code. It took me about 50 lines in C#. Now that I get it I could compress the C# code significantly, but if I could "think in" Haskell, a five-line block of code is probably something that could be "grokked" in a single bite. So "generating digits of pi" is something that can be thought much easier in Haskell than in C#. Similarly, thinking about hardware is easier in C than in Visual Basic. Thinking in Web pages is easier in PHP than in Pascal. Etc.

Back in the 80s, I worked in Prolog quite a bit, including Borland's Turbo Prolog dialect. At that time, I could switch between Prolog thoughts and C thoughts very fluidly and did so on a problem-by-problem basis, just as someone might switch between French for romantic thoughts and English for engineering ones (isn't that what they say English is good for?). It's like being twice as smart -- you really bring to bear more of your brain's potential. It's a terrible shame that the world of multi-language programming died away.

.NET provides the possibility for a rebirth of that type of programming. Not only is language interoperability easier than it's ever been, you only have to learn one library! It's really a fantastic opportunity that, sadly, hasn't taken off as quickly as could be hoped.

There is a subtlety to the "class libraries are the new language" argument that I've ignored -- the design of a class library may be such an embodiment of a certain programming approach that it discourages alternate programming approaches. There've been a couple comments saying exactly that about the BCL, but I've asked and haven't been able to get anything concrete from anyone credible, even if I've promised not to reveal names. (If you want to make the case but don't want Microsoft to know who's complaining, you can email me from the homepage at http://www.ThinkingIn.NET/ and I'll sing it loud and long.)