Вступ#
Історія#
У 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, щоб допомогти підтвердити правильність властивостей програми, починаючи від відсутності помилок під час виконання до відповідності формально визначеним функціональним вимогам.