Ted Leung on the air
Ted Leung on the air: Open Source, Java, Python, and ...
Mon, 30 Aug 2004
David Ascher's Dynamic Languages white paper
David Ascher has written a very good white paper on dynamic languages. The paper is very readable and frames a lot of the issues around dynamic languages. I was flattered when David told me at OSCON that he referenced this blog in the Further Reading section. It's taken me a while to read the paper, and then a second while to writing this post.

One of the great/terrible things about the term "dynamic languages" is that it means so many things to so many people. As I read the paper, I found places where my definition of dynamic languages was the same as what David wrote, and other places where it was different. So I'm going to over some of that in this post, partly to record it for myself, and partly for the benefit of anybody who cares (if there is anybody). Much of what's here won't make sense unless you read David's paper first.

In the Introduction, I agree that a big issue is helping people to understand that kind of languages being discussed have a much broader range of applicability. I think of the whole dynamic languages fad as an exercise in helping people to learn many of the lessons that Smalltalk and Lisp developers already know.

The paper lists 3 criterion for dynamic languages:

Criterion 1: High-level
As David noted, the notion of high-level is hard to pin down. He describes a bias towards more abstract built-in data types as one aspect of being high level. Many languages have large libraries of data types. I think that what is important here is the combination of more abstract built-in data types and syntax. A lot of what I like about Python vs Java/C# is the effectiveness of the notation for dealing with sequences, dictionaries, and so forth. The operations are there in Java/C#, but it's just a lot more concise in Python.

I don't think that favoring a VM implementation over a native code generating implementation is a requirement for a language to be high level or dynamic.

For me part of what it means for a language to be dynamic is to be able to interact with it. This means an interactive interpreter loop in addition to batch compilation/execution. I also think that a language needs to provide reflective capabilities in order to qualify as high level.

Criterion 2: Grassroots open source
One sentence in this section stuck out for me:

...the nature of the original creator (biological or corporate) has massive impact on the language's adoption and evolution...
I think that this is a highly important point, that covers more than languages. Equally important is the community that springs up around such an endeavor.

Having said all that, there are languages which fall into my classification of dynamic languages which are not open source -- the usual suspects, Lisp and Smalltalk (and yes, I'm aware that there are open source implementations of both).

Criterion 3: Dynamically Typed
I don't have any real disagreement here, although I do think that a possible next direction for dynamic languages is to allow usage of static typing at the programmer's discretion. This could happen via either explicit type declarations or via type inference.

In the section on Properties of Dynamic Languages, I'd change the subsection Optimizing person-time, not computer-time to "Optimizing person-time and computer time". I don't think that these goals need to be in opposition. I also highly agreed with the two subsections Open source, deeply and Evolution by meritocracy and natural selection.

In the section on When to use Dynamic Languages, there is a subsection titled Ideally suited for loose coupling. I didn't quite understand the point that was being made.

The Myths about Dynamic Languages section has two subsections with very similar titles, You can't build real applications with scripting languages and You can't build large systems with dynamic languages. This seemed a bit like hairsplitting to me. I did find it amusing that the second subsection amounted to "proof by Smalltalk". Interesting that this section involves proof by Smalltalk.

I did have some trouble with the subsection titled Dynamic languages don't have good tools. I can't speak about tools for Perl, TCL or PHP, but the tools that I've found for Python have issues as far as I'm concerned. The best tool that I've found so far is Wing, which has improved quite a bit for 2.0. It still doesn't have any kind of refactoring tools, and it's not hackable because you don't have the source, unlike Emacs, Eclipse, a Smalltalk, or a Lisp Machine.

Of the challenges that David listed, the one that concerns me the most is No real/formal budget. The money isn't actually the problem that worries me. The problem that worries me appears later in the paragraph:

problematically, to engage in long-term technical projects
I think that it is important that a language's developer community be able to engage in person/resource intensive longer-term technical projects. There are plenty of things piling up for Python 3000, which is only going to happen if Guido van Rossum becomes independently wealthy or retires. Mitchell Baker summed it up best in her post titled Why Pay for Staff? when she said "Speed matters".
[00:29] | [computers/programming] | # | TB | F | G | 5 Comments | Other blogs commenting on this post
From the Wing IDE site:
"Product source code is available with purchase (requires non-disclosure agreement)."

On first reading I took that to mean that the source is available if you buy the IDE license.
Posted by Rick Thomas at Mon Aug 30 13:58:28 2004

You can subscribe to an RSS feed of the comments for this blog: RSS Feed for comments

Add a comment here:

You can use some HTML tags in the comment text:
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are: <a href>, <em>, <i>, <b>, <blockquote>, <br/>, <p>, <code>, <pre>, <cite>, <sub> and <sup>.

You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk





Remember my info?

twl JPG


Ted Leung FOAF Explorer

I work at the Open Source Applications Foundation (OSAF).
The opinions expressed here are entirely my own, not those of my employer.

Creative Commons License
This work is licensed under a Creative Commons License.

Now available!
Professional XML Development with Apache Tools : Xerces, Xalan, FOP, Cocoon, Axis, Xindice
Technorati Profile
PGP Key Fingerprint
My del.icio.us Bookmarks
My Flickr Photos

RSS 2.0 xml GIF
Comments (RSS 2.0) xml GIF
Atom 0.3 feed
Feedburner'ed RSS feed

< August 2004 >
1 2 3 4 5 6 7
8 91011121314


Macintosh Tips and Tricks

Blogs nearby
geourl PNG

/ (1567)
  books/ (33)
  computers/ (62)
    hardware/ (15)
    internet/ (58)
      mail/ (11)
      microcontent/ (58)
      weblogs/ (174)
        pyblosxom/ (36)
      www/ (25)
    open_source/ (145)
      asf/ (53)
      osaf/ (32)
        chandler/ (35)
        cosmo/ (1)
    operating_systems/ (16)
      linux/ (9)
        debian/ (15)
        ubuntu/ (2)
      macosx/ (101)
        tips/ (25)
      windows_xp/ (4)
    programming/ (156)
      clr/ (1)
      dotnet/ (13)
      java/ (71)
        eclipse/ (22)
      lisp/ (34)
      python/ (86)
      smalltalk/ (4)
      xml/ (18)
    research/ (1)
    security/ (4)
    wireless/ (1)
  culture/ (10)
    film/ (8)
    music/ (6)
  education/ (13)
  family/ (17)
  gadgets/ (24)
  misc/ (47)
  people/ (18)
  photography/ (25)
    pictures/ (12)
  places/ (3)
    us/ (0)
      wa/ (2)
        bainbridge_island/ (17)
        seattle/ (13)
  skating/ (6)
  society/ (20)

[Valid RSS]

del.icio.us linkblog



Listed on BlogShares

Locations of visitors to this page
Where are visitors to this page?

pyblosxom GIF