Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site gumby.UUCP
Path: utzoo!linus!philabs!cmcl2!seismo!uwvax!gumby!g-frank
From: g-frank@gumby.UUCP
Newsgroups: net.lang
Subject: Re: High-levelity
Message-ID: <235@gumby.UUCP>
Date: Fri, 28-Dec-84 12:12:12 EST
Article-I.D.: gumby.235
Posted: Fri Dec 28 12:12:12 1984
Date-Received: Sat, 29-Dec-84 23:26:50 EST
References: <83@mit-athena.ARPA>
Organization: U of Wisconsin CS Dept
Lines: 57

> I'll throw out a definition for consideration, flaming, etc.  I will call
> X "higher-level" than Y if it is generally possible to express concepts
> (data structures, operations, flow of control, etc.) in fewer symbols in
> X than in Y.  The definition of "lower-level" is left to the reader.
> 
> I think language designers should spend less time
> flaming about the defects of C (which are many), and spend more time looking
> at what makes this language better than most of its competitors for writing
> the code it was designed for - operating systems, low-level drivers, etc.
> Maybe eventually we might have a really high-level language that does what
> C does, but does it a lot better.
> 
> Does anyone have another good (or at least interesting :-) definition of
> high-level?  After all, people have been bandying the term about for years;
> it's about time we had a definition so we could really tell which languages
> are the advanced ones and which are just pretenders.
> 
> 			John Chambers (Project Athena @ MIT)

Of course, it's all in the eye of the beholder, and the most I can flame at
is the focus of the eye, eh?

In one sense, any definition is hopeless, given that "high" is a judgement
word, like "nice."  I find an interesting conflict in John's description.
First, he says that it's good to be able to express operations in a minimum of
symbols, in which case APL is the highest of the high.  Then he says that C
is best since it's good for writing operating systems in.  Which is it?  No
on in their right mind would write an operating system in APL (would they?).
So the definition is already flawed.

I think it's important to look at why programming languages were designed
in the first place.  Most of the time their designers wanted to be able to
express to the computer what they wanted to do in the most clear and natural
way possible.  They felt that assembly language didn't express their ideas
naturally.  I suspect that terseness, so beloved of C hackers, was not a
major goal.

For a while, designers concentrated on special purpose languages for string
handling, vector computation, etc.  Once again, they wanted a language to
model their particular application environment more accurately.  They felt
(as did the authors of C) that this would lead to higher productivity and
maintainability.

More recently, language designers have tried to solve software engineering
problems, designing languages that reduced coupling between modules, allowed
reusability of code, increased readability so that programs could be maintained
by people other than their authors, and permitted handling of exceptions in
a meaningful way.  None of these is particularly well done by C, yet each is
considered a "high-level" feature (if you need it, of course; otherwise it's
just "baggage").

A programming language may be considered just a means of communicating with
a computer, but it should not be forgotten that it is also a means of 
communicating with other programmers (including the original author, say in
three weeks or so).

And we still haven't mentioned the issue of provability of correctness!