macrakis@harvard.ARPA (Stavros Macrakis) (01/03/85)
The Nature of a Definition There seems to be some confusion between `definition' and `measurement'. Chambers' original proposal tries hard to be operational, that is, susceptible to measurement: > X [is] "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. -- jc@mit-athena.ARPA (John Chambers) (and of course the X and Y give us that warm mathematical-definition feeling in our guts) I would rather try to clarify my intuition first. I don't see that setting up a numerical measure helps me. Thus, my definition was: > A high-level language expresses high-level concepts WELL. > -- Macrakis@Harvard ...and I asked if we could all agree on this. Diamond returns to the operational approach, but one which doesn't let you crank out numbers: > If it is easier to translate between the problem being solved and a program > in language X, than between the problem and a program in language Y, then > X is higher-level than Y. -- ndiamond@watdaisy.UUCP (Norman Diamond) Chambers now retorts that no one else has presented a `definition': > Hey, c'mon fellas! I mean, it's fun to read criticism and take pot > shots at the pots shots, but where's your definition? I admitted at > the start that mine was limited. Let's hear some better ones. > -- jc@mit-athena.ARPA (John Chambers) Now Jansen accuses even Chambers of being negligent: > The problem with all definitions given for 'high-levelness' is that > they use unmeasurable variables. -- jack@vu44.UUCP (Jack Jansen) ... and proposes a survey procedure: > The degree of high-levelness of a language X for a problem Y is > defined as the [proportional] size of the biggest subset of a set of > programmers who come up with the same solution.... Why this emphasis on numbers? Will it make us wiser to discover that Algol-68 has a Jansen matrix-inversion score of 23.12% or that Teco has a Chambers palindrome-search score of 5.04? Shall we Discuss Definitions? So let me propose that we separate the issues of definition and measurement, and continue our interesting discussion at the level of definition. Perhaps it will eventually be productive to reduce the definition to some empirical measure, but I don't see how that helps at this stage. Thus, I would rephrase Chambers' definition as: HLLs* induce short programs. *high-level languages ( "within their domain and in competent hands" for all these definitions ) Diamond's comes out as: HLLs make programming easier. Frank's first note discusses many aspects of the quality of a language and the motivations of designers, so I will consider his comments to be outside the scope of `definition of high level'. His second suggests the definition (although he doesn't push it): HLLs induce provable programs. Jansen's is: HLLs induce unique mappings from problems to programs. My definition remains HLLs express high-level concepts well. I'll agree that of these definitions, mine is perhaps the vaguest (as I discussed in my note), but I'll also argue that it leaves room for improvement by increasing its precision. Terseness, ease of use, and provability can all be desirable traits, but none seems directly linked to high level (there are certainly other dimensions of description of languages besides level, and many of them contribute to quality). Jansen's notion of uniqueness is intriguing, and seems to relate to certain ideas of Dijkstra's about program development. I would call it `closeness' or `directness' to an application area, and this indeed may be an important component of high level. The other side of the coin is that this very directness may be simply narrowness. Is it really `high-level' to encourage to the point of enforcement the representation of graphs as adjacency matrices in APL, for instance? Now, some others' ideas about the nature of high-level languages...? -s