Ada is a computer programming language originally designed to support the construction of long-lived, highly reliable software systems. Its design emphasizes readability, avoids error-prone notation, encourages reuse and team coordination, and it is designed to be efficiently implementable.
A significant advantage of Ada is its reduction of debugging time. Ada tries to catch as many errors as reasonably possible, as early as possible. Many errors are caught at compile-time by Ada that aren't caught or are caught much later by other computer languages. Ada programs also catch many errors at run-time if they can't be caught at compile-time (this checking can be turned off to improve performance if desired). In addition, Ada includes a problem (exception) handling mechanism so that these problems can be dealt with at run-time.
Ada was originally designed for the U.S. Department of Defense (DoD) for real-time embedded systems, and there's a U.S. law mandating Ada's use in DoD software development projects (with various exceptions and waiver provisions). Ada is the most commonly used language in U.S. weapons systems modernization (more information about the DoD use of Ada is available).
However, Ada's user base has expanded far beyond the U.S. DoD to many other areas such as large-scale information systems, distributed systems, and scientific computation. Major Ada niches include aerospace and safety-critical systems. An informal 1994 survey concluded that Ada was the most popular language for safety-critical systems.
People use Ada for small projects as well as large ones, since Ada's error-catching capabilities (both compile-time and run-time) significantly reduce debugging time. Also, Ada's parallel constructs can take advantage of today's more advanced operating systems (such as Microsoft's Windows NT, Windows 95, and Mach).
Many people use Ada when the application must run quickly. The Ada programming language was designed to be efficiently implementable, since one of its key application domains is in real-time embedded systems (where efficiency is critical). The actual efficiency of an Ada program, of course, depends on the the algorithms selected and the actual Ada compiler used. The first Ada compilers, like many other first compilers of a given language, generated inefficient code; modern Ada compilers generally generate relatively good code. Sadly, the performance of the initial Ada compilers created a myth of slow execution that is only beginning to disappear. The best test of efficiency, of course, is to benchmark a specific compiler with the type of problem you wish to solve.
Ada was originally standardized by ANSI in 1983 (ISO released an equivalent standard in 1987). Ada was recently revised to add some new capabilities; this revision is called `Ada 9X' or `Ada 95'. Currently Ada compiler vendors are updating their compilers to add the new Ada 95 features. This tutorial covers the capabilities of Ada 95, but will note which features are new to Ada 95.
Ada is officially defined in its language reference manual (LRM). The complete Ada LRM is available on-line as a hypertext document. However, the LRM is not intended to be a tutorial and can be hard to understand if you're not already somewhat familiar with Ada. We will often refer to the LRM, and feel free to look at it if you're interested in more detail about a particular subject.
Ada was not designed by a committee. The original Ada design was the winner of a language design competition; the winning team was headed by Jean Ichbiah (Ichbiah's language was called "Green"). The 1995 revision of Ada (Ada 95) was developed by a small team led by Tucker Taft. In both cases, the design underwent a public comment period where the designers responded to public comments.
There are many Ada compilers, including a free Ada 95 compiler called GNAT based on the Free Software Foundation's gcc. There are also many Ada-related tools and on-line reference documents. A later section of this tutorial provides more information about on-line Ada information sources.
Which of the following is not an Ada capability?
You may also:
Go back to the tutorial home page
Skip to the next section
Go up to the outline of lesson 1David A. Wheeler (firstname.lastname@example.org)