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!