Home | Contact | Pricing | News | Partners | Mailing List | Site Map

Ada answers. Building better software with Ada.

Benefits and Features

Ada has a set of unique technical features that make it highly effective for use in large, complex and safety-critical projects. But the benefits don’t stop there. We’ll explain how these same technical strengths can also translate into long-term business benefits.

Business Benefits - Overview

The programming language choice is one of many factors that affect whether a software project will succeed. Other obvious determinants are the skills of the programmers, the planning and management of the development process, and the quality of the development tools (IDE, compilers, etc). The role of the programming language, when viewed in this context, is to offer leverage: developers will do their jobs more effectively and efficiently when the language they are using offers better support for the various “ilities” (readability, maintainability, portability, etc.) These are precisely the goals that Ada was designed to meet, and which it has been achieving successfully for nearly twenty years in large, long-lived systems worldwide.

Development cost savings

For most large, long-lived systems the major effort arises not so much in the initial coding stage but rather during testing / quality assurance, functionality upgrades, porting to new platforms, and similar “back end” activities. Ada was specifically designed to address these issues and does so more effectively than other languages. Its many built-in checks allow the compiler or linker to detect errors that in a C-based language would only be caught during run-time debugging, when they are much more expensive to track down. Its reader-friendly syntax makes program maintenance easier. It avoids the trap of allowing programmers to write cryptic code that they may have understood at the time it was written, but which is likely to contain hidden errors, and to be extremely hard to modify or adapt as new requirements emerge. Moreover, with its expressive features and strong checking, Ada encourages a “think first, code later” discipline that translates into fewer bugs and higher productivity.

Maturity of language and implementations

Ada is an established and low-risk COTS technology. It was originally designed in the early 1980s (Ada 83) and was then enhanced in the mid 1990s (Ada 95) with careful attention paid, at both stages, to practical issues such as the effect of proposed language features on run-time efficiency. Vendors have had nearly ten years of implementation experience with Ada 95; high-quality compilers, extensive toolsets, comprehensive libraries, sophisticated IDEs, and interfaces with common third-party tools and technologies are available across a wide range of both native and cross platforms

Status as international standard

The Ada language is maintained by a dedicated technical working group under ISO (International Organization for Standardization). The ISO standardization process ensures vendor neutrality, thorough review, and language stability while also permitting periodic upgrades and amendments. Indeed, a revised and upward-compatible version of the Ada standard is expected in 2005, bringing a number of enhancements inspired by user experience with Ada 95. Unlike other languages that have achieved standardization only after implementations have become widespread, Ada was standardized first and implemented later. This avoided the technical and political problems of trying to define the syntax and semantics of features that were implemented in incompatible ways.

Interoperability with other languages

It is rare, especially in large systems, for the software to be developed solely in one programming language. Often there is a need for low-level routines written in C or assembly language, GUI components that might be written in C++ or Java, or numerics libraries that might be written in Fortran. Ada is unique in having standard features for interfacing with other languages. This makes it easier to develop multi-language systems — e.g., the way in which C can be called from Ada, or vice versa, is defined by the Ada standard — and also makes it easier to port such systems across different platforms and compilers. The Ada approach is also much more efficient than other styles (e.g. Java’s JNI), in which a middleware layer needs to perform run-time data conversions in order for modules in different languages to communicate with each other.

Ease of training programmers

Ada was designed to support sound software engineering practice, and its features follow consistent principles that are intuitive and easy to learn. Ada is much simpler to master than C++, a complex language with many syntactic and semantic subtleties. Ada is also easier to learn than Java, whose “pure” object-orientation can make simple programs surprisingly complicated and whose concurrency features are rather error-prone.

Several sorts of high-quality resources are available to individuals wishing to learn Ada, including textbooks, online tutorials and reference material, and live instruction. Experience from Ada educators over many years has shown that with a 5-day hands-on course, a programmer familiar with a language such as C can become proficient in Ada. Thus bringing an organization’s staff up to speed in Ada, even if they have little or no previous exposure to the language, is both practical and inexpensive.

Successful usage in practice

Ada has always been an attractive choice in application domains where reliability (versus, say, quickness to market) has been an overriding requirement. Historically this has been most evident in the defense and aerospace industry, with many million of lines of code in use on operational systems. Ada continues to enjoy a strong presence in this domain and is also used commercially in many fields including avionics, shipboard systems, nuclear reactor control, train and subway systems, and communication. Ada is especially attractive in the safety-critical domain, with fielded systems conforming with the most stringent levels of standards such as DO-178B.

Software portability

Real systems often need to operate on multiple platforms, e.g. for marketing reasons or because of an upgrade to the hardware or operating system. The ease or difficulty of such porting efforts is directly affected by the choice of programming language, and Ada has many qualities that will make this task easier. First, the language was designed to minimize implementation and platform dependences, and where such dependences are necessary Ada makes it easy to isolate them into well-defined modules that can be adapted as needed when the system is to be ported. Second, Ada is a precisely-defined international standard; ambiguities that could interfere with portability are avoided. Questions of interpretation are resolved by a vendor-neutral standardization body. Third, an extensive and openly available conformance test suite is used by compiler vendors to provide confidence that the language features are successfully implemented. Indeed, experience over the years with code portability in Ada has been overwhelmingly positive.

Learn about the technical features >