March 27, 2007

Just Another Dynamic Language Weenie?

I was mildly amused by a recent post on the Hacknot site. The author is clearly completely in love with himself (if this piece was written by a woman I'll buy a hat and eat it), and cannot even be bothered to get Stephan Diebel's name right. I really don't see the point of trying to put dynamic languages down - they exist, and those who don't want to use them don't have to. This is yet another boring case of some idiot fighting a religious war of their own imagining, and unfortunately it doesn't seem to contain much that usefully adds to the static vs. dynamic language debate.

About the most egregious example of false logic to be found is in the attempt to put down people who say "where's the harm - [dynamic languages] are just another item in your tool box, for use where appropriate". The author attempts to persuade us this argument is untenable because, he says, "... the same milksop argument is used by advocates of intelligent design ...". Because an argument is used irrationally by one misguided group of people doesn't make it any less valid in cases where it actually applies, however.

Overall I think the author is just looking for a group to refer to as weenies in a feeble attempt to prove (possibly to himself) that "I'm OK because you're not OK". The blog is output-only, with no apparent mechanism for reader feedback. Probably the author isn't interested in other people's opinions.

8 comments:

Anonymous said...

Hi Steve,

Congratulations on missing nearly every point made in the article. It must take dedication to remain that blinkered.

The author attempts to persuade us this argument is untenable because, he says, "... the same milksop argument is used by advocates of intelligent design ..."

Strawman. No such attempt is made. The article likens DL and ID advocates because of the similar effects they achieve and the way they try and excuse it - ie. diverting energy and attention from activities that drive the field forward. No one has claimed that an argument's validity cannot vary with context, only that it doesn't vary in these two cases.

The blog is output-only, with no apparent mechanism for reader feedback.

Hacknot had comments for the first few years of operation, however they were disabled when it became clear that most respondents were reacting to the article they thought they read, rather than the one actually written - exactly as you've done here.

unfortunately it doesn't seem to contain much that usefully adds to the static vs. dynamic language debate.

Of course it doesn't, it wasn't intended to. The article is about the deliterious effects of hype and the absence of critical thinking in the software development community. This is surely mindnumbingly obvious.

The author is clearly completely in love with himself ... Probably the author isn't interested in other people's opinions.

You have absolutely no idea about the author's view of themselves or the opinions of others. But don't let that stop you from addressing the individual rather the material. It is, after all, a weenie tradition.

But what's this I see?... you're a Python enthusiast. Well, well - now it all becomes clear.

Ed.

Steve said...

But what's this I see?... you're a Python enthusiast. Well, well - now it all becomes clear.

But not an anonymous coward, Ed.

The article is at least as bigoted as you claim I am blinkered. In terms of critical thinking it takes a step backwards from rational debate.

Of course hype and the absence of critical thinking are harmful, but they are by no means exclusive to the software development community, and nor are they as ubiquitous as you would apparently have us believe.

If, as you claim, responses to Hacknot didn't address the points made in the articles, isn't the obvious conclusion be that the articles simply didn't make their points with sufficient clarity?

Paul Boddie said...

I think the article would have a lot more merit if the author focused on the social aspects, particularly the hype, around the adoption of Ruby and its satellite projects. I'm sure Python also got a certain level of hype in the early days, but the remarks about bandwagon jumping and those heavily promoting XP (and in many cases Java, the author should note) are quite justifiable, in my view.

As for the level of technical merit in the author's critique of dynamic languages, it's telling that the author thinks "removing all the type qualifications" would turn a Java program into any kind of reasonable Python representation of that program. Any non-trivial level of experience with both static and dynamic languages should suggest that some kinds of architecture problems are more elegantly solved in dynamic languages, particularly where a static language imposes incompatible type system restrictions. (I believe that things like runtime code modification are less than central in providing such benefits.) If the author wants to argue with people about this, I suggest rubbing up against the Lisp community for a while.

As for the "intelligent design" comparisons, the argument is disingenuous: "intelligent design" is a belief system passing itself off as science, promoted at the expense of science and the proper education of future generations. Meanwhile, any gain in dynamic language popularity is hardly occurring at the expense of the computer science discipline, and suggestions that the use of dynamic languages is some kind of harmful alternative to static languages assumes a scientific or engineering consensus that just isn't there.

In short, it's an article criticising people for clinging to an ideology written by someone else clinging to an ideology. Ignoring the "intelligent design" mudslinging, there are some reasonable points: criticisms which mature communities should hear and work objectively to remedy.

Paddy3118 said...

I've heard it before, and no doubt will hear it again with the language list shifted along:
C -> C++ (Wow objects)
C++ -> Java (Wow compile once, run anywhere, Jolt Cola!)
Java -> Dynamic languages (Succinct, dyyyy-namic, and no compiling)
Dynamic -> ...?

Check-out Wheel of Time

- Paddy.

Douglas said...

I find it quite humorous that this is coming from a Java die hard. How soon we forget the past.

I remember back in 1997, trying to get my CS department to adopt Java as the language for teaching OO. It was a three year uphill battle. At the time there was a lot of press from the C++ camp that Java was Bad with a capital 'B'. He is using the same tired arguments against dynamic languages. There were articles in every Dr. Dobbs for two years stating the evils of Java. The idea that having no pointers and using garbage collection were quaint, slow, and ultimately adding too much inflexibility and overhead. The Idea of collections of different types being ill conceived and leading to unmaintainable code which could not be properly debugged. The argument that is could never, ever be fast enough.

I have the stack of periodicals in my book case. I break a few choice issues out every so often for a laugh. A quick search on the web gives this gem:
10 Reasons why Java is Bad for you

At the time, these arguments were not baseless, and the Java community stepped up and addressed each one in turn (the ones worth addressing anyway). Maybe that will happen with the dynamic languages. That sure seems to be the case. The ruby folks are looking long and hard at their VM implementations and trying to solve the problems that face them. Python is moving forward with Python 3.0 (no longer Python 3000). The haskell community is making major strides. Erlang is simply beautiful. And of course there is the Gorilla in the corner, Perl 6.

Now MIT is teaching a dynamic language in their intro to comp sci courses, replacing Java.

Are dynamic languages the new Java? I hope not. I think we can do better.

Anonymous said...

it's telling that the author thinks "removing all the type qualifications" would turn a Java program into any kind of reasonable Python representation of that program.

Another strawman. No such claim is made. There is an attempt to intuit how Diebel's claim might be true, through a bit of visualization. There is no claim that the result had any fidelity to what Diebel intended, nor to a Python program in general. Hence the subsequent enquiries and appeal for data.

In short, it's an article criticising people for clinging to an ideology written by someone else clinging to an ideology.

That's a fascinating comment. Perhaps you can tell me what ideology the author is clinging to? What belief/s does it involve, and where is the evidence in the article that such beliefs are held?

Ed

Anonymous said...

Of course hype and the absence of critical thinking are harmful, but they are by no means exclusive to the software development community, and nor are they as ubiquitous as you would apparently have us believe.

Of course they're not exclusive to the software development community - who claimed they were?

If, as you claim, responses to Hacknot didn't address the points made in the articles, isn't the obvious conclusion be that the articles simply didn't make their points with sufficient clarity?

That's one of several possibilities. For example, it could also be an indication of the ease with which emotion can cloud reason - for the writer, reader or both. One does have to wonder, when a reader's misinterpretation can be demonstrated simply through literal reference to what is written.

Paul Boddie said...

Paul: "it's telling that the author thinks "removing all the type qualifications" would turn a Java program into any kind of reasonable Python representation of that program."

Ed: "Another strawman. No such claim is made."

Right, back to the breathless essay where the author thinks we're hanging off every word...

"Suppose I had a piece of Java code and went through it removing all the type qualifications. Would that reduce the code volume by 80 to 90 percent? No, I don't think so. Maybe there are other omissions that dynamic typing would make possible, such as obviating adapter-style classes and some interfaces. But even including such omissions, claiming an 80 to 90 percent code saving seems a bit rich."

Sure, the 80 to 90 percent figure is pretty excessive, but the author only hints at the additional work you'd need to do in order to make "Java code in Python" or "C++ code in Python" something that someone would have written had they started out in Python. Of course, the author doesn't claim that a "type-stripped" program would be idiomatic Python, but Diebel's claim is hardly founded on observations or suspicions about "type-stripped" Python code. So whose is the strawman?

Ed: "That's a fascinating comment. Perhaps you can tell me what ideology the author is clinging to?"

Well, let's see past the name-calling. For example (one of many):

"Oh dear, I thought. I'm getting a bit of a feeling myself — which is that Hansson's feeling that dynamic typing makes a difference at the project level are no more significant than my feeling that they don't! In other words, neither of us really knows."

In fact there are a number of people who take various deficiencies of dynamic language environments seriously. Calling dynamic language users "weenies" (even though the Ruby hype community does deserve a certain degree of fanboy labelling) seems to be more of a cry for attention than anything else - a shame given some of the valuable points in the text. But back to that ideology, quoting Ruby nemesis Les Hatton:

"They [dynamic languages] will appear, hang around for a while, and then disappear, he explained."

Something which will be news to Lisp users, or are they "weenies" too?