Jump to content

Ada

From EDM2
Revision as of 09:08, 12 December 2014 by Reiknir (talk | contribs) (Standards)

Description

Ada is a modular, statically typed, structured object oriented and procedural language in the Algol family that was introduced in the early 80's by Groupe Bull and was largely modelled on Niklaus Wirth's Pascal and Modula-2 but added more safety features. The problematic feature of Ada is not the language itself, but the size of the combined language and libraries and bindings, this does not affect outputted code, programs written in Ada should perform in a similar fashion as other languages in the Algol family like C++ or Oberon, it is just that the development and verification of the full system takes a lot of time and this has lead to companies shipping language sub-sets, delivering compilers late, often by years and stifled open source development since it is not a tool that a small group of enthusiasts can take on in the free time easily.

History

Ada is usually described as having been developed at the behest of the USA Department of Defence, but that is not correct. French company Bull started work on a toolset for embedded "safe computing" in 1977 (or possibly slightly earlier) based around a Pascal derivative called LIS (Language d'Implementation de Systèmes) that Bull had used in-house as a system language. "Safe computing" was a buzzword in the 1970's when people came to realise that most tool chains relied on code quality and debugging rather than standards, structures and safety features. This was not a huge issue on the relatively small programs and the business, scientific and military environments that that early computers were used in, but when programs started to get more complex and toolchains longer, and computers increasingly started to take control of machinery, be it industrial robots, medical equipment or transportation infrastructure and vehicles, what did increasingly start to happen were accidents that could not be attributed to direct failures in hardware or by operators, but to errors in the controlling software, and not just the code that was written for the task but often the errors originated in the tools used to build the code in question, or even the tools used to build the tools.

These kinds of accidents started to cost not just money, but lives and that lead to the interest in Safe Computing. In the case of Bull, designer Jean David Ichbiah started to modify not just the tools used but the programming language itself, adding stronger structural types and later a module system lifted from Wirth's Modula-2 but also more explicit safety features and more emphasis on standardisation of the environment (libraries, bindings and such) than the minimalistic Pascal and Modula had, this allowed the conformance testing of not just the the compiler itself but all the tools used to develop the end product which was vital in regards to the safety features. Wirth and Dijkstra et. al. focused squarely on the language and ignored the libraries and modules, regarding these as add-ons or implementation specific features but in the real world these all affected the performance of the language as far as safety was concerned and therefore required as rigorous a testing as the compiler itself.

The USA Department of Defence had a very real world problem in the 1970's in that they wanted to cut down on the multitudes of languages used in the products they operated, but in the mid 70's they were estimated to be between 300 and 400 incompatible variants, this lead to numerous problems in regards to incompatibility and continuity, not only were companies not able to work on products delivered by companies no longer with us due to lack of expertise and or tools in a specific language variant, in many cases only one company could bid on some projects due to the same reason, meaning they could more or less dictate prices. This made the organisation keen to standardise on a single language that in addition had some Safe Computing features, they had tried previously in the decade with languages such as SPL/I but failed primarily to a lack of language flexibility.


A list of OS/2 implementations of Ada

  • Artek Ada/Lattice Ada - Announced but probably never shipped
  • GNAT - Open Source - Discontinued
  • IntegrAda/386 - Discontinued - Rebranded Janus/Ada compiler with some AETECH bundled tools
  • Intermetrics Ada - Announced, possibly never released.
  • Janus/Ada 83 - Discontinued
  • Janus/Ada 95 - Discontinued
  • OC Systems Ada - Announced for OS/2 PowerPC edition but probably never released.
  • Thomson Software Products Ada - Discontinued

Libraries and bindings

Editors with Ada support

A list of DOS implementations of Ada

A list of Ada implementations that run under WinOS/2

A list of Ada implementations that run under Java

A list of Ada implementations in JavaScript

Publications

Local articles

Tutorials and other learning material

Standards

  • The Ada standards specification was initially developed by the USA DoD and later ratified by ANSI, they are now governed by the international standards clearinghouse ISO.
  • Ada 83 - Initial standard - ISO-8652:1987
Ada 95 - ISO-8652:1995
  • Mostly upwards compatible, adds object-oriented extensions.
  • Ada information clearinghouse has most of the documentation that relates to the standard available for download.
  • Ada Semantic Interface Specification is an add-on to the Ada 95 standard
Ada 2005 - ISO/IEC 8652:1995/Amd 1:2007
  • Referred to as both "Ada 2005" and Ada 95 Amendment 1, depending on whom you talk to.
Ada 2012 - , ISO/IEC 8652:2012
  • Latest standard, changes are mostly to the environment (Unicode 32bit, Special needs etc), but some syntaxical and expression changes as well alongside a slight strengthening of the object orientation.