This is part one (of five) of this article. Click here to return to the start of the article, or click here to return to the article’s table of contents.
Ada is an unusual language because it was developed in response to a detailed set of requirements. In the early 1970s the United States Air Force discovered that their software systems were written in hundreds of different languages, and dialects of languages. This was seen as a serious problem. During military conflicts it is critical that military software must be maintained and updated efficiently. It is just not efficient to have to support hundreds of different languages. The Air Force joined with the other branches of the military to develop a set of requirements for a modern high level programming language that would meet their many needs. Once they had those requirements, they surveyed the available set of languages in an attempt to find one to use as a development standard. No suitable language was found.
The requirements were revised after comments from various software experts in government, industry , and academia. A competition was then created for companies to create a language meeting the government requirements. Those requirements included
After several rounds of competition the winner was a team from France lead by Jean Ichbiah. A name for this new language was chosen by members of the government team. The decision was to name the language in honor of Augusta Ada Byron, Countess of Lovelace. Ada was the mathematician who developed the programming for Charles Babbage’s difference engine in the early 1800s. She is recognized as the world’s first programmer.
Ada achieved ANSI standardization in 1980, and ISO standardization in 1983. In 1995 the language standard was updated. This update caused Ada to become the world’s first internationally standardized object oriented language.
|Strongly Typed||Ada is perhaps the most strongly typed language in commercial use. Strong typing is seen as a tool to ensure data correctness. C++, Java, and C# all claim to be strongly typed. Ada is more strongly typed than those languages. Unlike C, C++, Java, or C#, Ada does not provide implicit conversions between numeric types. Strong typing allows the compiler to identify some computational errors that can only be found through inspection, testing, or debugging in less strongly typed languages.|
|Modular||Ada provides a mechanism called packages that provide encapsulation and name spaces. Packages can be defined as separate compilation units, allowing a very efficient separate compilation model for developers. Packages are split into two pieces. The package specification defines the public interface to all the data and subprograms defined in the package. The package body provides the implementation of all the subprograms. This combination forces the programmer to define a contract to be used by all modules interfacing with a package.|
|Object Oriented||Ada fully supports programming by extension. It also actively supports polymorphic subprogram calls.|
|Concurrent||Ada has a very mature and robust syntax for creating concurrent (sometimes called threaded) applications. Most of the Ada concurrency features are over 20 years old, yet they are still far ahead of other commonly used languages.|
|Readable||Ada syntax derives from the Algol family of languages. Other members of this family include Pascal, Modula, and PL/SQL. Even managers can read Ada code.|
|Expressible||Ada allows you to
define your own numeric types. The compiler can then
determine if those types are being used
type voltages is digits 12 range -1.0..1.0;
The above type definition defines a type called voltages with 12 decimal digits of precision and a valid range of values from -1.0 through 1.0. Any attempt to assign a value to a variable of this type outside this range will have one of two results. If the assignment is static, performed at compile time, the compiler will issue an error. If the assignment is performed at run time the compiler supplied runtime checks will detect the error and raise an exception.
Ada arrays can start at any value, not only 0 or 1. This allows you to map index values directly to problem descriptions.
This ends part one (of five) of this article. Click here to continue with part two, Basic Ada Syntax.