
Explore the Ada programming language from its origins to its modern, safety-focused use in avionics, space, and medical systems, with practical setup in Ubuntu and VS Code.
Learn how Ada's safe defaults and compiler error detection enable early catching of issues, with strong typing, modularity, and portability for large, concurrent systems.
Explore the key aspects of Ada, a multifaceted stack-based language with strong type checking, modularization through packages and generics, and rich concurrency and real-time capabilities.
Explore how Ada meets hardware independence, standardization, and strong software engineering support, including real-time, reliability, safety, and concurrency features through its package system and standardized implementations.
Compare Ada versions from 83 to 2022, tracing evolving structure, modularity, and concurrency features. Highlight object-oriented capabilities, derived types, and numeric vector libraries for scientific computing.
Explore Spark Ada, a dialect of Ada designed for secure, high-integrity software, with a formal subset and contracts enabling static analysis, termination proofs, and proofs of absence of runtime exceptions.
Install Ada on Ubuntu Linux via the Ubuntu shell and apt, using GNAT, the GCC compiler for Ada, and set up VS Code with the Language Support for Ada extension.
Explore ada development in vscode on ubuntu: set up a workspace with tasks.json, launch.json, and settings.json, build a project with gpl build, and understand linux debugging pitfalls.
Install the GNAT Studio IDE from Adacore and set up the Ada toolchain. Open a tutorial project, build the SDC ADB file, and fix simple errors to compile.
Explore Ada's five elements for program organization: packages as building blocks, subprograms, generics, tasks for parallelism, and protected objects for guarded shared data.
Master the basics of Ada syntax through library items and compilation units, with clauses, and declarations. Explore types, subprograms, tasks, and representations to build correct programs.
Explore Ada's control structures, including if, for, while, and case statements with full coverage rules. Learn range syntax, loop variable deduction, and the distinction between assignment and equality.
Explore Ada's built-in types and user defined types, and learn how strong typing, subtypes, and constrained ranges help catch errors with runtime checks and descriptive attributes.
Discover how Ada handles arrays and records, including unconstrained and bounded array types, discrete subtypes for indexing, passing and returning arrays, array aggregates, and record aggregates with the dot operator.
Ada packages organize related subprograms and types into a specification and body, enabling separate compilation and clear interface and implementation. Use hierarchical packages, and renaming to manage long names.
Explore Ada's fixed length and unbounded string types, learn slicing, concatenation, first and last indices, and converting between strings and other basic types.
Ada is a modern programming language made for large, long-lived applications as well as embedded systems where reliability, security and efficiency are important.
It is seeing significant usage worldwide in high-integrity / safety-critical / high-security domains including commercial and aircraft avionics, air traffic control, railroad systems, medical devices and commerce & trading systems as well as other important infrastructure.
With its embodiment of modern software engineering principles Ada is a very good teaching language for introductory as well as advanced computer science courses, and it has been the topic of significant university research especially in the area of real-time technologies.
Ada is a very versatile programming language. From one perspective it is a classical stack-based general-purpose language, not tied to any specific development methodology.
Ada is not like other programming languages. Instead of using symbols or shortened naming conventions, Ada uses readability by using unabbreviated keywords as well as explicit language to minimize misalignment within the code. Therefore, Ada is very often used in industries where software must run faultlessly and without bugs.
Additionally, it has a simple syntax, structured control statements, flexible data composition facilities, strong type checking, traditional features for code modularization (“subprograms”), and a mechanism for detecting and responding to exceptional run-time conditions (“exception handling”).
ADA advantages
Helps you design safe and reliable code
Reduces development costs
Supports new and changing technologies
Facilitates development of complex programs
Helps make code readable and portable
Reduces certification costs for safety-critical software
ADA features
Object orientated programming
Strong typing
Abstractions to fit program domain
Generic programming/templates
Exception handling
Facilities for modular organization of code
Standard libraries for I/O, string handling, numeric computing, containers
Systems programming
Concurrent programming
Real-time programming
Distributed systems programming
Numeric processing
Interfaces to other languages (C, COBOL, Fortran)