Header Links

Ada 95 Takes Off
Faster Than Expected


By Dr. Charles B. Engle (AJPO) and Brad Balfour (CACI)

Ada 95 Milestones

Ada 95 is now a reality in the software development marketplace. Forget the things you’ve heard about Ada before -- this is a whole new ball game. It’s an upgraded, modernized successor to the original 1983 version of the Ada programming language. In rapid succession, Ada 95 reached several key milestones during 1995:

Completely standardized -
The updated language definition [ANSI/ISO/IEC 8652:1995 and FIPS 119-1] adds four new key technologies to Ada: full support for Object-Oriented Programming, improved real-time facilities and performance, enhanced support for programming-in-the-large, and an improved ability to interface with software written in other languages.

New Ada 95 Compiler Validation Capability -
Compilers can be verified for compliance with the standard.

Available Ada 95 compilers -
Many now fully implement the standard and have been validated with the ACVC; the others are moving quickly to catch up with the market leaders. One compiler is even free (including the source code) on a variety of platforms.

Successfully completed projects -
Many of the first Ada 95 users have completed projects in Ada 95 and are spreading the word on how well it works.

Supported software and tools -
Libraries, bindings, and tools to support developers in modern software development (e.g., CORBA, WWW, Client/Server, Win 32, etc.).

Overcame Ada 83’s shortcomings -
Ada 95 fully supports OOP (including both inheritance and polymorphism); improves the performance of tasking and real-time support with the addition of protected units; shortens recompilation times by introducing new hierarchical library units; and co-exists in a multi-language world where it calls and is called by COTS software written in other languages.

Development History

Ada 95 was created in Cambridge, MA, but the new language’s emergence was an international effort. Chief designer Tucker Taft of Intermetrics Inc., led the revision that culminated in the international language standardization in February 1995. This resulted in worldwide consensus on the features of the new language. A necessary part of this revision was feedback from many compiler vendors as they implemented the new language features. They have been providing incremental releases of Ada 95 compilers to the software development community for the last three years.

Once the standard was jointly finalized by ANSI and ISO, the finishing touches were put on the ACVC (Ada Compiler Validation Capability). Certification that a compiler has passed this suite of 3000+ user-oriented tests provides software developers with the assurance that the compiler complies with the language standard. Because vendors had been incrementally improving their compilers as the language evolved, the compilers have been quick to be validated. As of July 1996, 15 compilers from 5 different vendors have passed the ACVC. All other Ada compiler vendors are quickly attempting to catch up to these first market leaders and have announced their plans to validate compilers during 1996.

Tools and Compilers

Another notable change in the Ada market is the emergence of a pair of new compiler vendors for Ada 95. This reverses a trend of vendor mergers that occurred in recent years. ACT provides support for the GNAT compiler (which is based on the GCC multi-language compilation system) and Green Hills Software has announced compilers for several embedded host-target pairs.

1995 also saw successful software products built using Ada 95. Some were incremental updates to projects begun with Ada 83, demonstrating the high degree of upward compatibility from Ada 83 to Ada 95. Others were new projects begun with Ada 95. For example, one group delivered an MIS client/server application running on Sun’s Sparc/Solaris and using Motif and Oracle 7. Others have rewritten Ada 83 embedded applications using Ada 95’s new real-time features and gained significant improvements. One effort has re-engineered a set of C++ components into Ada 95 and seen the code get simpler. These projects have demonstrated that Ada 95 is ready for use on production systems today.

This last year has brought the proliferation of a series of new libraries and tools for Ada 95. Many are shipped with every compiler as a part of the many new standard libraries in Ada 95: strings and string/text utilities, command line processing, date and time utilities, IO for files and streams, storage management, and several math libraries (including Elementary Functions, complex arithmetic and random number support). Other additional class libraries are shipped with the compiler. And, third-party class libraries, software components and tools are also now shipping.

The modern software developer also expects to be able to take advantage of the many COTS software components provided by hardware, compiler and tools vendors. Written in a variety of languages, these components most often come with an API (applications programming interface) in the C language. The emergence of several automated tools to generate bindings from the corresponding C language header files and new Ada 95 interfacing features make it much easier to create bindings to these APIs. Ada 95 developers regularly make use of CORBA, the Win32 and X-windows GUI APIs, ODBC, the World Wide Web (via cgi and the direct generation of Java bytecode from Ada 95 source), and others. In fact, since November 1994, Silicon Graphics Inc. has been demonstrating systems in which Ada 95 and C++ class libraries interoperate.

Changes from Ada 83

Most important among the realizations of the past year is that Ada 95 is not Ada 83. Results from projects using this latest version of Ada show that it overcomes the shortcomings that have dogged Ada 83 for years:

Gone is the notion that being "object-based" is good enough -- Ada 95 supports full OOP including both inheritance and polymorphism. The OOP features draw from the best lessons learned by C++, Smalltalk and Eiffel. Projects report that there are no problems taking OO models in notations such as Booch ’94 and implementing them using Ada 95.

No more are the complaints from real-time and embedded developers that the tasking model doesn’t match their needs, that it is cumbersome and inefficient. They now have a much simpler solution. Ada 95 has streamlined tasking support with a lightweight data-oriented synchronization mechanism and more flexible task scheduling policies.

Say good-bye to the days of multiple-day recompilation of Ada 83 software. Ada 95 has provided developers with the ability to extend packages with hierarchies of child library units. These make the maintenance and upgrade of existing software much faster. Plus, they reduce the pain associated with integrating software from large teams of geographically distributed developers.

An end to the difficulties of integrating Ada with COTS software. Ada 95 can call on COTS software components and class libraries written in C, Cobol, Fortran, C++, etc. And just as importantly, other languages can call Ada 95 modules, making Ada 95 an ideal "glue" language.

Similarly, an end to late or non-existent bindings to important services. Ada 95 adds the needed features to support vital technologies such as "call-backs." Additionally, tools to automatically generate 80% to 90% of Ada 95 bindings from C and C++ APIs are available -- providing developers a crucial automated step. Never again must Ada 95 developers lag behind those using C or C++ because needed bindings don’t exist.

So long to the lack of standard utility components and class libraries. Ada 95 defines a full set of components as a part of the standard and they are provided with every compiler. These include: strings and string/text utilities, command line processing, date and time utilities, IO for files and streams, storage management, and several math libraries (including Elementary Functions, complex arithmetic and random number support).

And finally, the curtain has come down on the day of expensive Ada 83 compilers. The most extreme example of this is the availability of GNAT for Ada 95, a free compiler that is part of the GNU GCC multi-language compilation system. Available via the Internet and on low-cost CD-ROMs, it was intended to fill a void among academic researchers for a free compiler (including the full source code). Not surprisingly, GNAT has now become the most widely used Ada 95 compiler for the development of production software.

1995 has been an impressive year for Ada 95. This new version of Ada has passed a trial by fire through its first usage in the development of production software. One thing is clear: the rumors of Ada’s death have been greatly exaggerated!

Sidebar

Ada 95 Freedoms vs. Ada 83 Limitations


Ada 95

Ada 83
Supports full Object-Oriented Programming (OOP).
Ada 83 is only "object-based."

Has streamlined tasking support (a lightweight data-oriented synchronization mechanism and more flexible task scheduling policies).
Ada 83, tasking could sometimes be cumbersome and inefficient. It did not always match real-time developers needs.
Hierarchies of child library units speed the recompilation of large software systems.
Ada 83 designs could sometimes lead to multiple-day recompilation.
Can call on COTS software components and class libraries written in C, Cobol, Fortran, C++, etc. and other languages can call Ada 95 modules.
With Ada 83, programmers could call out, but with difficulty if the C code was "tricky."


Additional features support generating bindings faster.

Ada 83 lacked some features to easily map 100% onto C bindings.
Defines a full set of utility components as a part of the standard.
Ada 83 didn’t standardize many useful utilities.
Compilers are much less expensive. Some are even free!
Ada 83 compilers were expensive.


Footer File


Home/Virtual Library/Flyers/ Last Updated: 01/05/99