JOB REFERRALS
    ON THIS PAGE
    ARCHIVES
    CATEGORIES
    BLOGROLL
    LINKS
    SEARCH
    MY BOOKS
    DISCLAIMER
 
 Wednesday, October 05, 2005
More on the dynamic language wave, but leave the poor vendors alone

The good folks over at Relevance have blogged again, offering something of a backhanded compliment to the new features of C# 3.0:

The argument that I infer from Ted’s piece is "Look! now we can have (some of) the expressiveness of dynamic languages with (most of) the safety of a statically typed language." ... But just because C# now looks a little more like some dynamic languages, don’t make the mistake of assuming that two worlds are converging. In the most important ways, they are as different as ever. Here’s why: Languages like C# "bake in" specific and detailed rules for inheritance, encapsulation, delegation, how symbols are interpreted, etc. In dynamic languages, similar rules exist, but they are not part of the language core. Instead, they are idiomatic extensions built within the language itself. Development teams can follow these idiomatic rules. Or, they can build (and enforce!) their own rules, specifically tailored to their needs. This has huge implications for productivity. In dynamic languages, you get to build the language up toward your domain, while you build the solution down.

Well, I'm going to take some umbrage at the inferred argument, in that I would phrase it as "Look! Now we can have some of the expressiveness and flexibility of dynamic languages without sacrificing the safety of a statically-typed language", so I'd say they got it half right. But the idea that a dynamic language doesn't have specific and detailed rules regarding inheritance, encapsulation, delegation, and so forth, is a fallacy: they have them, they're just not the same rules as those for a statically-typed language. Make no mistake about it: if C# or Java wanted to have the ability to support type reification like that supported by languages like Self, it could do so without too much difficulty--code could modify the core type tables in memory, adding methods, removing methods, even hooking in to the basic method execution processing code that the JIT compiler creates on the fly for both environments. The basic truth here is that the creators of the JVM and the CLR didn't believe in such things, and more importantly, didn't believe such things justified their costs in general-purpose programming langauges.

Folks, we need to realize something: all this "expressiveness" is like putting craftsman's tools in your hands; in the hands of a master craftsman, amazing things can result, but in anybody else's hands, it's putting a loaded gun into the hands of a child. YOU may be good enough to be disciplined enough to keep the rules of your types in your head when programming with Ruby, but are all of the programmers on your team equally gifted? Are all of the programmers that will follow you so gifted?

There's something else that they call out here, though, and that's the part that irks me:

So why has the static/dynamic debate staggered on for so long? I think we could get closer to some answers with better choice of terms. "Static" vs. "dynamic" is highly misleading. I propose we use a new set of names: vendor-oriented vs. developer-oriented programming, or VOP vs. DOP. So who do you trust most: vendors or developers?
I find this argument highly unfair and totally bigoted. It essentially suggests that vendors can't do anything right, and portrays them in the traditional "corporations are the root of all evil" that right now so deeply permeates the American social landscape. It also portrays everything done by "non-vendors" (whomever they are) as pure and white and good; never mind the ten thousand open-source Web framework projects on Sourceforge that all do mostly the same thing, just with a slighly different vision or API layout. (Quick, somebody tell me something that Ruby can do that ECMAScript can't. Or Cincomm Smalltalk, for that matter.) For crying out loud, guys, get off the Libertarian rally train for a moment and at least cough up some kind of concrete criticism--after all, after all, HTML was defined by evil vendors, too (in the none-too-subtle guise of a "standards committee"), and I don't see us rushing to abandon that any time soon. Nor do I want us to. If you choose to distrust all vendors, then feel free to do so, but riddle me this: if you sell code for a living, aren't YOU a vendor too?


.NET | Java/J2EE | Ruby

Wednesday, October 05, 2005 12:56:59 AM (Pacific Daylight Time, UTC-07:00)
Comments [5]  |  Related posts:
More on Types
On Types
Say that part about HTML standards, again?
Programming language "laws"
Ted Neward on Java 8 adoption
"We Accept Pull Requests"
Tracked by:
"Dynamic languages, type systems and self-modifying systems" (The Blog Ride) [Trackback]
"http://9ng-information.info/45143573/index.html" (http://9ng-information.info/4... [Pingback]
"http://9nd-information.info/63161454/index.html" (http://9nd-information.info/6... [Pingback]
"http://9nq-information.info/04817065/mountain-oyster-club-art-show-sale.html" (... [Pingback]
"http://9nb-information.info/09540748/index.html" (http://9nb-information.info/0... [Pingback]
"http://9nd-information.info/91958239/index.html" (http://9nd-information.info/9... [Pingback]
"http://9nf-information.info/51804557/index.html" (http://9nf-information.info/5... [Pingback]
"http://9nh-information.info/49559707/nj-fish-wildlife-digest.html" (http://9nh-... [Pingback]
"http://9nj-information.info/65263181/vista-ridge-movie-theater.html" (http://9n... [Pingback]
Wednesday, October 05, 2005 2:30:25 AM (Pacific Daylight Time, UTC-07:00)
Amen brother.

I think we are nearing the peak of the dynamic language hype cycle, fasten seatbelts for the steep ride down to the trough of disillusionment.
Michael Neale
Wednesday, October 05, 2005 6:38:29 AM (Pacific Daylight Time, UTC-07:00)
I don't think it is a fair thing to say that we should avoid dynamic languages because other people down the line might not be good enough programmers to use them. I'll admit that right now I prefer staticly typed languages with good well designed class libraries. I have been drinking the Ruby Kool-aid lately as well and so far think that it is nice. Do I worry about somebody not being able to manage the code later? Not really, but then I'm only taking small sips at the moment. Saying that we should stick to the basics and not reach a little higher forces people down to the lowest common denominator. I can understand your apprehension for dynamic languages because when I program in them I still feel like I have left the type safe safety net behind. Right now I can't even imagine how a project like Zope or Rails for that matter could exist without having that safety net but they do and they seem to do well.
BTW at least someone at Microsoft felt that dynamic language support in the CLR was a good idea because they hired the guy behind IronPython to make the CLR more dynamic language friendly. I think we have a ways to go before we hit the peak. Even then the ride down won't be that far. Dynamic languages have their place and it will be found. That place won't supplant static languages anytime soon though.
Sam Corder
Wednesday, October 05, 2005 6:57:06 AM (Pacific Daylight Time, UTC-07:00)
I actually wrote about this a couple months ago:

http://spyced.blogspot.com/2005/06/anders-heljsberg-doesnt-grok-python.html

(hope this doesn't double-post, first attempt doesn't seem to have gone through)
Wednesday, October 05, 2005 8:44:25 AM (Pacific Daylight Time, UTC-07:00)
I hate it when a comment post disappears and all I have left is a clean form. I hate it a lot.

Here's one more crisp try:

I agree that there is a little too much hype, but I don't think it is a big problem.

I agree about the differences. I suggest that a bigger concern is the failure modes of programs in particular environments and how the failure cases are managed to make the result user-ready.

http://orcmid.com/BlunderDome/clueless/2005/06/dynamic-languages-improve-software.asp

And welcome to the Puget Sound country!
Saturday, March 11, 2006 9:35:24 AM (Pacific Standard Time, UTC-08:00)
Very interesting, Thanks.
Please put more of it!
Comments are closed.