Are static or dynamic languages more maintainable?

So the question is: are dynamic-typed languages (ruby, python, smalltalk, etc.) easier or harder to maintain than static-typed languages (Java, C#, etc.)? It seems there are arguments both ways.

On the one hand, dynamic languages tend to be a bit more concise, and reducing code size is a great way to simplify maintenance. On the other hand static languages typically support better and more intelligent tooling, which is also a great way to simplify maintenance.

Ola Bini has some thoughts, but has so far been unable to come up with any hard data one way or another. is there any?

The Maintenance myth | Ola Bini: Programming Language Synchronicity


  1. I don’t have any hard data.

    The most important thing for me when it comes to maintenance is the tool support and in particular refactoring. Sure the eclipse auto compilation integrated debugger and subversion integration are nice features, but emacs, perl and a command line debugger work just as well for me. Eclipse refactoring is the key selling point for the entire java dream. I’ve not tried the refactoring tools available for dynamic languages, but it would be interesting to find out.

    Reading this debate I can’t help but be reminded of Derek Sivers’ Point number 7 is that programming languages are like girlfriends: The new on is better because you are better. Could it be that people moving to dynamic languages from static languages find it easier to write maintainable code having honed their skills with a static language? Could it be that the staticness or dynamicness of the language doesn’t matter at all?

  2. Hi,

    I don’t have any hard data either, but in my experience dynamic stuff has always been easier to maintain as compared with static stuff (Ola’s post actually made me realise this).

    I’m just asking myself it the better and more intelligent tooling isn’t just a necessity, a consequence of the volume of code!!!

Comments are closed.