Exploration and discovery

This week's column on dynamic languages, and its associated blog entry, provoked some interesting reactions. From Don Box:

Jon Udell's recent post on using dynamic languages to work with XML and web services echos a common meme.

More and more, however, I'm less convinced the problem is with languages per se but rather is related to how dynamic linking and binding works in most modern object systems.

More often than not, the developer needs to make some assumptions about the expected shape of a given data structure.

The problem is that we bake a fair amount of non-semantic information into the way their code compiles against those assumptions.

I think we can do way better than the current state of the practice.

I don't think the answer is for everyone to adopt Perl - if that's our only hope let's give up now. [Don Box's spoutlet]

To which Patrick Logan responded:

I think Don is half right. It *is* about how dynamic linking and binding works in a system. But how that works is intimately associated with the language design.

Have you ever used an interactive environment for a Pascal-like language? It is a very different experience from using one for Lisp, Smalltalk, or Python.

I won't mention Perl. That's the red herring for static typing loyalists. [Making it stick]

In this discussion, Perl is a red herring in more ways than one. First, there's the ongoing confusion between two axes of typing -- strong versus weak, and dynamic versus static. For example, both Perl and Python are dynamic, in the sense that you need not declare a type when first assigning to a variable. But while Perl's typing is weak -- you can just assign a date to a variable that holds a number or a string -- Python's is strong. Once a variable has a value, Python cares very deeply about what its type says that thing can or can't do. Bruce Eckel's assertion to the contrary raised hackles in the Python community. Dynamic typing and strong typing are orthogonal.

But there's another sense in which Perl is a red herring here. Perl isn't interactive in the manner of Python -- or, for that matter, VB6 as compared to VB.NET. Those who have resisted adopting VB.NET have sometimes been characterized as knuckle-scraping Neanderthals who must be dragged kicking and screaming into the modern OOP era, or else left behind. But while the .NET Framework has much to offer, I think the VB6 crowd are right to demand a more interactive way to use it. As programming increasingly relies on external services and alien environments, it becomes as much a game of exploration and discovery as of design and specification. I think dynamic languages and interactive programming environments help make us better explorers and discoverers, and I think that's only going to matter more as time goes on.

Former URL: http://weblog.infoworld.com/udell/2003/08/26.html#a782