|
COMPLETE
Ada is a general-purpose, internationally-standardized computer programming
language developed by the U.S. Department of Defense to help software
designers and programmers develop large, reliable applications. The Ada
language enhances
portability,
maintainability,
flexibility,
reliability, and
provides
interoperability
by standardization. The Ada 83 (1983) version
[ANSI 83]
(international standard:
ISO/IEC 8652: 1987) is considered object-based as
opposed to object-oriented
(see
Object-Oriented Programming Languages)
because it does not fully support inheritance or polymorphism
[Lawlis
96].
The Ada language supports principles of good software engineering and
discourages poor practices by prohibiting them when possible. Features that
support code clarity and encapsulation (use of packages, use of generic
packages and subprograms with generic parameters, and private and limited
private types) provide support for maintenance and
reusability.
Ada also features strong typing--stronger than C or C++.
The Ada 83 language is independent of any particular hardware or operating system; the interface to any given platform is defined in a specific "System" package. Ada features that support portability include the ability to define numerical types using system-independent declarations and the ability to encapsulate dependencies.
Ada
compilers are validated against established written
standards- all standard language features exist in every validated Ada
compiler. To become validated, a compiler must comply with the
Ada Compiler Validation Capability (ACVC) suite
of tests. Because of language standardization and required compiler validation, Ada provides an extremely high degree of support for interoperability and portability.
Ada 83 includes features that can be used for object-based programming, but it stops short of providing full support for object-oriented programming (OOP); this is partly because of concerns regarding runtime performance during Ada's development.
By requiring specifications such as type specifications, by performing consistency checks across separately compiled units, and by providing exception handling facilities, Ada 83 provides a high degree of reliability compared to other programming languages.
Ada 83 provides features such as tasking, type declarations, and low-level
language features to give explicit support of concurrency and real-time
processing. However, Ada 83 does not specify tasking and type declarations in
such a way that the resulting performance can always be predicted; this has
been a criticism of the language in certain application areas such as
embedded, real-time systems.
Ada was originally developed to support embedded software systems, but it has
proven to provide good support for real-time, computationally-intensive,
communication, and information system domains
[Lawlis 96].
When combined with static code analysis or formal proofs, Ada can be used in
safety-critical systems. For example, Ada has successfully been used in the
development of the control systems for the safety-critical Boeing 777 Aircraft
[AdaIC 96].
When considering performance, benchmarks performed on both Ada and C software
with language toolsets of equal quality and maturity found that the two
languages execute equally efficiently- with Ada versions having a slight edge
over C versions
[Syiek
95].
The quality of the compiled code is determined mostly by the quality of the compiler and not by the language. The burden of optimization is somewhat automated in Ada, as opposed to languages like C, where it is manually performed by the programmer.
When attempting to interface Ada 83 with other languages, several technical
issues must be addressed. In order for Ada to call subroutines written in
another language, an Ada compiler must support the pragma interface for the
other language and its compiler. Similarly, if another language must call Ada
subroutines, that language's compiler may also need modifications. The data
representation between Ada and the other language must be compatible. Also,
the system runtime support environment may need to be modified so that space
is not wasted by functionally redundant support software
[Hefley
92].
Ada 83 has recently been superseded by
Ada 95 (see Ada 95). This new version places the software community into a transition period. Among the issues to be considered in transitioning from Ada 83 to Ada 95 are the following:
The current "philosophy" is that unless a demonstrated need exists, current
operational systems or systems currently in development using Ada 83 do not
need to transition to Ada 95
[Engle
96].
Refer to the
Ada 95 technology description for more
information on transitioning from Ada 83 to Ada 95.
A significant resource that addresses management and technical issues
surrounding the adoption of Ada is the Ada Adoption Handbook
[Hefley 92].
Ada 83, with over 700 validated compilers
[Compilers 96],
has been used on a wide variety of programs in embedded, real-time,
communication, and information system domains. It is supported by many
development environments. Over 4 million lines of Ada code were successfully
used in developing the AN/BSY-2 and AN/BQG-5 systems of the Seawolf submarine-
a large, extensive, embedded system
[Holzer
96].
Ada has become the standard programming language for airborne systems at
Boeing Commercial Airplane Group (BCAG). Boeing used Ada to build 60 percent
of the systems on the Boeing 777, which represents 70% of the 2.5 million
lines of developed code
[Pehrson
96,
ReuseIC 95].
Ada is increasingly being taught in schools- approximately 323 institutions
and companies are teaching Ada- a trend of 25% growth per year in schools and
courses; this indicates increased and continued acceptance of Ada as a
programming language
[AdaIC 96].
In a study performed in 1994, it was found that for life-cycle costs, Ada was
twice as cost effective as C
[Zeigler 95].
Common perceptions and conventional wisdom regarding Ada 83 (and
Ada 95) have been shown to be incorrect or only partially correct. These perceptions include the following:
Mangold examines these perceptions in some detail
[Mangold 96].
Other programming languages to consider are
Ada 95, C, C++, FORTRAN, COBOL, Pascal,
Assembly Language, LISP, or Smalltalk.
This technology is classified under the following categories. Select a
category for a list of related topics.
|
[AdaIC 96]
|
AdaIC NEWS [online]. Available WWW <URL:
http://sw-eng.falls-church.va.us/AdaIC/news/> (1996).
|
|
[ANSI 83]
|
ANSI/MIL-STD-1815A-1983. Reference Manual for the Ada Programming
Language. New York, NY: American National Standards Institute, Inc., 1983.
|
|
[Compilers 96]
|
Ada 83 Validated Compilers List [online]. Available WWW <URL:
http://sw-eng.falls-church.va.us/AdaIC/compilers/83val/83vcl.txt>
(August 1996).
|
|
[Engle 96]
|
Engle, Chuck. Re[2]: Ada 83/Ada 95 [email to Gary Haines], [online].
Available email:
ghaines@spacecom.af.mil
(August 19, 1996).
|
|
[Halang 90]
|
Halang, W.A. & Stoyenko, A.D. "Comparative Evaluation of High-Level
Real-Time Programming Languages." Real-Time Systems 2, 4 (November
1990): 365-82.
|
|
[HBAP 96]
|
Ada Home: The Home of the Brave Ada Programmers (HBAP) [online].
Available WWW <URL: http://lglwww.epfl.ch:80/Ada/>
(1996).
|
|
[Hefley 92]
|
Hefley, W.; Foreman, J.; Engle, C.; & Goodenough, J. Ada Adoption
Handbook: A Program Manager's Guide Version 2.0 (CMU/SEI-92-TR-29,
ADA258937). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon
University, 1992.
|
|
[Holzer 96]
|
Holzer, Robert. "Sea Trials Prompt U.S. Navy to Tout Seawolf Sub's Virtues,"
Defense News 11, 28 (July 15-20, 1996): 12.
|
|
[Lawlis 96]
|
Lawlis, Patricia K. Guidelines for Choosing a Computer Language: Support for
the Visionary Organization [online]. Available WWW <URL:
http://sw-eng.falls-church.va.us/> (1996).
|
|
[Mangold 96]
|
Mangold, K. "Ada95-An Approach to Overcome the Software Crisis?"
4-10. Proceedings of Ada in Europe 1995.
Frankfurt, Germany, October 2-6, 1995. Berlin, Germany: Springer-Verlag, 1996.
|
|
[Pehrson 96]
|
Pehrson, Ron J. Software Development for the Boeing 777 [online].
Available WWW <URL:
http://www.stsc.hill.af.mil/CrossTalk/1996/jan/Boein777.html> (1996).
|
|
[Poza 90]
|
Poza, Hugo B. & Cupak Jr., John J. "Ada: The Better Language for Embedded
Applications." Journal of Electronic Defense 13, 1 (January 1990): 47.
|
|
[ReuseIC 95]
|
Boeing 777: Flying High with Ada and Reuse [online].
Available WWW <URL:
http://sw-eng.falls-church.va.us/ReuseIC/pubs/flyers/boe-reus.shtml>
(1995).
|
|
[Syiek 95]
|
Syiek, David. "C vs. Ada: Arguing Performance Religion."
ACM Ada Letters 15, 6 (November/December 1995): 67-9.
|
|
[Tang 92]
|
Tang, L.S. "A Comparison of Ada and C++," 338-49. Proceedings of TRI-Ada
`92. Orlando, FL, November 16-20, 1992. New York, NY: Association for
Computing Machinery, 1992.
|
|
[Zeigler 95]
|
Zeigler, Stephen F. Comparing Development Costs of C and Ada
[online]. Available WWW <URL:
http://sw-eng.falls-church.va.us/> (1995).
|
Cory Vondrak, TRW, Redondo Beach, CA
Capt Gary Haines, AFMC SSSG
John Goodenough, SEI
20 June 97: updated URLs for [AdaIC 96] and [Pehrson 96].
10 Jan 97 (original)
The Software
Engineering Institute (SEI) is a federally funded research and
development center sponsored by the U.S. Department of Defense
and operated by Carnegie Mellon University.
Copyright
2007
by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/ada83_body.html
Last Modified: 11 January 2007
|