=============
Big Picture
=============

-----------------------
Core Language Content
-----------------------

All compilers/run-times support these "core concepts" of Ada

* Types *(Language- and user-defined)*

* Subprograms (:ada:`function` *and* :ada:`procedure`*)*

* Packages *(grouping related entities)*

* Generic Units *(code templates)*

* Language-Based Concurrency *(multi-tasking)*

* Exceptions *(handling unexpected errors)*

* Dynamic memory management

* Object-Oriented Programming

* Contract-Based Programming

* Low Level Programming

* Mixed-language applications

---------------------------
Specialized Needs Annexes
---------------------------

In addition to the "core concepts", Ada compilers can also support 

* Real-Time Systems

   * Multi-tasking issues such as priority and timing

* Distributed Systems

   * Multiple partitions as part of a single Ada program

* Numerics

   * Complex arithmetic, improved floating point accuracy, and very large numbers

* High-Integrity Systems
* Information systems

.. note::

   They implement no additional syntax, and may be present or not depending on the compiler/run-time

------------------------------
Language Examination Summary
------------------------------

* Three main goals

   - **Reliability**, maintainability
   - Programming as a **human** activity
   - Efficiency

* Easy-to-use

   - ...and hard to misuse
   - Very **few pitfalls** and exceptions

-----------------------------------
So Why Isn't Ada Used Everywhere?
-----------------------------------

.. container:: columns

 .. container:: column

    * "... in all matters of opinion our adversaries are insane"

       - *Mark Twain*

 .. container:: column

    .. image:: mark_twain.jpeg

