Don't let the language choose you
By dannycoward on Mar 30, 2006
I have a mixture of feelings reading all the recent drama when James mentioned scripting languages. On one hand I love to see people who are passionate about their profession. On the other hand, some of the debate has been rather shrill.
The world has moved on 10 years since the Java language was shiny and new, when its c-like syntax was so reassuring to the generation of developers who have now learned it. I did feel like the exception at the time, because my first language was Smalltalk (aside from some tinkering in c trying to find rational points on elliptic curves which we won't go into). For me, now as it did then, the language debate mostly reduces to ongoing choices we each make about our development style and how it applies to what we're trying to do. And choices we should feel free to make differently in the future.
Am I organized or organic ?
One axis along which languages are compared is whether they are statically typed like Java or C#, where you have to declare as you use a variable what its type is, or dynamically typed, like Python or Smalltalk, where you can defer that decision till later. If you answer yes to one or more of the following...
- You spell check all your emails
- Your books at home are arranged in alphabetical order. repeat with CDs. Spices ??
- You look at a movie trailer and think, "I have that font."
- You have moments of truth
to do with parsley and the teeth of people you don't know well
Statically typed languages require you to plan ahead, declare your design intention, and take an organized approach, or if you do not fold your metaphorical napkin after eating, the compiler will catch you. With dynamically typed languages you can be much more experimental, forging ahead altering API protocols as you go, like a Jackson Pollack, living closer to the edge and in the world of runtime exceptions.
Do I already have a design in mind ?
Which is why many people love dynamically typed languages for prototyping applications, where an organic approach, and ad hoc design, can lead to quicker results. And that's not the only situation. Web programmers live on this edge all the time where both the application lifecycle is quick and the application lifetime is short. They need to rip and replace quickly, using languages like PHP.
The 'design as you go' style of programming is much a more weighty task if you're using a statically typed language (which is why I \*heart\* the refactoring tool in NetBeans). But when it comes to working in larger teams, where you're using APIs being evolved by other team members, that statically typed languages come into their own, despite some people's personal taste. Larger scale programming jobs require team members to define what interfaces they are using, and publishing, before they use them, usually meaning the they save development time and maintenance effort. The forethought required by static languages lends itself to the planning and communication required by larger teams of developers working on a larger scale system.
Is the language the only thing you choose ?
I think this is one of the reasons I find it hard to get really worked up in this debate, because the answer to this question is often no. If you choose a language, do you have access to enough supporting libraries or platform APIs ? Can you choose the tools you wanted ? Did your favorite vendor or community cabal support this ? Can you explain it to your IT Director without blushing ?
In .NET your passion for Visual Basic could lead to untoward consequences. Like limiting your potential to choose platform libraries, OS and hardware. Or even leading to a dead end !
Freedom to choose the language you like
This is a great start, but there's more coming: what with Java being statically typed and all, writing interpreters for dynamic languages is a tricky business, so Gilad started a new JSR to add a new bytecode, and maybe hotswapping, especially for this purpose, which we hope will result in more and better language engines for the Java platform.
(I'll have a related surprise of my own soon for you - stay tuned !)
So you see for Java SE, we're making it so you choose the language, not the language choose you.