[net.lang] Definition of `high level'

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