development

Freedom vs. Safety

August 24, 2005 17:37:58.384

Now here's an article I can really get behind - Kevin Barnes draws a rough categorization of development languages - between "freedom" languages (Smalltalk, Ruby, Python, et. al.) and "Safety" languages (Java, C#, et. al.). He's made some very good points, and also makes it clear that his (and my) side of this argument does involve a few tradeoffs. First off, take a look at his definitions:

What, pray tell, is a “freedom language”? Freedom languages are those languages that put the individual programmer at the center of their philosophical world. They work hard to remove any language constructs that reduce programmer freedom, and add the most powerful constructs available. Many are post-modern languages and most tend to be syntactically dense.
The other kind of language is the “safety language.” Safety languages think first about the creation of contracts between modules, objects and functions. They focus on teams rather than individuals. They remove language features that are confusing or frequently misused so that there are fewer opportunities to make mistakes and so there can be clear separation of concerns and maximum verifiability. These languages are full of barriers and check-points and well-defined paths and they tend to be syntactically verbose.

With that out of the way, we get to something I've always found irritating - the presumption by "safety" advocates that the (so called) scripting languages are just toys:

The advocates to safety languages tend to deride freedom languages as “scripting” languages or “fringe” languages. They are only fit for hacking out small projects and putting together demos and whatnot. They focus on static-type-safety as one of the most fundamentally critical elements for ensuring program completeness. They may also talk about execution efficiency (memory, speed, etc). They tend to view freedom languages as improper for a larger team of programmers with mixed skill sets. The heart of their arguments is basically that these languages are not “safe” for large projects.

Kevin makes some great points about this, and I'm not going to try to quote his entire article - you should just read it and see what you think. I do like this, from near the end of the piece:

There is one other strange quality to the safety languages. They all look the same. The safety ideal has manifested itself in even the simplest elements of syntax. The providers of safety languages want constructs and syntax that will be comfortable to people who write code in other “major” languages. They want companies to be safe from an inadequately small developer pool. Many languages that started out looking different (Basic or Pascal) have over time morphed to take on the look and feel of the other safety languages. It’s very easy for someone familiar with C++ to read C# or Java or VB or Delphi. They have a lot harder time figuring out Ruby or Smalltalk or Python. Think I’m exaggerating?

Kevin points out that this presumed familiarity is less valuable than you think - stepping into any large project, the idioms and strategies (i.e., the design) used by the developers will matter more than the language selection in terms of getting up to speed. In any case - as I said - read the whole thing. I agree with almost everything Kevin's said here, including his caveats.

Comments

all the C family languages look the same

[Isaac Gouy] August 25, 2005 15:32:33.000

the safety languages. They all look the same
How strange, the archetypal safety language Ada doesn't look at all like Java.

(Oh, "safety languages" is just another label for the commercial mainstream C family languages!)

Computer Languages not like a Stealth Fighter

[ anonymous] August 25, 2005 18:16:43.000

On Kevin Barnes's blog entry, Greg Buchholz introduced a "stealth fighter" analogy:

http://kerneltrap.org/node/5591

I've addressed that analogy on my blog here:

http://inglang.blogspot.com/

In summary, for business systems at least, we're not programming a stealth fighter, we're programming the entire armed forces while the battle is going on. This day in age, we probably need to keep reevaluating fundamental assumptions every day.

Compared to society’s skill and knowledge of physics and engineering, our knowledge, tools, and skills of human nature, morality, psychology, changing market patterns, and politics, and our predictive ability in those areas, are still back in the Middle Ages.

We need tools that can quickly represent, reflect, and leverage our rapidly accelerating increase of knowledge and rapidly accelerating changing vocabulary in all these areas.

thank you for being more specific

[Isaac Gouy] August 25, 2005 20:49:44.506

for business systems at least
Thank you for taking the trouble to qualify your comments, even in this minimal way.

 Share Tweet This
-->