|
by Jim Rogers
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
- Readability the syntax had to focus on
readability. Military software systems are expected to
have a minimum lifetime of 30 years. This means that much
more effort and cost will be spent on maintenance than on
initial development. Readability was found to improve the
cost of maintenance.
- Efficiency the language had to be able to produce
very efficient code.
- Provability the language must strongly support
efforts to prove the correctness of the code. Military
software systems controlling weapons systems must work
correctly to avoid unintentional death and property
damage.
- Expressiveness the language should provide
the expressiveness so that developers can model the
problem domain clearly and directly, rather than modeling
through assumptions.
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.
| Feature |
Description |
| 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
appropriately. 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.
|