Ada Books

Master Ada Programming with Free Books

Ada Books

Ada is a structured, statically typed, imperative, wide-spectrum, multi-paradigm, object-oriented high-level, ALGOL-like programming language, extended from Pascal and other languages. The language was developed in the late 1970s and early 1980s. Ada is named after Augusta Ada Byron (often now known as Ada Lovelace), daughter of the poet Lord Byron.

Ada has built-in language support for explicit concurrency, offering tasks, synchronous message passing, protected objects, and non-determinism. Ada incorporates the benefits of object-oriented languages without incurring the pervasive overheads.

Other notable features of Ada include: strong typing, inherent reliability, modularity mechanisms (packages), run-time checking, parallel processing, exception handling, the ability to provide abstraction through the package and private type, and generics.

Ada is particularly strong in areas such as real-time applications, low-level hardware access, and safety-critical software, as it has specialized design features, and high reliability. Most errors are detected at compile time and of those remaining many are detected by runtime constraints. While Ada was originally targeted at embedded and real time systems, the Ada 95 revision added support for object-oriented (including dynamic dispatch), numerical, financial, and systems programming. With its readability, scalability, and being designed for development of very large software systems, Ada is a good choice for open source development.

We publish a series covering the best open source programming books for other popular languages. Read them here.

Ada 95: The Craft of Object-Oriented Programming

Ada 95: The Craft of Object-Oriented Programming

By John English (486 pages)

Ada 95: The Craft of Object-Oriented Programming is an introduction to Ada 95. It uses an example-driven approach which gradually develops small trivial programs into large case-study type programs.

The main focus of this book is on maintenance problems, and using object-oriented technology to write maintainable, extensible programs. Program design is introduced throughout the book, with hypothetical maintenance scenarios used to show design shortcomings, and revise them to accommodate maintenance needs. Practical issues such as debugging programs are tackled, and important Ada features not found in other languages are dealt with practically and early on in the text. Each chapter ends with useful exercises.

Chapters cover:

  • Programming concepts
  • Fundamentals of Ada – includes program layout, context clauses, strings, and the beginnings of a simple calculator which is extended in later chapters
  • Statements – covers If statements, assignment statements, compound conditions, the case statement, range tests, the null statement, loops, and exception handling
  • Procedures, functions and packages – Zeller’s Congruence, declaring procedures and functions. The chapter also examines packages including child packages
  • Defining new data types – define data types which can be tailored fairly closely to the type of information that a particular program is concerned with modelling. The chapter covers standard data types, integers, subtypes, modular integers, real types, numeric literals, constants, and enumerations. The chapter ends with the type Boolean, and the type Character
  • Composite data types – record types, strings, declaring array types, multidimensional arrays and more
  • Exceptions – shows a programmer how to declare and re-raise exceptions, and obtain information about exceptions
  • Program design and debugging

Abstract Data Types

  • Private types – examines full and partial views, deferred constants, overloaded operators, the Use type clauses, and more
  • Designing with abstract data types – separate out the user interface, design the mode, define the view package, implement the ADT packages and more
  • Dynamic memory allocation – access types, linked lists, doubly linked lists, iterators, and more
  • Generics – generic packages, generic parameters and more
  • Building a calculator

Designing extensible software

  • Tagged types – variant records, tagged types, inheriting primitive operations and more
  • Polymorphism and dispatching – class-wide types, dispatching, abstract types, and stream input/output
  • Controlled types – memory leaks, user-defined finalisation, smart pointers, user-designed assignment, and testing controlled types
  • An object-oriented calculator
  • Designing a spreadsheet
  • Multitasking – looks at active objects, task types, communicating with tasks, sharing data between tasks, and more
  • Loose ends

Permission is given to redistribute this work for non-profit educational use only.

Ada 95: The Lovelace Tutorial

Ada 95: The Lovelace Tutorial

By David A. Wheeler (293 pages)

Ada 95: The Lovelace Tutorial is an introduction to Ada 95. The book explains the basics of the Ada computer programming language and assumes that the reader has had some exposure to another algorithmic programming language (such as Pascal, C, C++, Fortran, or BASIC).

Lovelace is interactive and contains many short sections, most of which end with a question to help ensure the reader understands the material. Object-oriented facilities of Ada are covered in depth, and the essential features of Ada programming are given thorough treatment.

Lessons cover:

  • Brief Introduction to Ada – What is Ada, simple program, use clauses, simple variable, integers, parameters and exceptions
  • Basic Ada Structure (Packages) – sections cover program units, declarations and bodies, packages, and compilation units
  • Ada Lexical Elements – looks at Ada from the bottom up
  • Procedures and Type Integer – the Ada type Integer is used to store integer values, declare a subprogram (procedure or function) declaration, subprogram Bodies and Local Variables
  • Statements (if, loop) – If statements, case statements, simple loops, and loop iteration schemes
  • Basic Types (Float, Boolean, subtypes, record) – type float, Boolean, creating types and subtypes, enumeration, arrays, records, and private and limited private types
  • Object-Oriented Programming – includes inheritance, dynamic dispatching, encapsulation, standard object-oriented format, abstract types and subprograms, and more
  • Introduction to String Types – examples types of strings, basics of type strings and more
  • Basic Input/Output – learn how to use more capabilities of Text_IO, especially how to read and write text files, line and file endings
  • Exceptions – learn how to define exceptions, how to raise exceptions, and how to handle exceptions
  • Generics – defining generics, generic formal parameters and more
  • Access Types – learn how to declare and use access types
  • Tasks and Protected Types
  • Ada-related Information
  • Ada Program Structure
  • Interfacing to Other Languages (including C and Java)
  • Miscellaneous Ada Subjects
  • Sample Ada Program “Small”

The electronic version of the Lovelace tutorial is released under the terms of the GNU General Public License (GPL).

Ada in Action

Ada in Action

By Do-While Jones (153 pages)

Ada in Action explores many selected advanced features and constructs of ADA and explains how to use them for the best results. It provides examples of how to write clear, correct, maintenance code and gives the reader re-usable components that can be used without modification in their own programs.

The book shows the reader to apply good software engineering principles and techniques to ADA programs through tested and proven methods. The text will be of benefit to military software and commercial software engineers and programmers, educational institutions and ADA programmers.

Chapters cover:

  • Introduction
  • Numeric Considerations – examines the POOR_COORDINATES package, the STANDARD_INTEGERS package, the non-existent STANDARD_FLOATS package, DIM_INT_32 package, generic INTEGER_UNITS package, generic FLOAT_UNITS package, DIM_FLOAT package, and more
  • IO Utilities – ASCII_UTILITIES package, TEXT_IO package, VIRTUAL_TERMINAL package, SCROLL_TERMINAL package, FORM_TERMINAL package, and more
  • Programming isn’t software engineering – looks at the show tool, the more tool, the write tool, the line tool, the search tool, and more
  • Testing software components and programs

The book is released under an open source license.

Ada 95 Rationale: The Language - The Standard Libraries

Ada 95 Rationale: The Language – The Standard Libraries

By John Barnes (466 pages)

Ada 95 Rationale: The Language – The Standard Libraries describes the rationale for Ada 95, the revised International Standard. It introduces Ada 95 and its powerful new mechanisms, and explains the rationale behind them.

The first part is an Introduction to Ada 95; it presents a general discussion of the scope and objectives of Ada 95 and its major technical features. The second part contains a more detailed chapter by chapter account of the Core language. The third part covers the various Annexes which address the predefined environment and the needs of specialized application areas.

Chapters explore:


  • Evolution of Ada 95
  • Highlights of Ada 95 – works through the major new features of Ada 95 and the consequential benefits as seen by the general Ada user
  • Overview of the Ada Language – explores objects, types, classes and operations, statements, expressions and elaboration, system construction, multitasking, exception handling, low level programming, standard library, and application specific facilities

The Core Language

  • Introduction
  • Lexical Elements – reserved words and identifiers, program text, pragmas, and requirements summary
  • Types and Expressions – types, classes, objects, and views, character types, numeric types, composite types, array types, record types, access types, type conversion, staticness, and more
  • Object Oriented Programming – describes the various ways in which object oriented programming is achieved in Ada 95
  • Statements
  • Subprograms – covers other relatively minor improvements to subprograms
  • Packages – a number of important changes to the language are addressed in this chapter
  • Visibility Rules – visibility and scope rules are rewritten to make them consistent and clearer, the use type clause is introduced for operators, renaming is now allowed for subprogram bodies, generic units and library units, and a number of minor improvements
  • Tasking – protected types, the Requeue statement, timing and more
  • Program Structure and Compilation Issues – provides more examples of important changes in the overall structural area of the language, and discusses other topics of a structural nature
  • Exceptions
  • Generics
  • Representation Issues

The Annexes

  • A Predefined Language Environment
  • Interface to Other Languages
  • Systems Programming
  • Real-Time Systems
  • Distributed Systems
  • Information Systems
  • Numerics
  • Safety and Security

This package may be freely copied and distributed, if accompanied by a statement, and provided that integral copies of all files are included (i.e. no change whatsoever is allowed).

Ada 95 Reference Manual

Ada 95 Reference Manual

By S. Tucker Taft, Robert A. Duff (533 pages)

This Ada 95 Reference Manual is essentially identical to the new International Standard ISO/IEC 8652:1995(E) for the Ada programming language.

The thorough technical revisions and extensions documented in this manual are built on broad participation from the international Ada community and generous support by leading institutions. Over 750 submitted revision requests were evaluated, and the resulting enhancements make Ada 95 an outstanding language. The flexibility of languages such as C++, modern features such as object orientation, and improved interfacing capabilities have been added to the reliable software engineering capabilities provided and proven for over a decade by the predecessor version Ada 83; furthermore, upward compatibility from Ada 83 to Ada 95 has been achieved.

Chapters cover:

Core Language

  • General
  • Lexical Elements
  • Declarations and Types
  • Names and Expressions
  • Statements
  • Subprograms
  • Packages
  • Visibility Rules
  • Tasks and Synchronization
  • Program Structure and Compilation Issues
  • Exceptions
  • Generic Units
  • Representation Issues


  • Predefined Language Environment
  • Interface to Other Languages
  • Systems Programming
  • Real-Time Systems
  • Distributed Systems
  • Information Systems
  • Numerics
  • Safety and Security
  • Obsolescent Features
  • Language-Defined Attributes
  • Language-Defined Pragmas
  • Implementation-Defined Characteristics
  • Glossary
  • Syntax Summary

The whole package (wrapped in a compressed “tarfile” or “zip file”) may be freely copied and distributed, if accompanied by this statement, and provided that integral copies of all files are included (i.e. no change whatsoever is allowed).

Ada Programming

Ada Programming

By Wikibooks (HTML)

This book is an Ada tutorial covering the Ada 2005 and 2012 standards. If you’re a beginner you will learn the latest standard — if you are a seasoned Ada user you can see what’s new.

This book is intended for professional readers.

Text is available under the Creative Commons Attribution-ShareAlike License.


Ada, Awk, Assembly, Bash, C, C++, C#, Clojure, CoffeeScript, ECMAScript, Erlang, Forth, Fortran, Go, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Logo, Lua, OCaml, Pascal, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, Scheme, Scratch, SQL, Swift, TeX, VimL

Leave a Reply