Movatterモバイル変換


[0]ホーム

URL:


Steelman On-Line

Steelman is the original requirements document for the Ada 83 computerprogramming language.Steelman was released June 1978 by theHigh Order Language Working Group (HOLWG) of the US Department of Defense (DoD).Its formal title is"Steelman Requirements for High Order Programming Languages",AD-A059 444, US Dept of Defense, June 1978;it was also published in the December 1978 edition of SIGPLAN Notices.See thehistory section below for more aboutthe related history of Steelman.

Steelman's contents

You may view:

You can also see some comments onchanges since then.


Steelman Table of Contents

  1. General Design Criteria
  2. General Syntax
  3. Types
  4. Expressions
  5. Constants, Variables, and Scopes
  6. Classical Control Structures
  7. Functions and Procedures
  8. Input-Output, Formating and Configuration Control
  9. Parallel Processing
  10. Exception Handling
  11. Representation and Other Translation Time Facilities
  12. Translation and Library Facilities.
  13. Support for the Language

Advanced users can jump to any specific requirementby appending a "#" and the requirement number to the Steelman URL.For example, a link tosteelman.htm#3-2Cbrings up requirement 3-2C (which requires a Boolean type).You can start at specific chapters in the same way, for example,a link tosteelman.htm#9 shows chapter 9(which discusses parallel processing).Atext file listing all requirement numbers andshort names is also available.


Ada, C, C++, and Java vs. The Steelman

The comparison paper "Ada, C, C++, and Java vs. The Steelman" byDavid A. Wheeler is also available.This paper compares each of these languages to each of the Steelmanrequirements.You can view thenormal (long) version,or ashorter versionwith hyperlinks to the Steelman requirement text.This paper was published in the July/August 1997 issue ofAda Letters.You may also retrieve thepostscript version.

Note that this document also has a number of internal hypertext linkdestinations; advanced users can use these links to jumpto specific areas of the text.For example, a link tosteeltab.htm#3-2Cshows comments on how each of these languages implement Steelman requirement3-2C (for a Boolean type).You can also jump straight to the conclusions by jumping tosteeltab.htm#conclusions.

Note that things have changed since the publication of this paper.In particular, Java has added several important capabilities, includingenumerations and generics.C++ implementations have matured, though there are still an amazingnumber of problems in compilers' implementation of C++ templates.


Changes

Of course, things have changed since the papers above.There was anAda 2005,and then anAda 2012,and both have extended Ada further.

In Ada 2005 and 2012 the assertion-related Steelman requirements10Bis better met, andSteelman requirement10Fchanges Ada from "no" to "yes".Ada 2005 added a simple built-in assertion, which was enough tomeet those requirements.Ada 2012 later addedbuilt-in support for preconditions, postconditions,invariants, and quantified expressions, which are far more powerfulbuilt-ins for program assertions.

In 2003 I gavea keynote at the SIGAda conference, noting things that needed to changein Ada.It took a while,Ada 2012 incorporated several ofthe issues I noted, including the need for a bigger standard libraries,some syntactic sugar to simplify some common constructs,and changes to simplify interaction with other systems.When I presented in 2003 I noted that"C functions often can't map to Ada functions", and I recommendedthat Ada allow functions to have "in out" parameters.This was considered heresy at the time, even though the Ada prohibitiondidn't actually achieve anything other than making interfaces hardto create (Ada functions could always manipulate global values).Ada 2012 now allows functions to have "in out" parameters, just as Ihad recommended at the time.

Of course, other languages have changed too.Java, for example, now has generics.


History of Steelman

In the 1970s the US Department of Defense (DoD) noted that itscosts for computing were skyrocketing.A summary of the costs of the time can be found in"Automatic Data Processing Costs in the Defense Department" byDavid A. Fisher, October 1974, Institute for Defense Analyses (IDA)Paper P-1046.Steelman development later began; here's how the processis explained in IDA document P-1191 from 1976:

"In January 1975, the Director, Defense Research and Engineering (DDR&E),in a memo to the Assistant Secretaries of theMilitary Departments for R&D, noted the multiple benefits of asingle common language for military applications.He requested immediate formulation of a joint Service program toassure maximum useful software commonality in the DoD.A working group was formed from official representatives of the MilitaryDepartments and chaired by DDR&E.Representatives from OASD-I&L,OASD-Comptroller, and the Defense Communications Agency, and NASAalso participated. The author [David Fischer]acted as technical advisor...This trial set of characteristics was widely distributedby the Military Departments with a request that the recipientssubmit their own set of language requirements in response.Outside contractors, contacted by the individual offices that dealwith them, responded overwhelmingly. The responses were firstsent to Working Group representativesof the individual Departments for coordinationwithin their departments and on to IDA.IDA’s task was to analyze, interpret, and resolve the responses intoa consistent and unambiguous set of needed characteristics.In many cases, this involved direct consultationwith individual contributors. The result was an extensive documentwhich explained some of the implications, noted the trade-offswhich were considered, and, in general, provided the rationale behind the listed characteristics.The whole process was then repeated.The revised documentwas distributed by the Services and, again, many thoughtful andhelpful responses were received, processed, analysed, andreconciled by IDA. A revised version of the characteristics was thenprepared. This set of requirements involved few major changes..."

The previous versions of Steelman were named:

  1. Strawman: HOLWG, DoD, April 1975. This was the original draft.Strawman(for Ada) is available online.Arthur Evans Jr reports that there was a draft requirementsdocument earlier than the "Strawman" document of mid-1975but it got no responses.He said about Strawman:"Anyone even moderately competent at language design recognized that therequirements were self-contradictory and, given the then state of theart, vastly over ambitious; I said so. Later, I learned that Strawmanhad been deliberately written that way in order to elicit responses frompeople (like me) who were perfectly happy to point out how DoD didn'tunderstand the problem, but who probably wouldn't otherwise havebothered replying. (Clever! I think Dave Fisher gets credit for thatidea)."
  2. Woodenman: HOLWG, DoD, 1975"Woodenman Set of Criteria and Needed Characteristics for a Common DoDHigh Order Programming Language", David A. Fisher,Institute for Defense Analyses (IDA) Working Paper, August 13, 1975.Woodenman(for Ada) is available online.
  3. Tinman: HOLWG, DoD, Jan 1976This can be acquired asDavid A. Fisher, "A Common Programming Language for theDepartment of Defense - Background and Technical Requirements",Institute for Defense Analyses, Paper P-1191, AD-A028297, IDA Log NumberHQ 76-18215, June 1976.Fisher's paper has not just the requirements but a great deal ofbackground material and rationale, so Fisher's paper is 158 pages long.After Tinman came out, there was a conference at Cornell at whichposition papers were presented on it, published in:"Design and Implementation of Programming Languages",DoD Sponsored Workshop, Ithaca 1976, Lecture Notes in Computer Science #54,Springer-Verlag.Tinman(for Ada) is available online.
  4. Ironman: Ironman was issued in January 1977.Its requirements were substantially the same as Tinman but with adifferent format.An official reference for this document is:High Order Language Working Group, "Department of Defense Requirementsfor High Order Computer Programming Languages - IRONMAN", January 14, 1977.A reference which you can actually order is:David A. Fisher, "A Common Programming Language for theDepartment of Defense - Background, History and Technical Requirements",Institute for Defense Analyses, Paper P-1263, IDA Log NumberHQ 77-19124, May 1977.
  5. Revised Ironman: Revised Ironman was issued in July 1977.An official reference forthis document is: High Order Language Working Group, "Department ofDefense Requirements for High Order Computer Programming Languages -Revised IRONMAN", July 1977.A more accessible version is"Department of Defense Requirements for High Order Computer ProgrammingLanguages", SIGPLAN Notices 12(12):39-54 (Dec 1977).Fisher did some work regarding numericcomputation, and an appendix to that report includes the basicrequirements of revised ironman. So a reference which you can actuallyorder which has the requirements is: David A. Fisher and Philip R.Wetherall, "Rationale for Fixed-Point and Floating-Point ComputationalRequirements for a Common Programming Language" Institute for DefenseAnalyses, Paper P-1305, IDA Log Number HQ 77-19836, January 1978.RevisedIronman (for Ada) is available online.

Steelman was the final requirements document for the language design,which then went to an international competition.There were four entrants, which were calledGreen (from Honeywell and Jean Ichbiah),Red (from Intermetrics),Blue (from Softech), and Yellow (from Wirth and Pascal crew).Green won, and was renamed as Ada."Ada: Past, Present, and Future" by Robert Dewar has some comments about this competition.

Early Ada documentsincluding copies of Strawman, Woodenman, Tinman, Ironman, Steelman,and versions of the "Red" language are availablefrom Mary S. Van Deusen.

Ada did not fare as well as it could have, primarily because it costfar too much to get and use an Ada compiler.They were often orders of magnitude more expensive to buy, and typicalPCs couldn't run them (you needed nonstandard memory cards just to load one).There were reasons for this.A strategic decision made in the early version of the Ada language,which I believe was a terrible mistake, was its rule that there would beno subsets and no supersets.Allowing arbitrary subsetting and supersetting would have been a problem,but havingno subsets or supersets was an overly-strict rule.I think if there had been at least a standard subset without tasking,and perhaps a few other capabilities, early Ada would have fared muchbetter.You can create standards with standardized subsets and supersets(I did that with OpenDocument OpenFormula), and that would havemade Ada far more practical for the computers at the time.A subtle related problem was that people thought that because Ada wasambitious, ithad to be hard to implement - a self-fulfillingprophecy.Too many of its early implementers didn't focus on making the implementationseasy.The result was that while early Ada compilers were capable, they werealso slow, big, and very expensive... and that severely hampered whereAda could be used in practice.Cost matters - failing to ensure that Ada compilers were affordableturned out to be a disastrous mistake.

After the language was standardized as Ada 83 its history becomesmuch easier to track.TheWikipediaarticle on the Ada programming language has much about its evolution.One part of Ada's history that perhaps was not so clear was thatafter its original release,Robert Dewar determinedhow to implement key Ada requirements in a more conventional way,resulting in a far smaller, far faster, and far less expensive Ada compiler.Indeed, Ada has been part of the GCC compiler since the 1990s, makingAda far more available.

You can get more information about the history of the Ada programminglanguage in:


Credit and Legal Notices

Feel free to copy Steelman On-Line, but if you use one of these electronicversions please giveDavid A. Wheelercredit for doing the conversions to electronic media.

Please note that the comparison paper is copyright (C) 1996David A. Wheeler.This paper is not endorsed by, and does not necessarily representthe views of Mr. Wheeler's employer,the U.S. Department of Defense (DoD), or the U.S. Government.You may copy it freely as long as credit is given to the author.


Version Information

You are viewing version 1.2.This version corrects several small errors in the Steelman document andadds the paper comparing Ada, C, C++, and Java to the Steelman requirements.This version was originally posted on "Ada Home" when David A. Wheelerdidn't have his own web site.

Version 1.1 added an ASCII-only version of the document, andchanged the background color to white to make it easier to read.Minor corrections have been made(e.g. an extra paragraph break in requirement 1E has been removedand extra quotes in some sections have been removed) andsome hypertext links have been added.It also adds the hypertext link to the short list of requirements.



[8]ページ先頭

©2009-2025 Movatter.jp