James Gosling learned a lesson in a recent blog post on the subject of scripting vs. strongly typed general purpose languages, and that is that readers of technology news are evil. Yes, I mean you. You guys make that scene where Steve Martin goes off on John Candy in Planes, Trains and Automobiles look like a scolding at a kindergarten. Hey, I expect it with me. I work for the Devil. But, people were telling James Gosling, inventor of the Java programming language and generally acknowledged smart guy, that he had to do more research on programming languages before he opened his mouth. Is nothing sacred?
I have to agree with Gosling's point. You've heard the analogy that if you have a hammer, everything looks like a nail. Well, too often, people who are expert in a scripting language think that it's a good idea to do EVERYTHING with it. A work colleague of mine from way back when was a huge fan of Perl, and he proceeded to make an entire web site, including business logic, in the scripting language. It was an impressive feat, and to this day, I have never seen quite so much Perl in one place. Unfortunately, the code was also a slow-performing, impossible-to-maintain hairball. Suffice to say, the client was not happy with him.
I'm an object fanatic, and I really think it's better to do as much as possible in a more strongly-typed, general purpose language like Java. Scripting code has it's place, just as the tape on a Christmas present has it's place. Tape holds everything together, just as scripting languages, properly used, are the glue that holds together business logic written in more rigorously typed languages. When you start to wrap your presents entirely in tape, though, you know you've gone off the Christmas deep end.
Since I find native code development to be reminiscent of "Member's Only" Jackets and 80s hair bands, I'm also a fan of "virtual machine" or "managed" environments. They lead to safer, less buggy code due to the addition of runtime services that prevent common problems by managing memory, checking buffer lengths automatically, and providing better error handling, just to name a small fraction of the things VM/Managed environments provide. That's why I consider it essential for modern backend code - and even hairy bits of client code - to be written in either Java or .NET.
That being said, I also agree with Dana Gardner's post yesterday about what was not said in a follow-up interview to Gosling's blog post, which is an elucidation of a previous point I made last December. Java's growth is slowing because a new ecosystem is developing around open source tools, and due to the proprietary nature of Java, Java has missed that boat. Of course, what Dana doesn't talk about is why profit-oriented companies should give away intellectual property, particularly when other areas of its business are hitting the shallows, but that's a question that applies to the open source development model in general.
Still, I don't think Dana proposes a viable alternative to the strongly-typed, general purpose language. Frankly, you don't want to do everything in a scripting language. If that piece of the puzzle isn't filled by Java in the Unix-inspired open source ecosystem, then what does? C++? I sure hope not.