Meta Programming has been a hot topic amongst the Java community for a while now. We have Jython and Groovy and other "add-ons" that help make writing code in Java less confining. The Ruby crowd has been running around screaming "Oh Oh!! Pick me Pick me!!" for the last couple of years, but it just hasn't caught on. I enjoyed my days writing Perl, mainly because I was learning how to write code, so I didn't really know any better. Then I "upgraded" to PHP, primarily because it was easier on my web design partner. I was then asked to move to Java by my boss because it was the "cool language to use" at the time. Then I got out of programming for two years to travel around the world.
When I came back, I bumped into IDEA and I knew Java was the language for me. It made writing code so much easier. I was CTRL+Space and ALT+Enter'ing my way through programs in no time. Whenever someone wanted a project done, I pushed for it to be in Java. The language was far better than PHP and easier to grok than complex Perl. And, oh yeah, it had a really nice IDE.
Java took off because of IDE support. As much as I don't like JBuilder, I think we have Borland to thank for this... and lets not forget those companies that Borland has purchased :-)
From time to time I wonder why Perl and PHP didn't take off. PHP had problems with a consistent "interface". There was a special library for everything, and they all worked differently than the others like it. The first thing you did back in the day, was write a database abstraction layer so that it would be easy to switch between databases if you needed to. The second problem was no IDE support. Until recently, there was no CTRL+Space for PHP, no environment that allowed you to quickly view/test your changes. Perl libraries were consistent, but the web framework was slow and clunky. Toss in the same lack of IDE and you have a language that is relegated to quick one off scripts that performed a specific function in a specific domain.
Don't get me wrong, I know that large systems have been built on both PHP and Perl. I believe Yahoo! is using PHP on new systems that they create, but PHP now has IDE support and PEAR (PHP's answer to JDBC and DBI as well as some other sensible aggregations of functions). But I think those large systems are the exception and not the rule. Unless I was building a website that was required to hook into some very specific PHP library, there is no way that I would ever go back.
I think Ruby looked at the DSLs (Domain Specific Languages) and learned what was good and what was bad and came up with a nice language. If Ruby ever gets IDE support, there could really be a revolution. But until Eclipse or JBuilder or IDEA starts putting Ruby support in their tools, it will never catch on like Java. No language can be the ubiquitous language, the most popular language, the most "corporate" language unless it has IDE support. Reality is, enterprises have to be able to hand their developers a tool that will help them get their jobs done.
Enter Language Oriented Programming. Sergey Dmitriev, the CEO of JetBrains, seems to be onto something. It looks like they may be working towards creating an IDE that will allow them to easily add new languages. The LOP paper takes a much more CS oriented look at why and how, so if you are interested in the future of writing code... You should read the LOP article.
Posted by carl at November 23, 2004 08:33 AM
Comments