Ada (programming language)
Ada is a statically typed, strongly-typed, object-oriented programming language that was designed by Jean Ichbiah of CII Honeywell Bull on behalf of the US Department of Defense. It is a multipurpose, object-oriented and concurrent language, being able to go from the ease of Pascal to the flexibility of C++.
It was designed with security in mind and with a philosophy aimed at reducing common and hard-to-discover errors. To do this, it is based on a very strong typing and on execution-time checks (which can be deactivated for the benefit of performance). Task synchronization is done using the rendezvous primitive.
Ada is mainly used in environments where high security and reliability are required, such as defense, aeronautics (Boeing and Airbus), air traffic management (such as Indra in Spain) and the aerospace industry among others.
History
The language was designed on behalf of the United States Department of Defense (DoD). During the 1970s, this department had projects in a myriad of languages and was spending a lot of money on software. To solve it, a single language was sought that met certain standards contained in the Steelman document. After a study of the existing languages at the time, it was decided that none fully complied with them, so a public contest was held to which four teams submitted, whose proposals were named with a color: red (Intermetrics), green (CII Honeywell Bull), blue (SofTEch) and yellow (SRI International). Finally, in May 1979 the green proposal designed by Jean Ichbiah of CII Honeywell Bull was selected and named Ada. This proposal was a successor to an earlier language by this team called LIS and developed during the 1970s. The Ada draft reference manual was published in the ACM SIGPLAN Notices in June 1979. The Military Standard reference manual was approved on 10 December 1980 (Ada Lovelace's birthday) and was numbered MIL-STD-1815 in honor of Ada Lovelace's birth year. In 1981, C. A. R. Hoare used his Turing Award to criticize Ada for being too complex and therefore unreliable, but he later seemed to back down in a foreword he wrote for an Ada textbook.
Ada attracted a lot of attention from the programming community as a whole during its early days. Its sponsors and others predicted that it could become a dominant language for general-purpose programming and not just for defense-related work. Ichbiah publicly stated that within ten years, only two programming languages would remain: Ada and Lisp. Early Ada compilers struggled to implement this large and complex language, and both compile-time and run-time performance tended to be slow and tooling primitive. Compiler vendors devoted most of their efforts to pass the government-required Ada Compiler Validation Capability (ACVC) validation package, with massive language conformance testing, which was required in another novel feature of the Ada language effort. The Jargon File, a dictionary of hacker slang that originated between 1975 and 1983, notes in an entry on Ada that "it is precisely what u it couldn't wait given that kind of fiat backing; designed by committee... difficult to wear, and overall a disastrous waste of billions of dollars... Ada Lovelace... would almost certainly blanch at the use to which his name has been put lately; the kindest thing that's been said about it is that there's probably a nice little tongue screaming its way out from inside its huge elephantine mass.
The name was chosen in commemoration of Lady Augusta Ada Byron (1815-1852), Countess of Lovelace, daughter of the poet Lord George Byron and the mathematician, activist and aristocrat Anne Isabella Noel Byron, considered the first programmer of history by his collaboration and relationship with Charles Babbage, creator of the analytical engine.
The language became an ANSI standard in 1983 (ANSI/MIL-STD 1815) and an ISO standard in 1987 (ISO-8652:1987). Steelman's language requirements were those that a general-purpose high-level programming language should meet, created by the United States Department of Defense in the Department of Defense Common Higher Order Language program in 1978. of this document they were called, in order, "Strawman", "Woodenman", "Tinman" and "Ironman".
The requirements focused on the needs of embedded computing applications and emphasized reliability, maintainability, and efficiency. In particular, they included facilities for exception handling, runtime verification, and parallel computing.
It was concluded that no existing language met these criteria sufficiently, so a contest was held to create a language that came closest to meeting them. The design that won this contest became the Ada programming language.
The resulting language closely followed Steelman's requirements, though not exactly.
The first validated implementation of Ada was the NYU Ada/Ed translator, certified on April 11, 1983. NYU Ada/Ed is implemented in the established high-level language SETL. Several commercial companies began offering Ada compilers. and associated development tools, including Alsys, TeleSoft, DDC-I, Advanced Computer Techniques, Tartan Laboratories, Irvine Compiler, TLD Systems, and Verdix. Computer manufacturers that had significant business in the defense, aerospace, or related industries, they also offered Ada compilers and tools on their platforms; these included Concurrent Computer Corporation, Cray Research, Inc., Harris Computer Systems, and Siemens Nixdorf Informationssysteme AG.
In 1991, the US Department of Defense began requiring the use of Ada (the "Ada mandate") for all software, though exceptions to this rule were often granted The Department of Defense Ada mandate was effectively removed in 1997, when the Department of Defense began to adopt commercial off-the-shelf (COTS) technology. Similar requirements existed in other NATO countries: Ada was required for systems NATO languages involving command and control and other functions, and Ada was the required or preferred language for defense-related applications in countries such as Sweden, Germany, and Canada.
By the late 1980s and early 1990s, Ada compilers had improved in performance, but there were still barriers to fully exploiting Ada's abilities, including a task model that was different from what they were used to most real-time programmers.
Due to Ada's safety-critical support features, it is now used not only for military applications, but also in commercial projects where a software bug can have serious consequences, e.g. avionics and air traffic control, rockets commercials such as the Ariane 4 and 5, satellites and other space systems, rail transport and banking. For example, the aircraft's information management system, the fly-by-wire system software on the Boeing 777, was written in Ada. Developed by Honeywell Air Transport Systems in collaboration with DDC-I consultants, it became possibly the best known of all Ada projects, civil or military. The Canadian Automated Air Traffic System was written in 1 million Ada lines (SLOC count). It featured advanced distributed processing, a distributed Ada database, and an object-oriented design. Ada is also used in other air traffic systems, for example the UK Air Traffic Control System Next Generation Interim Future Area Control Tool Support (iFACTS) is designed and implemented using SPARK Ada. It is also used in the French TVM cab signaling system on the TGV high-speed rail system and on suburban metro trains in Paris, London, Hong Kong and New York.
Standardization
The preliminary Ada can be found in ACM Sigplan Notices Vol 14, No 6, June 1979.
Ada was first published in 1980 as ANSI standard ANSI/MIL-STD 1815. Because this first version contained many errors and inconsistencies (see Summary of Ada Language Changes), the revised edition was published in 1983 as ANSI/MIL-STD 1815A. Without further change, it became an ISO standard in 1987, ISO 8652:1987. This version of the language is commonly known as Ada 83, from the date of its adoption by ANSI, but is sometimes also referred to as Ada 87, from the date of its adoption by ISO. This is the Ada 83 Reference Manual. There is also a French translation; DIN translated it into German as DIN 66268 in 1988.
Ada 95, the joint ISO/IEC/ANSI ISO/IEC 8652:1995 standard (see Ada 95 RM) was published in February 1995, making it the first object-oriented programming language ISO standard. To help with standard revision and future acceptance, the United States Air Force funded the development of the GNAT compiler. Currently, the GNAT compiler is part of the GNU Compiler Collection.
Work has continued on improving and updating the technical content of the Ada language. A technical corrigendum to Ada 95, ISO/IEC 8652:1995/Corr 1:2001 (see Ada 95 RM with TC 1), and a major amendment, ISO/IEC 8652, were published in October 2001.:1995/Amd 1:2007 (see Ada 2005 RM) was published on March 9, 2007, commonly known as Ada 2005 because work on the new standard was completed that year.
At the Ada-Europa 2012 conference in Stockholm, the Ada Resource Association (ARA) and Ada-Europa announced the completion of the design of the latest version of the Ada language and the submission of the reference manual to ISO/IEC JTC 1/SC 22/WG 9 of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) for approval. ISO/IEC 8652:2012 (see Ada 2012 RM) was published in December 2012, known as Ada 2012. A technical corrigendum ISO/IEC 8652:2012/COR 1:2016 has been published (see RM 2012 with TC 1).
Despite the names Ada 83, 95, etc., legally there is only one Ada standard, that of the latest ISO/IEC standard: with the acceptance of a new version of the standard, the older one withdraws. The other names are just informal referring to a certain edition.
Other related standards include ISO/IEC 8651-3:1988 Information processing systems—Computer graphics—Graphics Kernel System (GKS) language bindings—Part 3: Ada.
Compilers
A widely used Ada compiler is GNAT, originally developed by New York University under DoD sponsorship. It is based on GCC technology and is free software. It is currently maintained by AdaCore (previously called Ada Core Technologies), a company that offers support and services for the compiler.
There are other commercial compilers.
Features
- The syntax, inspired by Pascal, is quite legible even for people who do not know the language. It is a language that does not spare the length of the key words, in the philosophy that a program is written once, it is modified tens of times and reads thousands of times (legiability is more important than writing speed).
- It is indifferent to the use of capitals and lowercases in identifiers and keywords; that is, it is a language case-insensitive.
- In Ada, the entire programme is a single procedure, which may contain subprogrammes (procedurements or functions).
- Each sentence is closed with end What?. It is a way to avoid mistakes and facilitate reading. It is not necessary to do so in the case of subprogrammes, although all manuals advise it and almost all Ada programmers do.
- The assignment operator is :=equality =. C and similar programmers can be confused by this trait inspired by Pascal.
- The predefined attribute syntax is Object' attribute (o) Type' attribute) (note: this only affects attributes predefined by language, since it is not the concept of typical OOP attribute.)
- It distinguishes between "procedures" (subrutins that do not return any value but can modify their parameters) and "functions" (subrutins that return a value and do not modify the parameters). Many programming languages do not make this distinction. Ada's functions favor security by reducing potential side effects, as they cannot have parameters in out.
Ada Examples
- Hello, world
A common example of programming language syntax is "Hello world". In Ada, it would be done like this:
with Ada.Text_IO; use Ada.Text_IO;procedure Hello isbegin Put_Line ("Hello, world!");end Hello;
- Data types
- Integer: an integer.
- Float: a decimal number.
- Character: a lyric or keyboard symbol (it can also be a number or several, but you can't make operations between them).
- String: consists of a string of characters.
- Array: an array or vector is a variable that groupes several elements of any of the previously described types.
Example of using array:
type T_vector is array(1..10) of integer; -- we are defining the variable T_vector as a data type that will store 10 integer elements.
Vector1:T_vector; -- We are declaring a variable called "Vector1" of type "T_vector" previously defined.
To access each of the gaps, it would be accessed as follows:
Vector1(4):= 5; --Gap 4 of the Vector1 variable has the value of 5.
Contenido relacionado
Speech synthesis
White space
BitTorrent