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