411 REFERENCE · Wikibooks
Ada Programming
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
thumbnail|300px
professional
__TOC__
Ada (programming language)
Ada Programming
Welcome to the Ada Programming tutorial at Wikibooks. This is the first Ada tutorial covering the Ada 2005, 2012 and 2022 standards. If you are a beginner you will learn the latest standard — if you are a seasoned Ada user you can see what's new.
Current Development Stage for Ada Programming is "75% June 8, 2024". At this date, there are more than 600 pages in this book, which makes Ada Programming one of the largest programming wikibooks.Category See :Ada Programming or /All Chapters
But still there is always room for improvement — do help us to expand Ada Programming. Even beginners will find areas to participate.
About Ada
right|thumbnail|270px|Augusta Ada King, Countess of Lovelace.
Ada is a programming language suitable for all development needs.
It has built-in features that directly support structured,
object-oriented, generic, distributed and concurrent programming.
Ada is a good choice for Rapid Application Development, Extreme Programming (XP),
and Free Software development.
Ada is named after Augusta Ada King-Noel, Countess of Lovelace.
Programming in the large
Ada puts unique emphasis on and provides strong support for, good software engineering practices that scale well to very large software
systems (millions of lines of code, and very large development teams). The following
language features are particularly relevant in this respect:
An extremely strong, static and safe type system, which allows the programmer to construct powerful abstractions that reflect the real world, and allows the compiler to detect many logic faults before they become errors.
Modularity, whereby the compiler directly manages the construction of very large software systems from sources.
Information hiding; the language separates interfaces from implementation, and provides fine-grained control over visibility.
Readability, which helps programmers review and verify code. Ada favours the reader of the program over the writer because a program is written once but read many times. For example, the syntax bans all ambiguous constructs, so there are no surprises, following the Tao of Programming's Law of Least Astonishment. (Some Ada programmers are reluctant to talk about source code which is often cryptic; they prefer program text which is close to English prose.)
Portability: the language definition allows compilers to differ only in a few controlled ways, and otherwise defines the semantics of programs very precisely; as a result, Ada source text is very portable across compilers and target hardware platforms. Most often, the program can be recompiled without any changes.Category Gaetan Allaert, Dirk Craeynest, Philippe Waroquiers
European air traffic flow management: porting a large application to GNU/linux
SIGAda'03
http://www.sigada.org/conf/sigada2003/SIGAda2003-CDROM/SIGAda2003-Proceedings/00-proceedings.html
Proceedings of the 2003 annual ACM SIGAda international conference on Ada
2003
29–37
10.1145/958420.958426
1-58113-476-2
http://www.sigada.org/conf/sigada2003/SIGAda2003-CDROM/SIGAda2003-Proceedings/p29-allaert.pdf
2009-01-02 Paper by Eurocontrol (PDF, 160 kB) on portability.
Standardisation: standards have been a goal and a prominent feature ever since the design of the language in the late 1970s. The first standard was published in 1980, just 3 years after design commenced. Ada compilers all support the same language; the only dialect, SPARK, is merely an annotated subset and can be compiled with an Ada compiler.
Consequences of these qualities are superior reliability, reusability and
maintainability. For example, compared to programs written in C,
programs written in Ada 83 contain "70% fewer internal fixes and 90% fewer bugs", and cost half as much to develop in the first place.Category Stephen F. Zeigler
Comparing Development Costs of C and Ada
1995-03-30
http://archive.adaic.com/intro/ada-vs-c/ada-vs-c.html
Our data indicates that Ada has saved us millions of development dollars.
2009-01-02
Ada shines even more in software maintenance, which often accounts for about 80% of the total
cost of development. With support for object-oriented programming, Ada 95 may bring even
more cost-benefit, depending on how objects are used; although no serious study comparable to Zeigler's has been published.
Programming in the small
In addition to its support for good software engineering practices,
which applies to general-purpose programming, Ada has powerful
specialised features supporting low-level programming for real-time, safety-critical
and embedded systems. Such features include, among others,
machine code insertions, address arithmetic, low-level access to memory, control over bitwise representation of data, bit manipulations, and
a well-defined, statically provable concurrent computing model called the
Ravenscar Profile.
Other features include restrictions (it is possible to restrict which language
features are accepted in a program) and features that help review and certify
the object code generated by the compiler.
Several vendors provide Ada compilers accompanied by minimal run-time kernels
suitable for use in certified, life-critical applications. It is also possible to
write Ada programs which require no run-time kernel at all.
It should come as no surprise that Ada is heavily used in the aerospace, defence,
medical, railroad, and nuclear industries.
The Language Reference Manual
ISO 8652
The Ada Reference Manual (RM) is the official language definition. If you have a problem and no one else can help, you should read the RM (albeit often a bit cryptic for non-language lawyers). For this reason, all complete (not draft) pages in Ada Programming contain links to the appropriate pages in the RM.
This tutorial covers Ada Reference Manual — ISO/IEC 8652:2023 Language and Standard Libraries, colloquially known as Ada 2022 or just Ada.
You can browse the complete Reference Manual at http://www.ada-auth.org/standards/22rm/html/RM-TOC.html
There are two companion documents:
The Annotated Reference Manual, an extended version of the RM aimed at compiler writers or other persons who want to know the fine details of the language.
The Overview of Ada 2022, an explanation of the features of this language edition.
The Ada Information Clearinghouse also offers the older Ada 83, 95, 2005 and 2012 standards and companion documents.
The RM is a collective work under the control of Ada users.
If you think you've found a problem in the RM, please report it to
the Ada Conformity Assessment Authority (the Ada RM explains how to do this, see http://www.ada-auth.org/standards/22rm/html/RM-0-2.html Introduction (58/1) ff). On this site, you can also see the list of "Ada Issues" raised by other people.
Ada Conformity Assessment Test Suite
ISO 18009
Unlike other programming languages, Ada compilers are officially tested, and only those which pass this test are accepted, for military and commercial work. This means that all Ada compilers behave (almost) the same, so you do not have to learn any dialects. The Ada standard does however allow compiler writers to include additional features and libraries that are not part of the standard.
Programming in Ada
Reading a document online is often quite cumbersome. So if you just started you can also download All Chapters (PDF version) 50% Sep 23, 2005 and print them out.
Getting Started
Where to get a compiler, how to compile the source, all answered here:
Basic Ada — Read Me First! 100% Sep 22, 2005
Finding and Installing Ada 100% Sep 22, 2005
Building an Ada program 100% Sep 22, 2005
Ada Development Environment 0% Jul 3, 2012
Language Features
These chapters look at the broader picture, introducing you to the main Ada features in a tutorial style.
Expressions 75% Jul 22, 2018
Control Structures 100% Dec 14, 2005
Type System 75% Jan 5, 2006
Constants 100% Oct 31, 2022
Representation Clauses 25% Feb 24, 2022
Strings 75% Jan 5, 2006
Subprograms 75% Jan 5, 2006
Packages 75% Jun 2, 2008
Input Output 50% Jun 2, 2008
Exceptions 100% Jan 5, 2006
Generics 100% Jan 5, 2006
Tasking 75% Jun 2, 2008
Object Orientation 100% Jun 22, 2010
Contract Based Programming 0% Aug 20, 2015
Memory Management (Access Types) 100% Jan 5, 2006
New in Ada 2005 100% Jan 5, 2006
New in Ada 2012 25% Feb 26, 2012
New in Ada 2022
Containers 50% Jan 5, 2006
Interfacing to other Languages 25% Nov 24, 2008
Coding Standards 25% Nov 24, 2008
Ada Programming Tips 25% Jan 5, 2006
Common Programming Errors 25% Jun 1, 2008
Computer Programming
The following articles are Ada adaptations from articles of the Computer programming book. The texts of these articles are language neutral but the examples are all Ada.
/Algorithms/
Chapter 1
Chapter 6
Knuth-Morris-Pratt pattern matcher
Binary search
/Error handling/
/Function overloading/
/Mathematical calculations/
/Statements/
/Control/
/Variables/
Language Reference
Within the following chapters we look at foundations of Ada. These chapters may be used for reference of a particular keyword, delimiter, operator and so forth.
Lexical elements 100% Dec 14, 2005
Keywords 75% Jan 6, 2008
Delimiters 75% Jan 10, 2005
Operators 100% Jan 10, 2005
Attributes 50% Jan 2, 2009
Aspects 25% Feb 26, 2012
Pragmas 25% Jan 10, 2005
Restrictions 25% Feb 26, 2012
Predefined Language Libraries
This section is a reference of the Ada Standard Library, which is extensive and well structured. It has these four root packages:
Standard 75% Aug 29, 2021
Ada 75% Aug 29, 2021
Interfaces 75% Aug 29, 2021
System 75% Aug 29, 2021
Besides the Standard Library, compilers usually come with a built-in library. This chapter describes the
GNAT library in particular.
GNAT 25% Sep 22, 2005
External Libraries
This section is a reference of third-party Ada libraries which are not part of the compiler predefined environment but are freely available.
Libraries
Multi Purpose
Container Libraries
GUI Libraries
Distributed Objects
Database
Web Programming
Input/Output
Platform specific
Programming Ada in Linux
Programming Ada in Windows
Programming Ada in Virtual Machines (Java, .NET)
External resources
Open-source portals
Web Tutorials
Web 2.0
Collections
Printable Versions
Ada Programming/All Chapters 1,839 kb
Ada Programming 2,663 kb, 243 pages Ada Programming
The following are collection pages. All collection pages are comprised of groups of the already available pages. You can use them for printing or to gain a quick overview. Please note that those pages are partly very long.
Tutorial Show HTML (1,839 kb) — Download PDF (2,663 kb, 243 pages)
Keywords Show HTML (470 kb) — Download PDF (290 kb, 59 pages)
Operators Show HTML (232 kb) — Download PDF (189 kb, 27 pages)
Source Code
The Source from the Book is available for download and online browsing. The latter allows "drill down", meaning that you can follow the links right down to the package bodies in the Ada runtime library.
References
Further reading
Ada 2005 textbooks
John Barnes
Programming in Ada 2005
2006
Addison Wesley
0-321-34078-7
http://www.pearsonhighered.com/educator/academic/product/0,,0321340787,00%2Ben-USS_01DBC.html
Mordechai Ben-Ari
Ada for Software Engineers (Second Edition with Ada 2005)
2009
Springer
978-1-84882-313-6
http://www.springer.com/978-1-84882-313-6
Alan Burns, Andy Wellings
Concurrent and Real-Time Programming in Ada
2007
Cambridge University Press
978-0-521-86697-2
http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=9780521866972
Nell Dale, John W. McCormick
Ada Plus Data Structures: An Object Oriented Approach
2007
2nd
Jones and Bartlett
0-7637-3794-1
http://www.jbpub.com/catalog/9780763737948/
John W. McCormick, Frank Singhoff, Jérôme Hugues
Building Parallel, Embedded, and Real-Time Applications with Ada
2011
Cambridge University Press
978-0-521-19716-8
http://www.cambridge.org/gb/knowledge/isbn/item5659578/?site_locale=en_GB
Ada 2012 textbooks
John Barnes Programming in Ada 2012 2014 Cambridge University Press 978-1-107-42481-4 http://www.cambridge.org/gb/academic/subjects/computer-science/software-engineering-and-development/programming-ada-2012?format=PB
Andrew T.Shvets Beginning Ada Programming: From Novice to Professional 2020 Apress Media LLC, A Subsidiary of Springer Nature. 978-1-4842-5427-1 https://www.apress.com/gp/book/9781484254271
Ada 2022 textbooks
John Barnes (2022). Programming in Ada 2012 with a Preview of Ada 2022. Cambridge University Press.
John Barnes (2024). Programming in Ada 2022. Cambridge University Press.
Manuals and guides
Ada Quality & Style Guide: Guidelines for Professional Programmers (wikibook)
Rationale for Ada 2005, by John Barnes (2007)
Ada 2005 Reference Manual (2007)
Ada Reference Card (in PDF format)
High-Integrity Software
ISO/IEC TR 15942:2000, Guide for the use of the Ada programming language in high integrity systems. ISO Freely Available Standards
ISO/IEC TR 24718:2005, Guide for the use of the Ada Ravenscar Profile in high integrity systems. ISO Freely Available Standards
John Barnes
2003
High Integrity Software: The SPARK Approach to Safety and Security
Addison-Wesley
0-321-13616-0
External links
Resources
Ada Information Clearinghouse — News and resources
comp.lang.ada (Web archive, Google groups) — International Usenet newsgroup
ada-lang.io — Community site and forum
Research and user groups
Journals:
Ada-Letters
Ada User Journal (archive)
International Conferences/Workshops:
International Real-Time Ada Workshop (IRTAW) [IRTAW 15]
ACM SIGAda international conference on Ada [HILT 2012]
18th International Conference on Reliable Software Technologies — Ada-Europe 2013
17th International Conference on Reliable Software Technologies — Ada-Europe 2012
Ada Connection 2011 (videos)
Ada "Developers Room" at FOSDEM (2020)
Local conferences:
Ada-Belgium Conference
Associations
ACM SIGAda — ACM Special Interest Group on Ada
Ada-Europe
Ada Germany
Ada Spain
Ada-Belgium
Ada-France
Ada Switzerland
Free online books/courses
learn.adacore.com
The Big Online Book of Linux Ada Programming
Ada Distilled
Ada in Action
Introducing Ada 95
Learn Ada on the Web
Quick Ada
Ada 95: The Craft of Object-Oriented Programming — Free textbook originally published by Prentice Hall
Online Ada books
Authors and contributors
This Wikibook has been written by:
Martin Krischik (Contributions)
Manuel Gómez (Contributions)
Santiago Urueña (Contributions)
C.K.W. Grein (Contributions, more and more contributions)
Bill Findlay (Contributions)
B. Seidel (Contributions)
Simon Wright (Contributions)
Allen Lew (Contributions)
John Oleszkiewicz (Contributions)
Nicolas Kaiser (Contributions)
Larry Luther (Contributions)
Georg Bauhaus (Contributions)
Samuel Tardieu (Contributions)
Ludovic Brenta (Contributions)
Mateus de Lima Oliveira (Contributions)
Ed Falis
Pascal Obry
Bent Bracke (Contributions)
If you wish to contribute as well you should read Contributing and join us at the Contributors lounge.
Ada programming language
A
100%
es:Programación en Ada
fr:Programmation Ada
it:Ada