Разместить заказ
Вы будете перенаправлены на Автор24

Язык программирования Ada

8-800-775-03-30 support@author24.ru
Статья предоставлена специалистами сервиса Автор24
Автор24 - это сообщество учителей и преподавателей, к которым можно обратиться за помощью с выполнением учебных работ.
как работает сервис
Язык программирования Ada
Определение 1

Язык программирования Ada принадлежит к числу модульных. Для него характерны строгая типизация, синтаксис, ведущий происхождение от языков Паскаль и Алгол. Назван в честь Ады Лавлейс, математика первой половины XIX в., которую часто называют первым в мире программистом в связи с ее работами по созданию алгоритмов для вычислительной машины Чарльза Бэббиджа.

Логотип языка Ada. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Логотип языка Ada. Автор24 — интернет-биржа студенческих работ

История развития языка Ada

Ada появился в США на рубеже 1970-1980-х гг. как язык программирования для бортовых систем управления военными объектами. Он не принадлежит к числу самых популярных языков программирования, поскольку не рассчитана на создание эффектных пользовательских приложений. В этом языке слабо развиты такие стороны, как функционал, связанный с пользовательским интерфейсом, взаимодействие с базами данных. Тем не менее, язык Ada нельзя назвать устаревшим. На нем в США разрабатывается программное обеспечение для военной промышленности, авиации, энергетики и других инфраструктурных систем. Это нишевый, но, тем не менее, активно используемый продукт.

Язык Ada был создан для решения конкретных задач, причем предметная область его применения была заранее хорошо исследована и описана. Группа его разработчиков сформировалась на основе тщательно организованного международного конкурса.

Стабильный релиз Ada был принят в качестве национального стандарта, а затем был принят и соответствующий стандарт ISO. Высокая степень стандартизации, в частности, предопределила повсеместное единообразие языка, отсутствие диалектов, а также 100%-ю обратную совместимость кода при появлении новых версий.

Замечание 1

Попытки включить Ada в систему ГОСТ предпринимались в конце 1980-х гг. и в СССР. На этом языке велась разработка ПО для лайнера Ил-96-300, амфибии Бе-200, космической станции Альфа. Он использовался и в некоторых других проектах государственного уровня. Ada довольно активно применяется для создания промышленных и транспортных систем во Франции (беспилотные поезда метро), Японии, Китае.

На сегодняшний день актуальной является версия Ada-2012.

Специфика Ada

Можно назвать следующие особенности Ada, многие из которых являются уникальными:

  • асинхронность реализована на уровне синтаксиса;
  • любые компиляторы Ada порождают идентичный бинарный код (стандарт языка предполагает, что каждый компилятор должен выдержать ряд тестов);
  • полная совместимость версий поддерживается на протяжении всего времени существования языка.

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

Ada соответствует парадигме объектно-ориентированного программирования. Есть даже мнение, что идеи классов в C++ позаимствованы из реализации Ada-83. При этом спецификация языка Ada существенно компактнее, чем у конкурирующих продуктов.

Несмотря на то, что Ada появился как язык для корпоративных целей, существует его некоммерческая версия, распространяемая под свободной лицензией - полнофункциональная платформа GNAT.

Практика программирования на Ada

Разработка на зыке Ada в IDE Wind River. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Разработка на зыке Ada в IDE Wind River. Автор24 — интернет-биржа студенческих работ

Программа "Hello, World!" выглядит на Ada следующим образом:

with Ada.Text_IO; 
 
procedure HelloWorld is
begin
 Ada.Text_IO.Put_Line("Hello, World!");
end HelloWorld;

Рассмотрим более сложную программу - функцию, сравнивающую две строки без учета регистра, т.е. строки "Привет!" и "ПрИвЕт!" считаются одинаковыми, а строка "Превед!!" - отличающейся от них.

 -- Объявляем функцию, получающую в качестве аргументов сравниваемые строки
 -- и возвращающую истинное или ложное значение, в зависимости от того,
 -- одинаковы ли их буквы в соответствующих позициях.
 -- Прописные буквы считаются равными строчным.
 
 function Equal_Ignore_Case
 (S : String; -- Сравниваемая строка 1
 T : String) -- Сравниваемая строка 2
 return Boolean 
 is
 -- Находим разность между адресами начальных знаков сравниваемых строк.
 O : constant Integer := S'First - T'First;
 begin
 if T'Length /= S'Length then
 return False; -- Если длины строк не совпадают - дальнейшая проверка не имеет смысла.
 else
 for I in S'Range loop -- Сравниваем буквы в соответствующих позициях в цикле.
 if To_Lower (S (I)) /= -- Стандартная функция To_Lower превращает любые буквы в строчные, чтобы можно было сравнивать. 
 To_Lower (T (I + O))
 then
 -- Если буквы в одной и той же позиции не равны даже после приведения к одинаковому регистру,
 -- значит строки не равны.
 return False; 
 end if;
 end loop;
 end if;
 return True; -- Различающихся букв не найдено, возвращаем истинное значение.
 end Equal_Ignore_Case;