[comp.lang.c] Standards For C++

eric@snark.UUCP (Eric S. Raymond) (09/23/88)

In article <6590064@hplsla.hp.com>, jima@hplsla.HP.COM (Jim Adcock) writes:
> Alternately [or in addition to], it might be nice if the 
> various compiler camps could come up with agreed upon definitions
> of various "levels" of the C++ language so that we could 
> know what major features of the "C++ language" are going to
> be available to us when we buy a particular vendor's
> compiler.  

Aaaargh! Back! Back! <raising silver crucifix>

Some bad ideas there are that refuse to die, that rise out of unquiet graves
to trouble us long after we had thought them dead and gone. This particular
revenant had its gory fingers deep in the self-destruction of PL/1 and the
petrification and slow death of Pascal, and even as we speak menaces the
IEEE POSIX standard.

Yea, I myself bore a torch and pitchfork against it the last time it threatened
net.humanity; it possessed an otherwise estimable gentleman named Rahul Desi
and attempted to worm its grisly way into the C standards process.

Hear now the grisly tale of its depredations. In PL/1, there was this idea
of 'subsetting'; the standard allowed lots of orthogonal binary choices about
the semantics and implementation (or non-implementation) of various constructs
and (especially) data types.

The result? At first, a chaotic mess that drove strong programmers to fits of
madness and their managers to despair. Later, least-common-denominator
compilers that didn't support *any* of the competing options -- because it had
been learned, at the cost of the Gods alone know how many man-hours, that
nonportable 'features' amounted in the end to little more than a snare and a 
delusion even in single-vendor (IBM) environments. And for this among many
other reasons, PL/1's dominion has dwindled to a ragged and remnant few.

During the Pascal standardization push of the early '80s this fell creature
re-manifested in a subtler and more insidious form -- as the idea of ISO Pascal
'levels' 0 and 1. Once again evil bestrode the earth; no attempt was made to
exorcise ISO-incompatible versions of the 'Level 1' features, so portability
was never obtained for the semantics ISO had blessed. After a time, all the
old limitations of Level 0 became once again the lot of weary programmers. And
all know how Pascal has since been brought low from its once-mighty repute,
reduced indeed to a toy for weekend PC hackers.

Even as we speak, the necromancy of lazy vendors has once again conjured this
fearsome lich into the demesne of the IEEE P1006.1 committee. A righteous
few persevere in opposing it, crying "One standard! No options! No crippling!".
It is by no means certain that they will prevail; and if they do not, POSIX
will surely become but a twisted and shrunken grotesque of what it might have
been.

Therefore: as you value your very soul, call not upon the "levels and subsets"
monster, but seek to slay it with all the strength of your wit.

Let's kill it *dead* dead this time, huh guys?



-- 
      Eric S. Raymond                     (the mad mastermind of TMN-Netnews)
      UUCP: ...!{uunet,att,rutgers}!snark!eric = eric@snark.UUCP
      Post: 22 S. Warren Avenue, Malvern, PA 19355      Phone: (215)-296-5718

johnl@ima.ima.isc.com (John R. Levine) (09/25/88)

In article <dzj2T#X460J=eric@snark.UUCP> eric@snark.UUCP (Eric S. Raymond) writes:
> [ standards that define subsets are a hellish abomination]

Before we put this issue to sleep, I feel compelled to point out that there
are two ANSI standards that have sucessfully defined subset languages.  Perhaps
coincidentally, they are also the two oldest and most successful languages,
Fortran and Cobol.  The F77 standard is nicely laid out so that on each
facing pair of pages, the right page defines the full language and the left
page defines the subset language.  There used to be quite a few subset
implementations back when 64K was a serious amount of memory for a
minicomputer, though now everybody goes for the full language.  The Cobol
standard defines modules at different levels, and you see reports that
a compiler has the full language at level 2 with the file handling module at
level 4, and so forth.

In both cases, the standard gave considerable thought to existing practice,
e.g. subset F77 is more or less the part of F77 that was already in F66, so
that there is little incentive to misimplement stuff in the interest of
making old code work.
-- 
John R. Levine, IECC, PO Box 349, Cambridge MA 02238-0349, +1 617 492 3869
{ bbn | think | decvax | harvard | yale }!ima!johnl, Levine@YALE.something
Rome fell, Babylon fell, Scarsdale will have its turn.  -G. B. Shaw