scsh-users
[Top] [All Lists]

Designed vs. Jes' Grew [was: Ousterhout and Tcl lost the plot with

To: scsh-news@martigny.ai.mit.edu
Subject: Designed vs. Jes' Grew [was: Ousterhout and Tcl lost the plot with
From: "Steven D. Majewski" <sdm7g@virginia.edu>
Date: Wed, 23 Apr 1997 06:20:24 GMT
Organization: CWI, Amsterdam
On Tue, Apr 22, 1997 3:29 AM, Henry Baker <mailto:hbaker@netcom.com> wrote:
>In article <5jgodk$nd7$1@news.utdallas.edu>, mharriso@utdallas.edu (Mark A
>Harrison) wrote:
>
>> Why are so many of the popular languages created not by language
>> theorists but by people trying to accomplish some other task?
>> 
>> (I think JO raised this last point in his MIT lecture.)
>
>I'll take a shot at this one.
>
>Most 'popular' languages started life as highly specialized (i.e.,
'limited
>scope') languages that had access to some peculiar library -- e.g.,
graphics,
>type-setting, wimp, linear algebra (matlab), symbolic algebra (macsyma,
etc.).
>People then found out that any language with sufficient power (i.e., not
>brain dead) was Turing complete, and the converts to these new languages
>then discovered that they would do _more_ than 'just' graphics,
type-setting,
>etc., etc. 

[ ... ]


Another binary classification of computer languages is 'academic languages'
vs. 'toolkit languages' : 
   Academic languages are typically developed to prove or demonstrate
  something. 
  Toolkit languages are invented to help someone get some work done. 
 
Of course this is a very fluid boundary.

  Academic languages that survive long enough tend to become tools:

     Fortran was written both as a tool, and to prove that the whole idea
      of automatic compilation of an algebraic language was practical (
There
      were quite a few sceptics at the time. ) 

    Smalltalk was written to demonstrate the advantages of a form of
      purely object oriented programming, but it's become a tool for
      business computing. 

   But I think it's reasonable to say that Scheme, ML and Haskell --
good picks for archetypal academic languages --  were all developed to 
demonstrate the wide utility of a few powerful concepts.  ( Maybe I 
should include N.Wirth's creations here: Pascal, Modula-2, et.al. - but
I've never been quite exactly sure what he was trying to prove. )

   Lisp, on the other hand, was one of the original toolkit languages:
It was invented so that John McCarthy and others would have an easier
tool for their AI research. 
   The HOPL-II article on the evolution of Forth, probably the 
archetypal toolkit language describes how Chuck Moore traveled 
around with his card deck, porting Forth to one system after another
as the first step in whatever application he was working on at the time.
   Perl started out as Larry Wall's personal Unix programming toolkit.
The first paper that mentioned Python was about how it was being used
to test network servers for the Amoeba OS project. And Tcl was certainly
designed as a tool.

Another "bi-chotomy" that I've used -- similar but different than the
previous one is:  designed languages vs. "Jes' Grew" languages. 
The thing that characterizes "Jes' Grew" languages is piecemeal growth. 
One of the things I've always  praised about Python is that it's somewhere 
in the golden mean of those two poles. After all, if growth doesn't start
from a good initial design, it quickly turns into a collection of hacks. 
We can admire clever hacks, but sometimes they only postpone the 
inevitable Complete ReWrite. 

Jes' Grew languages tend over time, towards an excess of often
non-productive features and redundancy as they gather layers
of not quite compatible invention. ( CAR, first, head, elt, aref, ... ) 

 I've never doubted the utility of C++, Perl or Tcl as tools, but they 
 all seem limited by their initial design.   To be fair, I've also bumped 
into limitations in Lisp and Python, but they don't seem quite as 
deeply rooted or severe to me. Also, indicating that I see a design 
flaw is not criticism of the designer: In the case of C++, one of the 
design constraints -- that it be compatible with C -- is the source of
most of it's "flaws". Sometimes a tool or language may be very well 
designed given a certain niche or application, but when it's pushed
into other realms, problems appear. ( As Henry Baker noted
above:  there is a tendency for all special purpose languages to grow
towards being more general purpose. ) 


If John Ousterhout is saying that academic comp. sci. has been 
biased against the toolkit languages and the Jes' Grew languages,
and hasn't payed enough attention to practical issues like "glue 
languages", then I agree. However, I think most of us, including
quite a few of the "academics" agree with that notion now.
 It is other issues: distortion of the truth, assertion without evidence,
failing to give credit to, if not his sources, then at least his
predecessors,
that are the cause of the controversy.  I agree strongly with much of
what I took to be the intent of that paper, but I disagree strongly 
with the specific case he makes. As someone else in this thread said:
"It's not even wrong!" 



Henry Baker (again):
>
>The truth is that there isn't more than an ounce of spit in the
differences
>among most of these languages _with the exception of the specialized
>libraries
>that they are hooked up to_, so most of this variation is non-productive.
>

And other source of irritation at that paper is as yet another 
demonstration of the non-productive reinvention of, rather than
learning from, History. And typically, without learning from the
past, it's not any better the second time around. J.O. is claiming 
progress in the fact that we now have something nearly as good 
as we had ten or fifteen years ago. Non productive variation! 


A better guide than Ousterhout is Dick Gabriel.

When I first read his "worse is better" paper, I wasn't sure 
what, if anything, he was advocating.Was he really recommending
"worse" ? I wasn't quite sure -- that paper seemed like a sort of
left handed compliment. 

 His latest book "Patterns of Software" ( mostly collected from
articles from JOOP ) expands on that paper with his notions of
"habitability" -- how to design and plan for systems that will
grow and evolve. I think that's what he was aiming at with that
first paper, and it's what I was aiming at when I first started calling
Python and Perl "Jes' Grew" languages a couple of years ago. 



- Steve Majewski
<sdm7g@Virginia.EDU> 



BTW: The phrase "Jes' Grew" is from Ishmael Reed. I don't 
remember which book. I do almost remember the line:
 "Where did Jazz come from?"
 "No Come From, it Jes Grew!" 

P.S. I hate to see people spread lies and rumors of the "failure"
of Lisp, when lisp has been one of the greatest, most successful 
Jes' Grew Toolkit languages ever. Lisp is going to be aound when
it turns 40.  It's obvious it could use another rewrite. If J.O. had
wasted less time knocking Lisp and spent a bit more time learning
from it, maybe Tcl would not be showing signs of tired old age already. 








<Prev in Thread] Current Thread [Next in Thread>