[comp.lang.ada] 4GL's, Hypertalk, and Ada waivers

sdl@MBUNIX.MITRE.ORG (Litvintchouk) (04/10/89)

I recently had the need to decipher what DoD Directive 3405.1
("Computer Programming Language Policy") had to say about 4GL's,
database query languages, and database scripting languages (e.g.
Hypertalk).

It's well known that DoD 3405.1 requires the use of Ada unless a
waiver is granted.  However, the Directive also contains the following
curious statements:

      "2.  A waiver NEED NOT be obtained for use of:

            a.  Commercially available off-the-shelf applications 
		software that is not modified or maintained by 
	        the Department of Defense.

            b.  Commercially available off-the-shelf advanced 
		software technology that is not modified or 
		maintained by the Department of Defense.

            c.  Computer programming languages required to implement
		vendor-provided updates to commercially supplied 
		off-the-shelf software.  Use of such languages shall 
		be restricted to implementing the vendor updates."


Paragraph (a) is self-explanatory.  Paragraph (b), however, is
interesting.  The term "advanced software technology" is defined in
Enclosure 2 ("Special Terms and Definitions") as follows:

       "1.  Advanced Software Technology.  Software tools,
 	    life-cycle support environments (including program support
	    environments), nonprocedural languages, modern data base
	    management systems, and other technologies that provide
	    improvements in productivity, usability, maintainability,
	    portability, etc., over those capabilities commonly in use."

If you substitute the words "nonprocedural language or DBMS" for
"advanced software technology" in paragraph (b), you get:

      "2.  A waiver NEED NOT be obtained for use of:

            b.  Commercially available *nonprocedural language*
		or DBMS that is not modified or 
		maintained by the Department of Defense."


Some of my colleagues do not agree that even SQL qualifies as a
"nonprocedural language"; it really isn't a declarative language in
the sense of, say, Prolog.  And many other database manipulation
languages (e.g. the one that comes with 4th Dimension on the Mac) are
definitely procedural.

Taken literally, paragraph (b) seems to say that a contractor could
write (and deliver to the DoD) a lot of code in Prolog or other
nonprocedural languages (SQL?).  So long as the *language* (and, I
assume, its compilers and interpreters) are not maintained by the DoD,
a waiver is not required even if the code implemented in Prolog is to
be maintained by the DoD.  (I wonder if they really meant to say that,
or if this is just bad wording.  I wonder what they would do if a
contractor really proposed to deliver thousands of lines of Prolog or
SQL to the DoD.)

Note also that the definition of "advanced software technology" only
covers the DBMS, not code written in data base manipulation languages.  

Paragraph (c) seems self-explanatory.  If you have a COTS product that
requires extension in a language other than Ada, only vendor-developed
extensions are permitted without a waiver.  Contractor-developed
extensions would still need a waiver.

Thus it appears that, say, Hypertalk scripts for manipulation of
Hypercard stacks would be exempt from waivers, if the scripts were
vendor-supplied and vendor-maintained.  A contractor intending to
develop scripts to be maintained by the DoD would require a waiver.

What makes this rule difficult to apply in practice, is that the mere
use or tailoring of some of these packages can automatically generate
scripting code.  (Examples: adding a button to a Hypercard stack;
linking tables in 4th Dimension.)  I assume that the entire Hypercard
stack will be considered software to be maintained: buttons, scripts
and all.  Thus does a contractor need an Ada waiver to add a button to
a Hypercard stack which is to be delivered to the DoD?

In conclusion, DoD Directive 3405.1 does not exempt script and query
languages (e.g.  Hypertalk), etc., that are bundled with COTS products
from needing Ada waivers.  The issue remains not the language, but who
modifies and maintains the code.  Whether it's Fortran, 4th Dimension
or Hypertalk, contractor-developed non-Ada code to be maintained by
the DoD requires a waiver.  The only exemption to this appears to be
code written in truly nonprocedural languages (e.g. Prolog).

I believe this policy is long overdue for clarification and revision.
The policy was not supposed to discourage use of new and innovative
software technology.  Yet Hypercard, and also some of the very newest,
"object-oriented" DBMS's employ object-oriented, procedural query
languages, rather than SQL.  Even modern spreadsheet programs employ
procedural macro languages.  Why should their use require an Ada
waiver?  (A case might be made for having standard query languages and
scripting languages--SQL and Rexx are examples--but their
standardization should be dealt with in an entirely separate DoD
policy directive.)


Steven Litvintchouk
MITRE Corporation
Burlington Road
Bedford, MA  01730
(617)271-7753

ARPA:  sdl@mbunix.mitre.org
UUCP:  ...{att,decvax,genrad,ll-xn,philabs,utzoo}!linus!sdl

	"Ada came at the peak of confidence in computing.  We believe
	   the tide is now moving the other way." -- Bernard Carre,
	   University of Southampton and Program Validation, Ltd.