Monday, March 30, 2009

A question for the future of programming tools

I probably shouldn't admit this, but I made the same coding mistake in two separate languages today. Basically it boils down to a situation like this:

Instead of typing

foo = foo + bar

I fumble-fingered it as

foo = foo = bar

The first instance was a string concatenation in ASP classic. That stuck a literal "False" in the middle of the XML that the code was supposed to return. The second instance was in ActionScript, which merely kept the value of a counter variable "running in place," as it were.

Both compilers/interpreters were perfectly happy to let me do something like that without any scolding whatsoever, despite the fact that the second language (ActionScript) is fairly strict-schoolmarmish about grammar and punctuation.

But it kind of drove home a question I've been noodling for awhile: Is the code development infrastructure having a mostly ignored tug-of-war with modern languages? Or is that even too simplistic. Tug of war implies two forces working in opposite directions; what if the tensions are actually more orthogonal to each other?

The tools that developers have available to them can be extremely "intelligent" in the sense that they handle indentation and can make reasonable (if not always contextually correct) guesses about what is intended. Some of them keep you on a short leash by scolding you for your mistakes even before you compile. Yet, at the same time, the explosion of programming languages in the last twenty-odd years has a downside. Almost anyone can invent a language and propagate it worldwide via online code repositories such as SourceForge. The predictable consequence is, of course that some are quite lax--with sloppy compilers/runtimes to match. When they're the only language in their class and become a de-facto standard (think JavaScript), that only compound the problem.

(And one not even invent a language ex nihilo, either. At one time or another, I've programmed in either the C programming language, its object-oriented sibling C++, and at least four of their cousins: Java, JavaScript, PHP and ActionScript.)

As for the resolution of the afore mentioned "tension" between languages and code development tools, I can't make much in the way of an intelligent guess at where that will eventually pull the whole universe of software development. What I do know is that the company that makes it easy to stay on top of a mainstream language--things like minimizing errors, boosting newbies up the learning curve, making it difficult to create bad design, and (most of all) making the tool itself as transparent as possible--is going to make an obnoxious amount of money in the years to come.