Blog

Programming Environments Should Envolve

There are a lot of new features being introduced into programming languages and platforms every year. Somethings seem to never change tough. I think there is a lot of room for improvement in the way programmers work and in this post I’ll try to explain some of my view points on how to improve things.

The first thing that strikes me as odd, in the XXI century, is how dependent on file we are. Is there a reason to organize code in files as we do? Obviously we can do a whole billion line(s) application in 1 or 2 files, but what I mean is why did programming languages made such an effort to keep things as abstract as possible (i.e. classes) but we keep using different files for them?

How the code is compiler or organized should be the work of the IDE, not the programmer. The way I see it, the programmer should open/write/save classes and not files, and when telling the compiler what to build or not, the same rule should apply. This could have impact not only on the productivity but also on the way people see a project, for example, when committing some changes to a version control system one would be changing a class, not one or several files.

Another subject is the availability of so many languages and syntaxes available. I’ll be using .Net as the most obvious example, but other examples apply (i.e. there is a javascript to objective-c translator). On .Net every language is compiled into CIL, an intermediate language, no matter what’s your original language. There are a few examples of code not easily translated from one language to another, but still, doesn’t it make sense that a programmer that likes VB or Boo better than C# should be able to edit and change that code in his/her native language instead of (i.e.) C#?

How the process would work is subject to discussion, the way I feel, is that this is a job for something as “central” as a version control system, imagine you commit VB code to a C# main tree and it automatically translates it to C# and back to VB when you update your tree. There are some cases where this wouldn’t exactly be possible, or at least would require some tuning by the developer, but I imagine that for most projects this would work just perfectly.

Finally, each programmer has its would preferred style, some like their parenthesis or commas followed by a space, others don’t. This is syntax formatting and it’s easy specially if you’re using a decent IDE, but each project has it’s own style convention, it becomes a little hard (or at least unproductive) to accommodate both the programmer’s preference and the main tree conventions. Also, there are sometimes some preferences that could be applied to languages without the need for a new language, in my case, the thing I find most unproductive in Objective C are the [ ] for messages… usually called methods on another languages. Why not allow people to write the code with their preferred style and syntax regardless of the main tree settings or language?

This would be a job for either the IDE or the version control system, but as with the other ideas, it requires some heavy changes on the way people think and work nowadays. Maybe I’m overestimating the benefits of this ideas or missing some critical benefits or how things are today, but I believe it’s always worth exploring any new way of working even if it means a low 0.1% productivity gain.

Post to Twitter Post to Delicious Post to Digg Post to Facebook Post to Reddit Post to StumbleUpon

Leave a Reply

For spam filtering purposes, please copy the number 4340 to the field below: