The price of freedom is eternal vigilance.
Kevin Barnes has written a nice piece on “freedom” languages, his word for Ruby, Python, Perl, etc. He compares these with “safety” languages, such as C++, C#, Java, VB, Delphi.
He starts off by saying “I picked the terms freedom and safety because they represent a philosophical split that I’m not sure some of the advocates of these languages realize is present. You can sense this split when you listen to the words that the various pundits use when discussing the merits of different languages.” and continues to compare and contrast the strengths and weaknesses of each kind of language.
In the end, he decides that “Safety isn’t safe and freedom isn’t free” but that he prefers freedom but notes that "the price of freedom is eternal vigilance". Too true, and I think that’s where I have a problem with freedom languages and the kind of environments that I’ve worked in. Sure it would be nice to let everyone loose with Python or Ruby and I’m sure the very good and very disciplined can be much more productive if they don’t have to keep building artificial walls to keep their concepts where they want them but what about the rest of us? I’ve dabbled with Python in the past but I find that I like the rigidity of safety languages because it protects me from myself. When I’m feeling good I can build constructs that will help support me when I might otherwise give in to the quick fix… I’m a pretty disciplined guy and even I hear the siren’s song of the hacky fix sometimes how do the less disciplined fair in such situations when using languages that are more forgiving? Doesn’t everything just quickly degenerate towards no design?
Then again, I’m not sure that some of the truly appalling C++ that I’ve seen over the years could have been any worse, so perhaps Kevin is right; safe isn’t safer anyway, it just appears to be… I guess it’s time to get a Ruby book and learn a bit more…