- :: 8 Works Cited
- Length: 1870 words (5.3 double-spaced pages)
- Rating: Excellent
The Ada language is the result of the most extensive and most expensive language design effort ever undertaken. The United States Department of Defense (DoD) was concerned in the 1970¡¦s by the number of different programming languages being used for its projects, some of which were proprietary and/or obsolete. Up until 1974, half of the applications at the DoD were embedded systems. An embedded system is one where the computer hardware is embedded in the device it controls. More than 450 programming languages were used to implement different DoD projects, and none of them were standardized. As a result of this, software was rarely reused. For these reasons, the Army, Navy, and Air Force proposed to develop a high-level language for embedded systems (The Ada Programming Language). In 1975 the Higher Order Language Working Group (HOLWG) was formed with the intent of reducing this number by finding or creating a programming language generally suitable for the department's requirements.
The working group created a series of language requirements documents - the Strawman, Tinman, and Ironman (and later Steelman) documents. Twenty-three existing languages were formally reviewed, FORTRAN, COBOL, PL/I, HAL/S, TACPOL, CMS-2, CS-4, SPL/I, JOVIAL J3, JOVIAL J73, ALGOL 60, ALGOL 68, CORAL 66, Pascal, SUMULA 67, LIS, LTR, TRL/2, EUCLID, PDL2, PEARL, MORAL, EL/I; but the team concluded in 1977 that no existing language met the specifications, though Pascal, ALGOL 68, or PL/I would be a good starting point (History of the Ada Programming Language). Requests for proposals for a new programming language were issued and four contractors were hired to develop their proposals under the names of Red, Green, Blue, and Yellow. In May of 1979, the Green proposal, designed by Jean Ichbiah at Cii Honeywell Bull, was chosen and given the name Ada, after Lady Ada Lovelace, the so-called first computer programmer. The reference manual was approved on December 10, 1980 (Ada Lovelace's birthday). The total number of high-level programming languages in use for embedded systems projects at the DoD fell from over 450 in 1983 to 37 by 1996. The DoD required the use Ada for every software project where new code was more than 30% of result, though exceptions to this rule were often granted. This requirement was effectively removed in 1997. Similar requirements existed in other North Atlantic Treaty Organization (NATO) countries.
The language became an ANSI standard in 1983 (ANSI/MIL-STD 1815), and an International Organization for Standardization standard in 1987 (ISO-8652:1987). This version of the language is commonly known as Ada 83, from the date of its adoption by ANSI. Ada 95, accepted in February 1995, the joint ISO/ANSI standard (ISO-8652:1995) is the latest standard for Ada, and is capable of handling the same tasks as C++ (i.e. the Object Oriented Paradigm).
To help with the standard revision and future acceptance the US Air Force funded the development of the GNAT Compiler (Ada Programming Language).
Ada was originally targetted at embedded and real-time systems and is still commonly used for those purposes today. It is positioned to address much the same tasks as C or C++. Ada is an internationally standardized, general-purpose programming language used in a wide variety of applications: from missile control to payroll processing to air traffic control. Ada contains features commonly found in other programming languages and provides additional support for modern programming practices, for controlling special purpose hardware to meet real-time deadlines, and for the creation and enhancement of large and complex programs by groups of programmers over long periods of time. The Ada 95 revision (designed by Tucker Taft of Intermetrics between 1992 and 1995) improved support for systems, numerical, and financial programming. Notable features of Ada include: Strong typing, run-time checking, parallel processing, exception handling, and generics. Ada 95 added support for object-oriented programming, including dynamic dispatch. Ada implementations do not typically use garbage collection for storage management. Ada supports a limited form of region-based storage management which allows some cases of access to unallocated memory to be detected at compile time. Ada supports run-time checks in order to protect against access to unallocated memory, buffer overflow errors, off-by-one errors, and other avoidable bugs. These checks can be disabled in the interest of efficiency. It also includes facilities to help program verification. For these reasons, it is very widely used in critical systems like avionics, weapons and spacecraft. One very expensive European Space Agency Ariane 5 rocket was lost due to arithmetic overflow in an Ada program, in which the relevant check was disabled. The Ada language definition is unusual among International Organization for Standardization standards in that it is content free. One effect of this is that the standard document (known as the Reference Manual or RM) is the usual reference resorted to by Ada programmers for technical details, much as many other languages have a standard textbook (Ada Programming Language).
Ada was designed with three overriding concerns: program reliability and maintenance, programming as a human activity, and efficiency. Hence, emphasis was placed on program readability over ease of writing, with eschews cryptic syntax for a more verbose English style for the sake of readability. These design goals can be seen in the language. It has strong typing and enforceable abstractions which have shown to increase reliability and ease maintenance. Also almost all constructs can be efficiently implemented with Ada (http://goanna.cs.rmit.edu.au/~dale/ada/aln.html).
History and content summary: Ada was designed by Jean Ichbiah at Cii Honeywell Bull in the 1970¡¦s. Ada supports the following platforms: Alpha OpenVMS, Compaq Tru64 UNIX for Alpha, HP PA/HP-UX, x86 GNU/Linux, x86 Windows NT / 2000 / XP, x86 LynxOS, MIPS/SGI IRIX, Sparc Solaris, PowerPC AIX (Ada Core Technologies). Important versions: Ada 83, Ada 95 (Ada 95 is completely object oriented). Dialects and Related Languages: Ada dialects and successors: PL/SQL, Oracle, PL/SQL, PostgreSQL, VHDL. Ancestors: Algol (Algol-60, Algol-68); Simula (Simula-67); CLU (Cyberlinguistics: Ada). Ada is still widely used today in real time critical systems, especially at the United States Department of Defense.
Ada is an imperative programming langauge, a structured, compiled, statically and strongly typed programming language, and encourages good programming practices by incorporating software engineering principles with modularity, portability, reusability and readability. These features reduce costs in software development, verifying, debugging, and maintenance that typically puts strain on an organization's resources over the life of the software. One important feature is it is portable. Ada developed for one system can easily be recompiled and ported to other systems, since all Ada compilers are validated up-front and Ada is an internationally standardized software language by MIL-STD-1815A, ANSI, and ISO. Modularity: Ada organizes code into self-contained units that can be planned, written, compiled, and tested separately; this feature allows programs to be written in portions by teams working in parallel before being integrated into the final product. Reusability: Ada's package concept allows users to develop software components that may be retrieved, used, and/or changed without affecting the rest of the program. Ada's Generic program units also allow programmers to perform the same logical function on more than one type of data. Packages and Generics also support data abstraction and object-oriented design. Reliability: Ada strong typing detects errors more easily in both initial and separate unit compilations. Ada's exception handling mechanism supports fault-tolerant applications by providing a complete and portable way of detecting and gracefully responding to error conditions. Ada's tasking features support parallelism using high-level constructs instead of ad-hoc, error-prone calls to operating system primitives. Maintainability:
Ada's program structuring based on modularity and high-level of readability makes it easier for one programmer to modify or enhance software written by another. Modularity also allows package modification without affecting other program modules (Some information on the Ada programming language).
Ada's globally documented successes include usage across a wide range of applications. Today Ada drives: Payroll systems, commercial banking systems, stock quotation transaction systems, language translation system and RDMSs; Geophysical exploration and data processing systems, and chemical analysis systems; Commercial cellular phone switching and commercial telecommunications applications like PABXs; FAA commercial jets, air traffic control systems, in-flight detection and guidance systems, flight training simulators, and flight control/flight display systems; NASAs Space Shuttle and Space Station Environments; Automated manufacturing systems, automated materials handling systems, robotics welding systems, and inventory management systems; Real-time continuous medical monitoring systems and real-time embedded control of copier and duplicator products; Strategic military embedded systems, the majority of which are used in real-time applications, systems and mission trainers (Some information on the Ada programming language).
Significant Language Features: Packages - Data types, data objects, and procedure specifications can be encapsulated into a package. This supports the program design of data abstraction. Exception Handling - Ada has very good exception handling capabilities which allow the program to handle its own run-time errors. Generic Program (Subprogram) Units - It is possible to write a procedure (for example, a sorting procedure) which does not require a data type to be specified. Parallel / Concurrent Processing - Ada supports parallel and concurrent execution of tasks. Ada 95 support the object-oriented programming, more flexible libraries, better control mechanisms for shared data (The Ada Programming Language).
Ada supports the common parameter passing modes found in imperative programming languages. It supports in, out, and in-out methods, with in being the default method. In Ada 83, formal parameters declared to be out can be assigned but not referenced. Parameters that are in can be referenced but not assigned. Parameters that are in-out can be both referenced and assigned (Sebesta 366).
Ada supports nearly strongly type checking. References to variables in variant records are dynamically checked for correct type values. Also, Ada allows programmers to breach Ada type-checking rules by specifically requesting that type checking be suspended for a particular type conversion (Sebesta 195). So Ada is strongly typed, but exceptions to the rule are permitted.
Ada is one of the few mainstream languages that supports concurrency from within the language. This has the benefit of stable semantics, and therefore portability between computers. The task and rendezvous mechanism of Ada83 has been enhanced through the introduction of protected objects and greater consideration for real time systems (http://goanna.cs.rmit.edu.au/~dale/ada/aln.html).
Variable creation and initialization: If the object declaration includes an initialization expression, the (explicit) initial value is obtained by evaluating the expression and converting it to the nominal subtype. If the object is created and there is not an initialization expression, any per-object expressions are evaluated and any implicit initial values for the object or for its subcomponents are obtained as determined by the nominal subtype (basically garbage data like in C++) (Ada 95 RM - 3.3.1 Object Declarations).
Language summary: Ada is an internationally standardized software language by MIL-STD-1815A, ANSI, and ISO. Ada 95 supports the object oriented paradigm. Ada has static typing, static scope, block scope, and scope/lifetime of variables similar to C++, but also supports dynamic scoping for objects and inheritance. Ada has built-in concurrency handling.
Ada Programming Language. 6 April 2003.
History of the Ada Programming Language. 6 April 2003.
Some information on the Ada programming language. 6 April 2003.
The Ada Programming Language. 6 April 2003.
Cyberlinguistics: Ada. 16 April 2003.
Ada Core Technologies. 16 April 2003.
Ada 95 RM - 3.3.1 Object Declarations. 24 April 2003.
http://goanna.cs.rmit.edu.au/~dale/ada/aln.html. 17 April 2003.
Sebesta, Robert W. Concepts of Programming Languages. Addison Wesley. 2002.