Version 100-2.0 of NASA FITS Standard released

Don Wells dwells at cv.nrao.edu
Tue Apr 27 15:49:58 EDT 1999


Eric Greisen writes:
 >     The real problem is the word "deprecate" itself.  That word has
 > been given a meaning by the ANSI which has been used then with Fortran
 > and other languages (at least).  The word means that the deprecated
 > feature will be no longer supported at some future date..

The Fortran-90 committee *may* have used the word with that meaning
(but see below for evidence that they used a different word).
However, after searching the Web, I can find no reason to conclude
that the definition given in the quote above has been formally adopted
by ANSI itself.  Indeed, the available evidence (inconsistent usage of
the word by standards-committee-related personnel) suggests the contrary.

			       -=-=-=-

A good summary of the Fortran-90 situation is at this URL:

    http://www.nsc.liu.se/~boein/f77to90/a4.html#obsolescent

    "..the concept 'obsolescence' is introduced. This means that some
    constructs may be removed at the next change of Fortran.."

It clear that the Fortran-90 committee was serious; for example, see
the deleted features discussion for Fortran-95 at:

    http://www.nsc.liu.se/~boein/f77to90/f95.html#17.2

    "..Five features are deleted from Fortran 90.  1.real and double
    precision DO loop index variables 2.branching to END IF from an
    outer block 3.PAUSE statements 4.ASSIGN statements and assigned GO
    TO statements and the use of an assigned integer as a FORMAT
    specification 5.Hollerith editing in FORMAT.  These are all from
    the list of obsolescent features of Fortran 90 (but not the
    complete list).."

Please note that 'deprecate' per se does not appear in the above
texts; 'obsolescent' is used instead. I do not have access to the
official Fortran-90 standard, so I cannot check whether 'deprecate'
was used in it. If 'obsolescent' was used, then Fortran cannot be
cited in our discussions about use of the word 'deprecate' in the NOST
FITS standard.

			       -=-=-=-

I decided to try a Web search engine with the string "deprecate AND
ansi". My goal was to find examples of usage of 'deprecate' in
computer-standards discussions; I hoped that the precise meaning of
the word would be clear in context. For example, the page at URL

    http://www.uni-giessen.de/hrz/programmiersprachen/C/b.html

contains an extended discussion of the ANSI C standard. The word
'deprecate' appears once in the text, in this paragraph:

    "..The distinction between internal and external codes most needs
    emphasis with respect to new-line.  ANSI X3L2 (Codes and Character
    Sets) uses the term to refer to an external code used for
    information interchange whose display semantics specify a move to
    the next line.  Both ANSI X3L2 and ISO 646 deprecate the
    combination of the motion to the next line with a motion to the
    initial position on the line.  The C Standard, on the other hand,
    uses new-line to designate the end-of-line internal code
    represented by the escape sequence '\n'.  While this ambiguity is
    perhaps unfortunate, use of the term in the latter sense is nearly
    universal within the C community.  But the knowledge that this
    internal code has numerous external representations, depending
    upon operating system and medium, is equally widespread.."

This usage of 'deprecate' in an ANSI computer language standard context
definitely falls into the "to express disapproval of" category, not in
the "to be deleted in a future version of the standard" category.  I
also found several uses of 'deprecate' in discussions of C++:

    http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3/sect4/index.html

    "..[Stroustrup 94] also voices the opinion that default int is
    bad. He had tried to make the type specifier explicit, but was
    forced to withdraw by users: 'I backed out the change. I don't
    think I had a choice. Allowing that implicit int is the source of
    many of the annoying problems with C++ grammar today. Note the
    pressure came from users, not management or arm-chair language
    experts. Finally, ten years later, the C++ ANSI/ISO standard
    committee has decided to deprecate implicit int.'.."

    http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3/sect3/index.html

    "..[Stroustrup 94] indicates a desire to discard the C casts: 'I
    intended the new-style casts as a complete replacement for the
    (T)e notation. I proposed to deprecate (T)e ; that is, for the
    committee to give users warning that the (T)e notation would most
    likely not be part of a future revision of the C++ standard. ...
    However, that idea didn't gain a majority, so that cleanup of C++
    will probably never happen.'.."

So, in a discussion of the ANSI C standard the word is used with the
'discourage' meaning, while in at least one discussion of ANSI C++
'deprecate' is defined as 'to be deleted in the future'.

Another case I found is a review of ANSI X3J13 Common Lisp standards
debates at:

    http://www-cgi.cs.cmu.edu/afs/cs/project/ai-repository/ai/html/hyperspec/HyperSpec/Issues/iss149-writeup.html

    "..David Moon says: Seems okay, except that if we are going to
    deprecate these things, I would much rather just remove them.  You
    would surely argue that no significant program could possibly be
    depending on EVALHOOK, since it has no semantics, so there can't
    be a compatibility issue.  If we agree that something is a bad
    idea, I would rather remove it entirely unless there is a
    compelling compatibility reason to only deprecate it.  In fact
    even if some programs used EVALHOOK, I would still want to remove
    it, as I long ago ceased to believe in any fantasy of seamless
    compatibility between CLtL and ANSI CL.  But others might not
    agree with me there.."

Obviously the usage above implies disapproval, not deletion. But
consider another example which is discussing the same X3J13 debates:

    http://www2.camellia.org/cltl-html/clm/node141.html

    "..X3J13 voted in January 1989 (TEST-NOT-IF-NOT) to deprecate the use
    of :test-not keyword arguments and -if-not functions. This means
    that these features are very likely to be retained in the
    forthcoming standard but are regarded as candidates for removal in
    a future revision of the ANSI standard. X3J13 also voted in
    January 1989 (FUNCTION-COMPOSITION) to add the complement
    function, intended to reduce or eliminate the need for these
    deprecated features.  Time will tell. I note that many features in
    Fortran have been deprecated but very few indeed have actually
    been removed or altered incompatibly.."

So, in one discussion of ANSI Lisp 'deprecate' is used as 'discourage'
while in another discussion it is defined as 'candidate for removal'.

COBOL is an ANSI language; here is a usage in the 'Frequently Asked
Questions about COBOL' document at:

    http://obelix.unicamp.br/pub/FAQ/computer-lang/cobol-faq

    "..16. Contributors to the FAQ.  Many people have contributed to
    this FAQ in each of its iterations. In the past an ongoing list of
    these people have been included within the FAQ.  At this time, i
    am stopping this practice, although I ,in no way, want to
    deprecate all the work and input that these people have
    provided. I have continued to identify people whom I am quoting
    (directly or indirectly) and do still hope that everyone who has
    input for this document will continue to provide it.."

The implied meaning in the above case is roughly "discourage".

I am unsure whether Java is already in the ANSI standards process, but
I expect it will be eventually.  In the book "Java [1.1] AWT
Reference" (J.Zukowski, O'Reilly, 1997), on p.xvii, we find:

    "..Comments in the JDK source code indicate that the older method
    names have been 'deprecated', which means that you should consider
    the old names obsolete and avoid using them; they could disappear
    in a future release.."

			       -=-=-=-

In addition to computer languages, we could broaden the scope to
include discussions of networking standards. Consider RFC2130, at:

    http://info.internet.isi.edu/in-notes/rfc/files/rfc2130.txt 

    "..This report recommends the use of ISO 10646 as the default Coded
   Character Set, and UTF-8 as the default Character Encoding Scheme in
   the creation of new protocols or new version of old protocols which
   transmit text. These defaults do not deprecate the use of other
   character sets when and where they are needed; they are simply
   intended to provide guidance and a specification for
   interoperability.."

and the commentary document at:

    http://www.imib.med.tu-dresden.de/imib/Internet/Literatur/IPSec/draft-rogaway-ipsec-comments-00.txt

    "..As a general principle, since ALL that an ESP mechanism ought
   guarantee is privacy, it is NEVER useful to encrypt known text.
   Doing so increases the size of packets and the computational
   complexity of making them, while it provides no security benefit.
   RECOMMENDATION 3: Modify the architecture to forbid or deprecate
   the encryption of known headers.."

Both of the above usages imply "discourage".  I also found a usage in
documentation for the netCDF package at:

    http://dos-debian.kosnet.ru/doc/netcdf/CHANGES

    "..added the `-p fdigs,ddigs' option to ncdump.  This replaces and
    behaves like the (now deprecated and undocumented) `-d' option,
    except that it overrides any values specified by the `C_format'
    attribute for float or double values.  Made precisions specified
    by the `-p' or (now deprecated) `-d' options apply to float or
    double attributes as well as data values.."

Here it is clear that the deprecated feature remains supported but
will no longer be documented.

			       -=-=-=-

Finally, we can consult the Jargon File's 4.0.0 version (released 25
July 1996, published in cellulose fiber and carbon particles as 'The
New Hacker's Dictionary') at:

    http://www.fh-zwickau.de/~linux/info/jargon/jargon_19.html#SEC26

    deprecated /adj./ Said of a program or feature that is considered
    obsolescent and in the process of being phased out, usually in
    favor of a specified replacement. Deprecated features can,
    unfortunately, linger on for many years. This term appears with
    distressing frequency in standards documents when the committees
    writing the documents realize that large amounts of extant (and
    presumably happily working) code depend on the feature(s) that
    have passed out of favor.

Lest you think the above definition is definitive, compare this usage
from the same URL:

    dd /dee-dee/ /vt./ [Unix: from IBM JCL] Equivalent to cat or
    BLT. Originally the name of a Unix copy command with special
    options suitable for block-oriented devices; it was often used in
    heavy-handed system maintenance, as in "Let's dd the root
    partition onto a tape, then use the boot PROM to load it back on
    to a new disk". The Unix dd(1) was designed with a weird,
    distinctly non-Unixy keyword option syntax reminiscent of IBM
    System/360 JCL (which had an elaborate DD `Dataset Definition'
    specification for I/O devices); though the command filled a need,
    the interface design was clearly a prank. The jargon usage is now
    very rare outside Unix sites and now nearly obsolete even there,
    as dd(1) has been deprecated for a long time (though it has no
    exact replacement). The term has been displaced by BLT or simple
    English `copy'.

-Don

-- 
  Donald C. Wells      Scientist - GBT Project        dwells at nrao.edu
                    http://www.cv.nrao.edu/~dwells
  National Radio Astronomy Observatory                +1-804-296-0277
  520 Edgemont Road,   Charlottesville, Virginia       22903-2475 USA



More information about the fitsbits mailing list