Вступ#

Історія#

У 1970-х роках Міністерство оборони США (DOD) страждало від вибухового зростання кількості мов програмування у різних проектах, в яких використовувались різні, нестандартні, діалекти або підмножини мов програмування. Міністерство вирішило вирішити цю проблему оголосивши запит на розробку единої, сучасної мови програмування. Перемогла пропозиуія від Jean Ichbiah з CII Honeywell-Bull.

Перший стандарт мови Ada був створений в 1983 який було переглянуто та вдосконалено в 1995, 2005 та 2012, кожний з яких привносив нові користні можливості.

Даний матеріал базується на стандарті 2012 року вцілому і не зосередженний на відмінностях попередніх версій.

Ada сьогодні#

Сьогодні, Ada активно використовується у вбудованих системах реального часу, багато з яких є критичними з точки зору безпеки. Хоча Ada є, і може бути використана як мова загального призначення, вона повністю розкривається в низькорівневих застосунках як то:

  • Вбудованих системах з жорсткими лімітами пам'яті (заборонено збирач сміття).

  • Робота з обладнанням напряму.

  • Системи реального часу.

  • Низькорівневе системне програмування.

Специфічні галузі де використувється мова включають аерокосмос та захист, цівільна авіація, залізниця та багато інших. Ці застосунки вимагають висоеого рівня безпеки а дефекти призводять не тільки до незручностей але можуть мати важкі наслідки. Ada надає безпекові можливості які виявляють дефекти на ранній стадії — зазвияай на єтапі компіляції або за допомогою статичного аналізу. Ada також може використовуватись для створення застосунків у багатьох інших областях, як наприклад:

Це неповний список, який, сподіваюся, проливає світло на те, де Ada використовується.

З точки зору суяасних мов програмування найближчими за цілями та рівнем абстракції є C++ та Rust.

Філософія#

Філософія Ada відрізняється від більшості інших мов. В основі дизайну Ada лежать наступні принципи:

  • Читабельність важливіша за лаконічність. Синтаксично це виражається через факт, що перевага надається коючовим словам над символами, а ключові слова не є абревеатурами і т.д

  • Дуже строгі тири. Створення нових типів дуже зручне та запобігає неправильному використанню даних.

    • Це схоже на багато інших функціональних мов за вийнятком того, що програміст повинен бути набагато чіткішим щодо введеня тексту коду, автоматичне перетворення типів заборонене.

  • Явне краще, ніж неявне. Хоча це заповідь Python однак Ada йде далі ніж будь яка інша мова програмування:

    • Здебільшого структурної типізації немає а більшість типів мають бути явно названі.

    • Як раніше було сказано немає автоматичного перетворення типів.

    • Семантика дуже добре визначена, а невизначена поведінка зведена до абсолютного мінімуму.

    • Програміст може надати багато інформаці щодо того що його код робить, як для компілятора, так і для колег. Це дозволяє компілятору бути надзвичайно корисним (читай: суворим) з програмістом.

Під час цього курсу ми пояснимо окремі мовні особливості, які є будівельними блоками для цієї філософії.

SPARK#

Хоча цей матеріал присвячений виключно мові Ada, варто згадати, що існує інша мова, надзвичайно близька до Ada та сумісна з нею: мова SPARK.

SPARK це підмножина Ada, розроблена таким чином, щоб код, написаний у SPARK, піддавався автоматичній перевірці. Це забезпечує рівень впевненості щодо правильності коду, який набагато вищий, ніж у звичайної мови програмування.

Є відповідний курс присвячений SPARK але майте на увазі, що кожного разу, коли ми говоримо про специфікаційну потужність Ada протягом цього курсу, це потужність, яку ви можете використати в SPARK, щоб допомогти підтвердити правильність властивостей програми, починаючи від відсутності помилок під час виконання до відповідності формально визначеним функціональним вимогам.