Hub Nexus
Updated

AuthorNo author yetClaim it

See something to improve? Propose a change.

Support

Computing » Computer Science » Computer Programming » Ada Programming

This is an overview of the major features that are available in Ada 2005, the version of the Ada standard that was accepted by ISO in January 2007 (to differentiate it from its predecessors Ada 83 and Ada 95, the informal name Ada 2005 is generally agreed on). For the rationale and a more detailed (and very technical) description, see the Amendment to the Ada Reference Manual following the links to the last version of every Ada Issue document (AI).

Although the standard is now published, not all compilers will be able to handle it. Many of these additions are already implemented by the following Free Software compilers:

After downloading and installing any of them, remember to use the -gnat05 switch when compiling Ada 2005 code. Note that Ada 2005 is the default mode in GNAT GPL 2007 Edition.

Language features

Character set

Not only does Ada 2005 now support a new 32-bit character type — called Wide_Wide_Character — but the source code itself may be of this extended character set as well. Thus Russians and Indians, for example, will be able to use their native language in identifiers and comments. And mathematicians will rejoice: The whole Greek and fractur character sets are available for identifiers. For example, Ada.Numerics will be extended with a new constant:

π : constant := Pi;

This is not a new idea — GNAT always had the -gnatic compiler option to specify the character set [1]. But now this idea has become standard, so all Ada compilers will need to support Unicode 4.0 for identifiers — as the new standard requires.

See also:

Interfaces

Interfaces allow for a limited form of multiple inheritance similar to Java and C#.

You find a full description here: Ada Programming/OO.

See also:

Union

In addition to Ada's safe variant record an unchecked C style union is now available.

You can find a full description here: Ada Programming/Types/record#Union.

See also:

With

The with statement got a massive upgrade. First there is the new limited with which allows two packages to with each other. Then there is private with to make a package only visible inside the private part of the specification.

See also:

Not null access

An access type definition can specify that the access type can never be null.

See Ada Programming/Types/access#Null exclusions.

See also: AI95-00231-01 Access-to-constant parameters and null-excluding access subtypes

Anonymous access

The possible uses of anonymous access types are extended. They are allowed virtually in every type or object definition, including access to subprogram parameters. Anonymous access types may point to constant objects as well. Also, they could be declared to be not null.

With the addition of the following operations in package Standard, it is possible to test the equality of anonymous access types.

See Ada Programming/Types/access#Anonymous access.

See also:

AI95-00230-01 Generalized use of anonymous access types

Language library

Containers

A major addition to the language library is the generic packages for containers. If you are familiar with the C++ STL,
you will likely feel very much at home using Ada.Containers.
One thing, though: Ada is a block structured language. Many ideas of how to use the STL
employ this feature of the language. For example, local subprograms can be supplied to iteration schemes.

The original Ada Issue text AI95-00302-03 Container library has now been transformed into
A.18 Containers (Annotated).

If you know how to write Ada programs, and have a need for vectors, lists, sets, or maps (tables), please have a look
at the AI95-00302-03 AI Text mentioned above. There is an !example section in the text explaining the
use of the containers in some detail.
Matthew Heaney provides a number of demonstration programs
with his reference implementation of AI-302
(Ada.Containers) which you can find at
tigris.

In Ada Programming/Containers you will find a demo using containers.

Historical side note: The C++ STL draws upon the work of
David R. Musser
and
Alexander A. Stepanov.
For some of their studies of generic programming, they had been using Ada 83.
The Stepanov Papers Collection has a few publications available.

Scan Filesystem Directories and Environment Variables

See also:

Numerics

Besides the new constant of package Ada.Numerics (see Character Set above), the most important addition are the packages to operate with vectors and matrices.

See also:

(Related note on Ada programming tools:
AI-388 contains an interesting assessment of how compiler writers are bound
to perpetuate the lack of handling of international characters in programming support tools for now.
As an author of Ada programs, be aware that your tools provider or Ada consultant
could recommend that the program text be 7bit ASCII only.)

Real-Time and High Integrity Systems

See also:

Ravenscar profile

See also:

New scheduling policies

See also:

Dynamic priorities for protected objects

See also: AI95-00327-01 Dynamic ceiling priorities

Summary of what's new

New keywords

Added 3 keywords (72 total)

New pragmas

Added 11 pragmas:

New attributes

Added 7 attributes:

New packages

Ada.Containers

Ada.Numerics.Real_Arrays

Ada.Directories

Ada.Strings.Hash (generic function)

Ada.Calendar.Time_Zones

Ada.Tags.Generic_Dispatching_Constructor (generic function)

Ada.Strings.Wide_Wide_Bounded

Ada.Execution_Time

Ada.Dispatching

Ada.Real_Time.Timing_Events

See also

Wikibook

Pages in the category Ada 2005

Papers and presentations

Rationale

  • Rationale for Ada 2005 by John Barnes:
    Introduction
  • Object Oriented Model
  • Access Types
  • Structure and Visibility
  • Tasking and Real-Time
  • Exceptions, Generics, Etc.
  • Predefined Library
  • Containers
  • Epilogue

References
Index
Available as a single document for printing.

Language Requirements

Ada Reference Manual

Ada Issues

Where this page came from

This page was imported from Wikibooks. From “Ada Programming” on Wikibooks, by its contributors, under CC BY-SA 4.0. Changed here: set as a page; navigation and edit links left out; each image under its own licence, credited in its caption.

Nobody has written it yet — it is the source material at a new address, which is why search engines are asked to skip it and why no one earns from it. It is up for grabs: take it on, and it is yours to rewrite and to earn from.

In these publicationsAda Programming

LanguagesEnglish

Licence: CC BY-SA 4.0 · Adapted from en.wikibooks.org

1

0

0

0

Spinner Logo

Comments

Spinner Logo
Version: 2CC0 1.0 — public domain
The runaway star that left the Tarantula Nebula
Version: 2CC0 1.0 — public domain
The Blackwell School, where segregation had no law behind it
Version: 2CC0 1.0 — public domain
The Eagle Nebula, seen in the infrared
Version: 2CC0 1.0 — public domain
The house where the Equal Rights Amendment was written
Version: 2CC0 1.0 — public domain
The Aleutians, the forgotten front of the Second World War
Version: 2CC0 1.0 — public domain
The Cosmic Cliffs are not cliffs