ISO/IEC 8652 Information technology — Programming languages — Ada is the international standard for the computer programming language Ada. It was produced by the Ada Working Group, ISO/IEC JTC1/SC22/WG 9, of the International Organization for Standardization (ISO).
The latest edition is ISO/IEC 8652:2012, published 2012-12-10. The text of the earlier 1995 version of the standard, with Technical Corrigendum 1 and Amendment 1, is freely available for download and online reading.
Ada is a structured, statically typed, imperative, and object-oriented high-level computer programming language, extended from Pascal and other languages. It has built-in language support for design-by-contract, extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors. Ada is an international standard; the current version (known as Ada 2012) is defined by ISO/IEC 8652:2012.Ada was originally designed by a team led by French computer scientist Jean Ichbiah of CII Honeywell Bull under contract to the United States Department of Defense (DoD) from 1977 to 1983 to supersede over 450 programming languages used by the DoD at that time. Ada was named after Ada Lovelace (1815–1852), who has been credited as the first computer programmer.Comparison of multi-paradigm programming languages
Programming languages can be grouped by the number and types of paradigms supported.Comparison of programming languages
Programming languages are used for controlling the behavior of a machine (often a computer). Like natural languages, programming languages conform to rules for syntax and semantics.
There are thousands of programming languages and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmers may use dozens of languages in a career.
Comparison of programming languages is a common topic of discussion among software engineers. Basic instructions of several programming languages are compared here.Erroneous program
In the design of programming languages, an erroneous program is one whose semantics are not well-defined, but where the language implementation is not obligated to signal an error either at compile or at execution time. For example, in Ada:
In addition to bounded errors, the language rules define certain kinds of errors as leading to erroneous execution. Like bounded errors, the implementation need not detect such errors either prior to or during run time. Unlike bounded errors, there is no language-specified bound on the possible effect of erroneous execution; the effect is in general not predictable.Defining a condition as "erroneous" means that the language implementation need not perform a potentially expensive check (e.g. that a global variable refers to the same object as a subroutine parameter) but may nonetheless depend on a condition being true in defining the semantics of the program.GNAVI
GNAVI is an open-source visual software development environment that is composed of three major portions: GWindows GUI framework, GNATCOM ActiveX/COM framework, and GWenerator code generator. The inspiration for GNAVI is Delphi and Visual Basic, where the Pascal-family Ada programming language is utilized as a syntactically-similar substitute for Delphi's Object Pascal.
GNAVI is licensed under the GNAT Modified General Public License, allowing to release binaries without the source code.
One of the goals of the GNAVI community to promote the use of Ada among wider programming audiences by demonstrating that ISO standard Ada (i.e., ISO/IEC 8652) has many of the ease-of-programming qualities that have been attributed to proprietary Object Pascal. GNAVI for Microsoft Windows offers features comparable to Delphi and Visual Basic including the use of Active X controls and the ability to interface with Microsoft's .NET Framework and Sun's Java. As of 2009, GNAVI was also being ported to Mac OS X, Linux and other Unix-like operating systems.
The GNAVI website had seen no activity or releases for four and a half years, from December 2004 until early 2009, but on 14 March 2009, the community announced that it has resumed development and multiple versions have been released since then.ISO/IEC JTC 1/SC 22
ISO/IEC JTC 1/SC 22 Programming languages, their environments and system software interfaces is a standardization subcommittee of the Joint Technical Committee ISO/IEC JTC 1 of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) that develops and facilitates standards within the fields of programming languages, their environments and system software interfaces. ISO/IEC JTC 1/SC 22 is also sometimes referred to as the "portability subcommittee". The international secretariat of ISO/IEC JTC 1/SC 22 is the American National Standards Institute (ANSI), located in the United States.List of International Organization for Standardization standards, 8000-8999
This is a list of published International Organization for Standardization (ISO) standards and other deliverables. For a complete and up-to-date list of all the ISO standards, see the ISO catalogue.The standards are protected by copyright and most of them must be purchased. However, about 300 of the standards produced by ISO and IEC's Joint Technical Committee 1 (JTC1) have been made freely and publicly available.Lock (computer science)
In computer science, a lock or mutex (from mutual exclusion) is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy.Open standard
An open standard is a standard that is publicly available and has various rights to use associated with it, and may also have various properties of how it was designed (e.g. open process). There is no single definition and interpretations vary with usage.
The terms open and standard have a wide range of meanings associated with their usage. There are a number of definitions of open standards which emphasize different aspects of openness, including the openness of the resulting specification, the openness of the drafting process, and the ownership of rights in the standard. The term "standard" is sometimes restricted to technologies approved by formalized committees that are open to participation by all interested parties and operate on a consensus basis.
The definitions of the term open standard used by academics, the European Union and some of its member governments or parliaments such as Denmark, France, and Spain preclude open standards requiring fees for use, as do the New Zealand, South African and the Venezuelan governments. On the standard organisation side, the World Wide Web Consortium (W3C) ensures that its specifications can be implemented on a royalty-free basis.
Many definitions of the term standard permit patent holders to impose "reasonable and non-discriminatory licensing" royalty fees and other licensing terms on implementers or users of the standard. For example, the rules for standards published by the major internationally recognized standards bodies such as the Internet Engineering Task Force (IETF), International Organization for Standardization (ISO), International Electrotechnical Commission (IEC), and ITU-T permit their standards to contain specifications whose implementation will require payment of patent licensing fees. Among these organizations, only the IETF and ITU-T explicitly refer to their standards as "open standards", while the others refer only to producing "standards". The IETF and ITU-T use definitions of "open standard" that allow "reasonable and non-discriminatory" patent licensing fee requirements.
There are those in the open-source software community who hold that an "open standard" is only open if it can be freely adopted, implemented and extended. While open standards or architectures are considered non-proprietary in the sense that the standard is either unowned or owned by a collective body, it can still be publicly shared and not tightly guarded. The typical example of “open source” that has become a standard is the personal computer originated by IBM and now referred to as Wintel, the combination of the Microsoft operating system and Intel microprocessor. There are three others that are most widely accepted as “open” which include the GSM phones (adopted as a government standard), Open Group which promotes UNIX and the like, and the Internet Engineering Task Force (IETF) which created the first standards of SMTP and TCP/IP. Buyers tend to prefer open standards which they believe offer them cheaper products and more choice for access due to network effects and increased competition between vendors.Open standards which specify formats are sometimes referred to as open formats.
Many specifications that are sometimes referred to as standards are proprietary and only available under restrictive contract terms (if they can be obtained at all) from the organization that owns the copyright on the specification. As such these specifications are not considered to be fully open. Joel West has argued that "open" standards are not black and white but have many different levels of "openness". Ultimately a standard needs to be open enough that it will become adopted and accepted in the market, but still closed enough that firms can get a return on their investment in developing the technology around the standard. A more open standard tends to occur when the knowledge of the technology becomes dispersed enough that competition is increased and others are able to start copying the technology as they implement it. This occurred with the Wintel architecture as others were able to start imitating the software. Less open standards exist when a particular firm has much power (not ownership) over the standard, which can occur when a firm’s platform “wins” in standard setting or the market makes one platform most popular.Timeline of programming languages
This is a record of historically important programming languages, by decade.
ISO standards by standard number