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.
|