|Ada is a software development environment, including a programming language, with the goal of maximizing the amount of error detection possible as early in the development process as possible. The default of every software construct in Ada is safe. In most other languages, the default is unsafe. One can relax the safe default in Ada as necessary. It is difficult to promote a language with default of unsafe to safe. The error detection process can begin at the specification stage when Ada is used as a PDL. It continues through every other stage of a software engineering project because the compiler keeps track of the relationships between every associated entity in the product. This checking can even extend to the real-time and concurrent facets of a software design because tasking is built-in to the language. This permits the compiler to do consistency checking at every level of even the largest and most complicated of Ada programs.
In addition to maximizing error detection through the compiler, Ada emphasizes understanding and expressiveness. The solution to nearly any programming problem can be expressed in any programming language. We call that expressibility. More important is the ease of expressing that solution. We call that expressiveness. In many cases, programming languages are designed to express solutions in a targeted problem domain. Ada's syntax, structure, and semantic model facilitates the design of software components that directly express the needs of any given software application domain. At the same time, Ada allows the developer to easily place restrictions on a design to avoid features inappropriate in the solution of a given application problem.