~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ A7C5C5ADBE45263C5AE1FB341586431E__1716840900 ✰
Заголовок документа оригинал.:
✰ Ada (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Ада (язык программирования) — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Ada_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/a7/1e/a7c5c5adbe45263c5ae1fb341586431e.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/a7/1e/a7c5c5adbe45263c5ae1fb341586431e__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 06:08:10 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 27 May 2024, at 23:15 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Ада (язык программирования) — Википедия, бесплатная энциклопедия Jump to content

Ада (язык программирования)

Из Википедии, бесплатной энциклопедии
Есть
Зеленый логотип на горизонте с буквами Ады и слоганом
Парадигма Мультипарадигмальность : структурированная , императивная , объектно-ориентированная , аспектно-ориентированная , [1] параллельный , массив , распределенный , общий , процедурный , мета
Семья Паскаль
Разработано
  • MIL-STD-1815, Ада 83: Жан Ичбиа
  • Ада 95: Такер Тафт
  • Ада 2005: Такер Тафт
  • Ада 2012: Такер Тафт
Впервые появился февраль 1980 г .; 44 года назад ( 1980-02 )
Стабильная версия
Там 2022 / май 2023 г.
Дисциплина набора текста статический , сильный , безопасный , номинальный
ТЫ Мульти- или кросс-платформенный
Расширения имен файлов .adb, .ads
Веб-сайт www .adaic .org
Основные реализации
АдаКоре GNAT , [2]
Green Hills Software Оптимизирует компилятор Ada 95,
PTC ApexAda и ObjectAda, [3]
MapuSoft преобразователь Ada-C/C++, [4] ранее известный как «AdaMagic с C Intermediate», [5]
DDC-I Оценка
Диалекты
СПАРК , профиль Равенскара
Под влиянием
Алгол 68 , Паскаль , Симула 67 , [6] C++ (Ада 95), Smalltalk (Ада 95), Modula-2 (Ада 95), Java (Ада 2005), Eiffel (Ада 2012)
Под влиянием
С++ , Часовня , [7] Дорогой , [8] Д , Эйфель , Гриффин, [9] Java , Nim , ParaSail , PL/SQL , PL/pgSQL , Python , Ruby , Seed7 , SPARforte, [10] Спаркел , SQL/PSM , VHDL

Ada — это структурированный , статически типизированный , императивный и объектно-ориентированный язык программирования высокого уровня , вдохновленный Pascal и другими языками. Он имеет встроенную языковую поддержку для проектирования по контракту (DbC), чрезвычайно строгую типизацию , явный параллелизм, задачи, синхронную передачу сообщений, защищенные объекты и недетерминизм . Ada повышает безопасность и удобство сопровождения кода, используя компилятор для поиска ошибок в пользу ошибок времени выполнения . Ada — это международный технический стандарт , разработанный совместно Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IEC). По состоянию на май 2023 г. стандартом, неофициально называемым Ada 2022, является ISO/IEC 8652:2023. [11]

Первоначально Ada была разработана командой под руководством французского ученого-компьютерщика Жана Ичбиа из Honeywell по контракту с Министерством обороны США (DoD) с 1977 по 1983 год, чтобы заменить более 450 языков программирования, используемых Министерством обороны в то время. [12] Ада была названа в честь Ады Лавлейс (1815–1852), которая считается первым программистом. [13]

Особенности [ править ]

Ada изначально разрабатывалась для встроенных систем и систем реального времени . Версия Ada 95, разработанная С. Такером Тафтом из Intermetrics в период с 1992 по 1995 год, улучшила поддержку системного, численного, финансового и объектно-ориентированного программирования (ООП).

Возможности Ada включают в себя: строгую типизацию , модульные механизмы программирования (пакеты), проверку во время выполнения , параллельную обработку ( задачи , синхронную передачу сообщений , защищенные объекты и недетерминированные операторы выбора ), обработку исключений и дженерики . В Ada 95 добавлена ​​поддержка объектно-ориентированного программирования , включая динамическую диспетчеризацию .

Синтаксис Ada сводит к минимуму выбор способов выполнения основных операций и предпочитает английские ключевые слова (такие как «или» и «а потом») символам (таким как «||» и «&&»). Ада использует основные арифметические операторы «+», «-», «*» и «/», но избегает использования других символов. Блоки кода разделяются такими словами, как «объявить», «начать» и «конец», где за словом «конец» (в большинстве случаев) следует идентификатор блока, который он закрывает (например, если... конец, если , цикл ... конец цикла ). В случае условных блоков это позволяет избежать висячего else , которое может сочетаться с неправильным вложенным выражением if в других языках, таких как C или Java.

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

Поддерживается большое количество проверок во время компиляции, чтобы помочь избежать ошибок, которые не будут обнаружены до времени выполнения на некоторых других языках или потребуют добавления явных проверок в исходный код. Например, синтаксис требует явно именованного закрытия блоков, чтобы предотвратить ошибки из-за несовпадения конечных токенов. Соблюдение строгой типизации позволяет обнаруживать многие распространенные ошибки программного обеспечения (неправильные параметры, нарушения диапазона, недопустимые ссылки, несовпадающие типы и т. д.) либо во время компиляции, либо иным образом во время выполнения. Поскольку параллелизм является частью спецификации языка, компилятор в некоторых случаях может обнаружить потенциальные взаимоблокировки. [14] Компиляторы также обычно проверяют идентификаторы с ошибками , видимость пакетов, избыточные объявления и т. д. и могут выдавать предупреждения и полезные советы о том, как исправить ошибку.

Ada также поддерживает проверки во время выполнения для защиты от доступа к нераспределенной памяти, ошибок переполнения буфера , нарушений диапазона, ошибок отклонения на единицу , ошибок доступа к массиву и других обнаруживаемых ошибок. Эти проверки можно отключить в интересах эффективности выполнения, но зачастую их можно эффективно скомпилировать. Он также включает в себя средства, помогающие проверять программы . По этим причинам Ada иногда используется в критически важных системах, где любая аномалия может привести к очень серьезным последствиям, например, к смерти в результате несчастного случая, травме или серьезным финансовым потерям. Примеры систем, в которых используется Ada, включают авионику , управление воздушным движением , железные дороги , банковское дело, военные и космические технологии . [15] [16]

в Ada Управление динамической памятью является высокоуровневым и типобезопасным. В Аде нет общих или нетипизированных указателей ; и при этом он неявно не объявляет какой-либо тип указателя. Вместо этого все динамическое выделение и освобождение памяти должно происходить с помощью явно объявленных типов доступа . Каждый тип доступа имеет связанный пул хранения , который обрабатывает низкоуровневые детали управления памятью; программист может либо использовать пул хранения по умолчанию, либо определить новые (это особенно актуально для неоднородного доступа к памяти ). Можно даже объявить несколько разных типов доступа, которые обозначают один и тот же тип, но используют разные пулы хранения. Кроме того, язык обеспечивает проверки доступности как во время компиляции, так и во время выполнения, что гарантирует, что значение доступа не сможет пережить тип объекта, на который оно указывает. [17]

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

Двойное тире («--»), напоминающее длинное тире , обозначает текст комментария. Комментарии останавливаются в конце строки; намеренно не существует способа сделать комментарий занимающим несколько строк, чтобы предотвратить случайное удаление незакрытых комментариев целых разделов исходного кода. Поэтому для отключения целого блока кода требуется префикс каждой строки (или столбца) отдельно с помощью «--». Хотя это явно означает отключенный код путем создания столбца с повторяющимися знаками «--» внизу страницы, это также делает экспериментальное отключение/повторное включение больших блоков более затяжным процессом в редакторах без поддержки комментариев блоков.

Точка с запятой (";") является признаком завершения оператора , а нулевой оператор или оператор отсутствия операции - это null;. Один ; без заявления расторгнуть не допускается.

В отличие от большинства стандартов ISO , определение языка Ada (известное как Справочное руководство Ada или ARM , а иногда и Справочное руководство по языку или LRM ) является бесплатным контентом . Таким образом, это общий справочник для программистов Ada, а не только для программистов, реализующих компиляторы Ada. Помимо справочного руководства, существует также обширный документ с обоснованием, в котором объясняется конструкция языка и использование различных языковых конструкций. Этот документ также широко используется программистами. Когда формулировка была пересмотрена, был написан новый документ с обоснованием.

Одним из примечательных бесплатных программных инструментов, которые используются многими программистами Ada для помощи в написании исходного кода Ada, является GNAT Programming Studio и GNAT , входящий в состав коллекции компиляторов GNU .

История [ править ]

В 1970-х годах Министерство обороны США (DoD) было обеспокоено количеством различных языков программирования, используемых в его проектах встраиваемых компьютерных систем, многие из которых были устаревшими или аппаратно-зависимыми, и ни один из которых не поддерживал безопасное модульное программирование. В 1975 году была сформирована рабочая группа High Order Language Workshop (HOLWG) с намерением сократить это число путем поиска или создания языка программирования, в целом подходящего для требований ведомства и Министерства обороны Великобритании . После многих итераций, начавшихся с оригинального предложения подставного человека [18] конечный язык программирования получил название Ada. Общее количество языков программирования высокого уровня, используемых в таких проектах, упало с более чем 450 в 1983 году до 37 к 1996 году.

HOLWG разработала требования к языку Steelman — серию документов, определяющих требования, которым, по их мнению, должен удовлетворять язык программирования. Многие существующие языки были официально проверены, но в 1977 году команда пришла к выводу, что ни один из существующих языков не соответствует спецификациям.

Акварельная живопись Ады Лавлейс.

Были выпущены запросы на предложения по новому языку программирования, и для разработки своих предложений были наняты четыре подрядчика под именами Red ( Intermetrics под руководством Бенджамина Бросгола), Green ( Honeywell под руководством Джин Ичбиа ), Blue ( SofTech под руководством Джона Гуденафа ) ) [19] и Желтая ( SRI International , возглавляемая Джеем Спитценом). В апреле 1978 года, после общественного рассмотрения, предложения красных и зеленых перешли в следующий этап. В мае 1979 года предложение Грина, разработанное Джин Ичбиа из Honeywell, было выбрано и получило имя Ада — в честь Августы Ады Кинг, графини Лавлейс, обычно известной как Ада Лавлейс . На это предложение повлиял язык LIS , который Ичбиа и его группа разработали в 1970-х годах. Справочное руководство по военному стандарту было утверждено 10 декабря 1980 года (день рождения Ады Лавлейс) и получило номер MIL-STD-1815 в честь года рождения Ады Лавлейс. В 1981 году Тони Хоар воспользовался своей речью на премии Тьюринга , чтобы раскритиковать Аду за ее чрезмерную сложность и, следовательно, ненадежность. [20] но впоследствии, похоже, отказался от предисловия, которое он написал для учебника по Аде. [21]

В первые дни своего существования Ada привлекала большое внимание сообщества программистов в целом. Его сторонники и другие предсказывали, что он может стать доминирующим языком для программирования общего назначения, а не только для работы, связанной с обороной. [22] Ичбиа публично заявил, что через десять лет останутся только два языка программирования: Ada и Lisp . [23] Ранние компиляторы Ada изо всех сил пытались реализовать большой и сложный язык, и производительность как во время компиляции, так и во время выполнения имела тенденцию быть медленной, а инструменты были примитивными. [22] Поставщики компиляторов потратили большую часть своих усилий на прохождение масштабного тестирования на соответствие языка, требуемого правительством пакета проверки Ada Compiler Validation Capability (ACVC), который требовался для еще одной новой функции языка Ada. [23] The Jargon File , словарь компьютерного хакерского сленга, созданный в 1975–1983 годах, в статье об Аде отмечается, что «это именно то, чего можно было ожидать, учитывая такое одобрение указом; разработано комитетом... сложно использовать и в целом это катастрофическая бесполезная трата в несколько миллиардов долларов... Ада Лавлейс... почти наверняка побледнела бы от того, как в последнее время стали использовать ее имя, самое доброе, что было сказано по этому поводу, - это то, что, вероятно, есть хорошая мелочь; язык кричит о том, чтобы выбраться наружу из его огромной, слоновьей туши». [24]

Первой проверенной реализацией Ada стал переводчик Ada/Ed NYU. [25] сертифицирован 11 апреля 1983 года. NYU Ada/Ed реализован на языке набора высокого уровня SETL . [26] Несколько коммерческих компаний начали предлагать компиляторы Ada и связанные с ними инструменты разработки, включая Alsys , TeleSoft , DDC-I , Advanced Computer Techniques , Tartan Laboratories , Irvine Compiler , TLD Systems и Verdix . [27] Производители компьютеров, имевшие значительный бизнес в оборонной, аэрокосмической или смежных отраслях, также предлагали компиляторы и инструменты Ada на своих платформах; в их число входили Concurrent Computer Corporation , Cray Research, Inc. , Digital Equipment Corporation , Harris Computer Systems и Siemens Nixdorf Informationssysteme AG . [27]

В 1991 году Министерство обороны США начало требовать использования Ada ( мандат Ada ) для всего программного обеспечения. [28] хотя часто допускались исключения из этого правила. [22] Мандат Министерства обороны на Ada был фактически отменен в 1997 году, когда Министерство обороны начало использовать готовые коммерческие технологии (COTS). [22] Аналогичные требования существовали и в других странах НАТО : Ada требовалась для систем НАТО, включающих командование и контроль , а также других функций, а Ada была обязательным или предпочтительным языком для приложений, связанных с обороной, в таких странах, как Швеция, Германия и Канада. [29]

К концу 1980-х и началу 1990-х годов производительность компиляторов Ada улучшилась, но все еще существовали препятствия для полного использования возможностей Ada, в том числе модель постановки задач, которая отличалась от той, к которой привыкло большинство программистов реального времени. [23]

функций поддержки Ada Из-за критически важных для безопасности теперь используется не только для военных приложений, но и в коммерческих проектах, где ошибка программного обеспечения может иметь серьезные последствия, например, в авионике и управлении воздушным движением , коммерческих ракетах, таких как Ariane 4 и 5. , спутники и другие космические системы, железнодорожный транспорт и банковское дело. [16] Например, Primary Flight Control System , программное обеспечение электродистанционной системы в Boeing 777 , было написано на языке Ada, как и электродистанционные системы аэродинамически нестабильного истребителя Eurofighter Typhoon . [30] Кан Грипен , [31] Lockheed Martin F-22 Raptor и замена системы управления полетом DFCS для Grumman F-14 Tomcat . Канадская автоматизированная система воздушного движения была написана на 1 миллионе строк языка Ada ( счет SLOC ). Он отличался расширенной распределенной обработкой , распределенной базой данных Ada и объектно-ориентированным дизайном. Ada также используется в других системах воздушного движения, например, британская система управления воздушным движением следующего поколения Interim Future Area Control Tools Support (iFACTS) разработана и реализована с использованием SPARK Ada. [32] Он также используется во французской TVM системе кабинной сигнализации на TGV и в пригородных поездах метро в Париже, Лондоне, Гонконге и Нью-Йорке. высокоскоростной железнодорожной системе [16] [33]

Стандартизация [ править ]

Хронология языка Ада
Год Неофициальное имя стандарты анси Стандарт ИСО/МЭК
1980 Есть MIL-STD 1815 года
1983 Есть 83/87 MIL-STD 1815A 8652:1987
1995 Есть 95 8652:1995
2007 Был 2005 год 8652:1995/Изм. 1:2007
2012 Был 2012 год 8652:2012
2023 Там 2022 8652:2023

Предварительную версию Ada можно найти в Уведомлениях ACM Sigplan, том 14, № 6, июнь 1979 г. [34]

Ада была впервые опубликована в 1980 году как стандарт ANSI ANSI/ MIL-STD 1815 . Поскольку эта самая первая версия содержала много ошибок и несоответствий. [а] , исправленное издание было опубликовано в 1983 году как ANSI/MIL-STD 1815A. Без каких-либо дальнейших изменений он стал стандартом ISO в 1987 году. [36] Эта версия языка широко известна как Ada 83 со дня ее принятия ANSI, но иногда ее также называют Ada 87 со дня ее принятия ISO. [37] Существует также французский перевод; В 1988 году DIN перевел его на немецкий язык как DIN 66268.

Ada 95 , совместный стандарт ISO/IEC/ANSI ISO/IEC 8652:1995. [38] [39] был опубликован в феврале 1995 года, что сделало его первым объектно-ориентированным языком программирования стандарта ISO. Чтобы помочь с пересмотром стандарта и его будущим принятием, ВВС США профинансировали разработку GNAT компилятора . В настоящее время компилятор GNAT является частью коллекции компиляторов GNU .

Продолжается работа по улучшению и обновлению технического содержания языка Ада. Техническое исправление к Ada 95 было опубликовано в октябре 2001 г. [40] [41] и основная поправка к ISO/IEC 8652:1995/поправка 1:2007. [42] [43] был опубликован 9 марта 2007 г. и широко известен как Ada 2005 , поскольку работа над новым стандартом была завершена в том же году.

На конференции Ada-Europe 2012 в Стокгольме Ассоциация ресурсов Ada (ARA) и Ada-Europe объявили о завершении разработки последней версии языка Ada и подаче справочного руководства в ОТК ISO/IEC 1/. SC 22 /WG 9 Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (IEC) для утверждения. ИСО/МЭК 8652:2012 [44] (см. RM ) был опубликован в декабре. Ada 2012 Опубликовано техническое исправление к ISO/IEC 8652:2012/COR 1:2016. [45] (см. RM 2012 с ТК 1 ).

2 мая 2023 года сообщество Ada официально одобрило публикацию Ada 2022 . стандарта языка программирования версии [11]

Несмотря на названия Ada 83, 95 и т. д., юридически существует только один стандарт Ada, один из последних стандартов ISO/IEC: с принятием новой версии стандарта предыдущая отменяется. Остальные названия лишь неофициальные, относящиеся к определенному изданию.

Другие связанные стандарты включают ISO/IEC 8651-3 :1988 Системы обработки информации. Компьютерная графика. Языковые привязки графического ядра (GKS). Часть 3: Ada .

Языковые конструкции [ править ]

Ада — это язык программирования, похожий на АЛГОЛ , в котором есть управляющие структуры с зарезервированными словами, такими как if , then , else , while , for и т. д. Однако в Аде также имеется множество средств структурирования данных и других абстракций, которые не были включены в исходный АЛГОЛ 60 , такие как определения типов , записи , указатели , перечисления . Такие конструкции были частично унаследованы от Паскаля или вдохновлены им .

"Привет, мир!" в Аде [ править ]

языка Типичным примером синтаксиса является программа Hello world : (привет.adb)

с   Ada.Text_IO  ; 
  Процедура   Привет   начинается 
 , 
    Ада  .   Текст_ИО  .   Put_Line   (  "Привет, мир!"  ); 
  конец   Привет  ; 

Эту программу можно скомпилировать с помощью свободно доступного компилятора с открытым исходным кодом GNAT , выполнив

gnatmake   hello.adb
 

Типы данных [ править ]

Система типов Ады не основана на наборе предопределенных примитивных типов, но позволяет пользователям объявлять свои собственные типы. Это объявление, в свою очередь, основано не на внутреннем представлении типа, а на описании цели, которая должна быть достигнута. Это позволяет компилятору определить подходящий размер памяти для типа и проверить наличие нарушений определения типа во время компиляции и во время выполнения (т. е. нарушения диапазона, переполнение буфера, согласованность типов и т. д.). Ada поддерживает числовые типы, определяемые диапазоном, типами по модулю, агрегатными типами (записи и массивы) и типами перечислений. Типы доступа определяют ссылку на экземпляр указанного типа; нетипизированные указатели не допускаются. Специальные типы, предоставляемые языком, — это типы задач и защищенные типы.

Например, дата может быть представлена ​​как:

тип   Day_type      диапазон      1   ..     31  ; 
  тип   Month_type    диапазон      1   ..     12  ; 
  тип   Year_type     диапазон   1800   ..   2100  ; 
  тип   Часы   мод    24  ; 
  тип   недели   День   (  понедельник  ,   вторник  ,   среда  ,   четверг  ,   суббота  ,   воскресенье  ,   пятница  ); 

  тип   Дата  
    запись 
      Day     :   Day_type  ; 
       Месяц   :   Тип_месяца  ; 
       Год    :   Тип_года  ; 
     завершить запись  ; 

Важно отметить: Day_type, Month_type, Year_type, Hours являются несовместимыми типами, а это означает, что, например, следующее выражение является недопустимым:

Сегодня  :   Day_type   :=   4  ; 
  Текущий_месяц  :   Тип_месяца   :=   10  ; 
  ...   Сегодня   +   Текущий_Месяц   ...    -- незаконно 

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

Типы можно уточнить, объявив подтипы :

подтип   «Working_Hours»    часов   диапазон   0   ..   12  ;               - не более 12 часов работы в день. 
 Подтип   «Рабочий_День»    рабочих дней   диапазон   с понедельника   по   пятницу  ;      -- Дни работы 

 Work_Load  :   постоянный   массив  (  Working_Day  )   рабочих_часов   =    -- неявное объявление типа 
    :=   (  пятница   >   6  ,   понедельник   =>   4  ,   остальные   =>   10  );              -- таблица поиска рабочего времени с инициализацией 

Типы могут иметь модификаторы, такие как ограниченный, абстрактный, частный и т. д. Частные типы не показывают свою внутреннюю структуру; объекты ограниченных типов не могут быть скопированы. [46] В Ada 95 добавлены дополнительные возможности объектно-ориентированного расширения типов.

Структуры управления [ править ]

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

-- пока a не равно b, цикл. 
  while   a   /=   b   зацикливает 
   Аду  .   Текст_ИО  .   Put_Line   (  "Ожидание"  ); 
  конец   цикла  ; 

  если   a   >   b   , то 
   Ада  .   Текст_ИО  .   Put_Line   (  "Условие выполнено"  ); 
  еще 
   Ада  .   Текст_ИО  .   Put_Line   (  "Условие не выполнено"  ); 
  конец   , если  ; 

  для   меня   в   1   ..   10   петле 
   Ада  .   Текст_ИО  .   Вставьте   (  "Итерация:"  ); 
    Ада  .   Текст_ИО  .   Поставьте   (  я  ); 
    Ада  .   Текст_ИО  .   Поместить_строку  ; 
  конец   цикла  ; 

  цикл 
   а   :=   а   +   1  ; 
    выйти   , когда   a   =   10  ; 
  конец   цикла  ; 

  случай   i   — это 
   когда   0   =>   Ада  .   Текст_ИО  .   Поставить   (  «ноль»  ); 
    когда   1   =>   Ада  .   Текст_ИО  .   Положите   (  «один»  ); 
    когда   2   =>   Ада  .   Текст_ИО  .   Поставьте   (  «два»  ); 
    -- Операторы случая должны охватывать все возможные случаи: 
   когда   другие   =>   Ада  .   Текст_ИО  .   Поместите   (  «ничего из вышеперечисленного»  ); 
  конец   дела  ; 

  for   aWeekday   в   Weekday  '  Range   цикле                 -- цикл по перечислению 
    Put_Line   (   Weekday  '  Image  (  aWeekday  )   );            -- вывод строкового представления перечисления 
    if   aWeekday   вWorking_Day   &   then                 -- проверка подтипа перечисления 
       Put_Line   (   "для работы"   Working_Hours 
                '  Image  (   Work_Load  (  aWeekday  )  )   ;    -- доступ к справочной таблице 
    end   if  ; 
  конец   цикла  ; 

Пакеты, процедуры и функции [ править ]

К частям программы Ada относятся пакеты, процедуры и функции.

Функции отличаются от процедур тем, что они должны возвращать значение. Вызовы функций не могут использоваться «как оператор», и их результат должен быть присвоен переменной. Однако, начиная с Ada 2012, функции не обязаны быть чистыми и могут изменять свои соответствующим образом объявленные параметры или глобальное состояние. [47]

Пример: Спецификация пакета (example.ads)

 пакета  Пример   : 
      тип.   Номер   в   диапазоне   1   ..   11  ; 
       процедура   Print_and_Increment   (  j  :  входной   номер   )  ; 
  конец   примера  ; 

Тело пакета (example.adb)

с   Ada.Text_IO  ; 
 пакета    Тело   Пример   : 

   i   :   Number   :=   Number  '  First  ; 

    процедура   Print_and_Increment   (  j  :  in   out   Number  )  

     функция   Next   (  k  :  in   Number  )   return   Number  
     начало 
       return   k   +   1  ; 
      конец   Далее  ; 

    начать 
     Аду  .   Текст_ИО  .   Put_Line   (   "Итого: "   &   Number  '  Image  (  j  )   ); 
      j   :=   Следующий   (  j  ); 
    конец   Print_and_Increment  ; 

  -- инициализация пакета выполняется, когда пакет разработан, 
 start 
   while   i   <   Number  '  Последний   цикл 
     Print_and_Increment   (  i  ); 
    конец   цикла  ; 
  конец   примера  ; 

Эту программу можно скомпилировать, например, с помощью свободно доступного компилятора с открытым исходным кодом GNAT , выполнив

gnatmake   -z   пример.adb
 

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

Каждый пакет, процедура или функция может иметь собственные объявления констант, типов, переменных и других процедур, функций и пакетов, которые можно объявлять в любом порядке.

Прагмы [ править ]

Прагма — это директива компилятора , которая передает компилятору информацию, позволяющую конкретно манипулировать скомпилированным выводом. [48] Определенные прагмы встроены в язык, [49] в то время как другие зависят от реализации.

Примерами общего использования прагм компилятора могут быть отключение определенных функций, таких как проверка типов во время выполнения или проверка границ индексов массива, или указание компилятору вставлять объектный код вместо вызова функции (как это делает C/C++ со встроенными функциями). ).

Дженерики [ править ]

Обобщенные коды Ada существуют с момента их первой разработки в 1977–1980 годах. Стандартная библиотека использует дженерики для предоставления множества сервисов. Ada 2005 добавляет к стандартной библиотеке комплексную библиотеку универсальных контейнеров, вдохновленную стандартной библиотекой шаблонов C++ .

Общий модуль — это пакет или подпрограмма, принимающая один или несколько общих формальных параметров . [50]

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

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

См. также [ править ]

  • Компиляторы Ады
  • APSE — спецификация среды программирования для поддержки разработки программного обеспечения на языке Ada.
  • Профиль Ravenscar - подмножество функций управления задачами Ada, предназначенное для критически важных для безопасности вычислений в режиме реального времени.
  • SPARK - язык программирования, состоящий из строго ограниченного подмножества Ada, снабженного метаинформацией, описывающей желаемое поведение компонента и индивидуальные требования времени выполнения.

Примечания [ править ]

  1. ^ см. Обзор изменений языка Ada. [35]
  1. ^ «Обоснование Ada2012» (PDF) . adacore.com . Архивировано (PDF) из оригинала 18 апреля 2016 года . Проверено 5 мая 2018 г.
  2. ^ «Коммерческое программное обеспечение для Ada, C и C++» . АдаКор . Проверено 4 апреля 2023 г.
  3. ^ «ПТК ОбъектАда» . PTC.com . Проверено 27 января 2014 г.
  4. ^ «Чейнджер MapuSoft Ada-C/C++» . 16 апреля 2019 г.
  5. ^ «Список сертифицированных процессоров Ada 95 — подробности» . ada-auth.org . Проверено 4 апреля 2023 г.
  6. ^ Ада Обоснование, 1986, стр. 23, 70, 110–114, 137, 165, 236
  7. ^ «Спецификация часовни (Благодарность)» (PDF) . Cray Inc. 01 октября 2015 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 14 января 2016 г.
  8. ^ «Драго» . Архивировано из оригинала 14 сентября 2020 г. Проверено 6 августа 2018 г.
  9. ^ «Проект Грифон» . cs.nyu.edu . Проверено 4 апреля 2023 г.
  10. ^ «Язык программирования SparForte» . www.sparforte.com . Проверено 4 апреля 2023 г.
  11. ^ Перейти обратно: а б Пиньо, Луис Мигель (июнь 2023 г.). «С редакционного стола» . Письма Ады . XLIII (1). Ассоциация вычислительной техники: 3. doi : 10.1145/3631483 (неактивно с 31 января 2024 г.). {{cite journal}}: CS1 maint: DOI неактивен по состоянию на январь 2024 г. ( ссылка )
  12. ^ «Язык программирования Ада» . Мичиганский университет . Архивировано из оригинала 22 мая 2016 г. Проверено 27 мая 2016 г.
  13. ^ Фуэги, Дж; Фрэнсис, Дж (2003). «Лавлейс и Бэббидж и создание «записок» 1843 года ». IEEE Анналы истории вычислений . 25 (4): 16–26. дои : 10.1109/MAHC.2003.1253887 . S2CID   40077111 .
  14. ^ «Параллелизм. Глава 6. Руководство по качеству и стилю Ada 95» . адаик.орг . Проверено 5 ноября 2021 г.
  15. ^ Тафт, С. Такер; Олсен, Флоренция (30 июня 1999 г.). «Ада помогает создавать код с меньшим количеством ошибок» . Правительственные компьютерные новости. стр. 2–3. Архивировано из оригинала 31 августа 2015 г. Проверено 14 сентября 2010 г.
  16. ^ Перейти обратно: а б с Фельдман, Майкл. «Кто использует Ada? Реальные проекты на основе языка программирования Ada, ноябрь 2014 г.» . Рабочая группа по образованию SIGada.
  17. ^ нет безопасного управления динамической памятью в ADA , в: Написание модулей ядра Linux в Safe Rust - Джеффри Томас и Алекс Гейнор , Фонд Linux, 2019-10-02
  18. ^ «Министерство обороны — Требования Строумана — апрель 1975 г.» . iment.com . Проверено 4 апреля 2023 г.
  19. ^ «Джон Гуденаф | Профиль сотрудника SEI» . Sei.cmu.edu . Проверено 27 января 2014 г.
  20. ^ АВТОМОБИЛЬ, Хоар (1981). «Старая одежда императора» (PDF) . Коммуникации АКМ . 24 (2). Ассоциация вычислительной техники : 75–83. дои : 10.1145/358549.358561 . S2CID   97895 . Архивировано (PDF) из оригинала 4 марта 2016 г.
  21. ^ Ватт, Д.А.; Вичманн, бакалавр; Финдли, В. (1987). Ада: язык и методология . Прентис-Холл.
  22. ^ Перейти обратно: а б с д Свард, Рики Э. (ноябрь 2010 г.). «Взлет, падение и существование Ады». SIGAda '10: Материалы ежегодной международной конференции ACM SIGAda по SIGAda . стр. 71–74. дои : 10.1145/1879063.1879081 . ISBN  978-1-4503-0027-8 .
  23. ^ Перейти обратно: а б с Розен, Дж.П. (август 2009 г.). «Парадокс(ы) Ады». Письма Ады . 24 (2). АСМ СИГАда: 28–35. дои : 10.1145/1620593.1620597 . S2CID   608405 .
  24. ^ «ЭТО ЖАРГОННЫЙ ФАЙЛ, ВЕРСИЯ 2.6.2» (TXT) . 14 февраля 1991 г. Проверено 31 января 2023 г.
  25. ^ SofTech Inc. (11 апреля 1983 г.). «Сводный отчет о проверке компилятора Ada: NYU Ada/ED, версия 19.7 V-001» . Уолтем, Массачусетс. Архивировано из оригинала 12 марта 2012 г. Проверено 16 декабря 2010 г.
  26. ^ Дьюар, Роберт Б.К.; Фишер, Джеральд А. младший; Шенберг, Эдмонд; Фрёлих, Роберт; Брайант, Стивен; Госс, Клинтон Ф.; Берк, Майкл (ноябрь 1980 г.). «Переводчик Ады Нью-Йоркского университета». Материалы симпозиума ACM-SIGPLAN по языку программирования Ada — SIGPLAN '80 . Том. 15. стр. 194–201. дои : 10.1145/948632.948659 . ISBN  0-89791-030-3 . S2CID   10586359 .
  27. ^ Перейти обратно: а б «Список проверенных компиляторов Ada». Информационный центр Ады. 1 июля 1992 г. стр. 1–36.
  28. ^ Информационный центр Ады (11 апреля 1983 г.). «Мандат Конгресса по Аде» . Архивировано из оригинала 4 марта 2016 г. Проверено 7 июня 2015 г.
  29. ^ Бабяк, Николас Дж. (1989). Ада, новый компьютерный язык системы вооружения Министерства обороны США - Панацея или бедствие (PDF) . Воздушный университет (ВВС США) . стр. 39–40. Архивировано (PDF) из оригинала 15 декабря 2019 г.
  30. ^ «Гибкое мышление» . FlightGlobal . 16 июня 1999 года. Архивировано из оригинала 15 апреля 2021 года . Проверено 13 февраля 2024 г.
  31. ^ Фрисберг, Бо. «Использование Ada в системе управления полетом Gripen» (PDF) . Специальная группа по интересам по Аде . Архивировано (PDF) из оригинала 15 января 2024 года . Проверено 13 февраля 2024 г.
  32. ^ АдаКор. «GNAT Pro выбран для британской системы УВД следующего поколения» . Архивировано из оригинала 24 декабря 2010 г. Проверено 1 марта 2011 г.
  33. ^ АдаКор. «Посмотрите, кто использует Ada» . Архивировано из оригинала 24 декабря 2010 г. Проверено 1 марта 2011 г.
  34. ^ Ичбиа, JD (июнь 1979 г.). «Уведомления ACM Sigplan» . стр. 1–145. дои : 10.1145/956650.956651 .
  35. ^ Краткое изложение изменений языка Ada
  36. ^ «ИСО 8652:1987» . ИСО . 21 февраля 2013 г. Проверено 19 января 2024 г.
  37. ^ «Ада 83 LRM, первая страница» . archive.adaic.com . Проверено 19 января 2024 г.
  38. ^ «ИСО/МЭК 8652:1995» . ИСО . Проверено 19 января 2024 г.
  39. ^ «Справочное руководство по языку Ada 95 (оригинал) — Ассоциация ресурсов Ada» . www.adaic.org . Проверено 19 января 2024 г.
  40. ^ ИСО/МЭК 8652:1995/Корр. 1:2001.
  41. ^ Ада 95 RM с TC 1
  42. ^ «ИСО/МЭК 8652:1995/Изм. 1:2007» . ИСО . Проверено 19 января 2024 г.
  43. ^ «Справочное руководство Ada, ISO/IEC 8652:2007(E) Ред. 3» . www.adaic.org . Проверено 19 января 2024 г.
  44. ^ «ИСО/МЭК 8652:2012» . ИСО . 28 марта 2013 г. Проверено 19 января 2024 г.
  45. ^ «ИСО/МЭК 8652:2012/Кор 1:2016» . ИСО . Проверено 19 января 2024 г.
  46. ^ «Карточка синтаксиса Ады» (PDF) . Архивировано из оригинала (PDF) 6 июля 2011 года . Проверено 28 февраля 2011 г.
  47. ^ «Подпрограммы» . Learn.adacore.com . АдаКор . Проверено 14 апреля 2024 г.
  48. ^ «Ада 83 LRM, раздел 2.8: Прагмы» . Архив.adaic.com . Проверено 27 января 2014 г.
  49. ^ «Ada 83 LRM, Приложение/Приложение B: Предопределенные языковые прагмы» . Архив.adaic.com. Архивировано из оригинала 6 февраля 2012 г. Проверено 27 января 2014 г.
  50. ^ «Общие единицы» . www.adaic.org . Проверено 25 апреля 2024 г.

Ссылки [ править ]

Международные стандарты

Обоснование [ править ]

Эти документы были опубликованы в различных формах, в том числе в печатном виде.

Книги [ править ]

  • Буч, Грейди (1987). Разработка программного обеспечения с использованием Ada . Калифорния: Издательская компания Бенджамина/Каммингса. ISBN  0-8053-0604-8 .
  • Скансхольм, Январь (1996). Ада 95 С самого начала . Аддисон-Уэсли. ISBN  0-201-40376-5 .
  • Гилпин, Джефф (1985). Ада: экскурсия и учебное пособие . Прентис Холл. ISBN  978-0-13-004045-9 .
  • Бейдлер, Джон (1997). Структуры данных и алгоритмы: объектно-ориентированный подход с использованием Ada 95 . Спрингер Верлаг. ISBN  0-387-94834-1 .
  • Гонсалес, Дин В. (1991). Справочник программиста Ada . Издательская компания Бенджамина-Каммингса. ISBN  0-8053-2529-8 .
  • Бен-Ари, М. (1998). Ада для инженеров-программистов . Джон Уайли и сыновья. ISBN  0-471-97912-0 .
  • Коэн, Норман (1996). Ада как второй язык . МакГроу-Хилл Наука/инженерия/математика. ISBN  0-07-011607-5 .
  • Бернс, Алан ; Веллингс, Энди (2001). Системы реального времени и языки программирования. Ada 95, Java реального времени и POSIX реального времени . Аддисон-Уэсли. ISBN  0-201-72988-1 .
  • Бернс, Алан ; Веллингс, Энди (1995). Параллелизм в Аде . Издательство Кембриджского университета. ISBN  0-521-62911-Х .
  • Аткинсон, Колин (1991). Объектно-ориентированное повторное использование, параллелизм и распространение: подход на основе Ada . Аддисон-Уэсли. ISBN  0-201-56527-7 .
  • Буч, Грейди ; Брайан, Дуг (1994). Разработка программного обеспечения с использованием Ada . Аддисон-Уэсли. ISBN  0-8053-0608-0 .
  • Джонс, Делай-пока (1989). Ада в действии: с практическими примерами программирования . Джон Уайли и сыновья. ISBN  0-471-60708-8 .
  • Стаббс, Дэниел; Вебре, Нил В. (1993). Структуры данных с абстрактными типами данных и Ada . Брукс Коул. ISBN  0-534-14448-9 .
  • Ледрю, Паскаль (декабрь 1998 г.). Распределенное программирование на языке Ada с защищенными объектами . Диссертация.com. ISBN  1-58112-034-6 .
  • Калвин, Финтан (1997). Ада, развивающий подход . Прентис Холл. ISBN  0-13-264680-3 .
  • Инглиш, Джон; Калвин, Финтан (январь 1997 г.). Ада 95 Искусство объектно-ориентированного программирования . Прентис Холл. ISBN  0-13-230350-7 .
  • Массер, Дэвид Р.; Степанов, Александр (24 октября 1989 г.). Универсальная библиотека Ada: пакеты обработки линейных списков . Спрингер-Верлаг. ISBN  0-387-97133-5 .
  • Фельдман, Майкл Б. (1997). Создание программного обеспечения и структуры данных с помощью Ada 95 . Аддисон-Уэсли. ISBN  0-201-88795-9 .
  • Джонстон, Саймон (1997). Ada 95 для программистов C и C++ . Аддисон-Уэсли. ISBN  0-201-40363-3 .
  • Фельдман, Майкл Б.; Коффман, Эллиот Б. (1992–1993). Ада: Решение проблем и разработка программ . Аддисон-Уэсли. ISBN  0-201-52279-9 . 795 страниц.
  • Фельдман, Майкл Б .; Коффман, Эллиот Б. (1999). Ада 95 . Аддисон-Уэсли. ISBN  0-201-36123-Х .
  • Дейл, Нелл Б .; Уимс, Чип; Маккормик, Джон (август 1996 г.). Программирование и решение проблем с помощью Ada 95 . Издательство Джонс и Бартлетт. ISBN  0-7637-0293-5 .
  • Дейл, Нелл Б .; Маккормик, Джон (2007). Структуры данных Ada Plus: объектно-ориентированный подход, 2-е издание . Издательство Джонс и Бартлетт. ISBN  978-0-7637-3794-8 .
  • Крелл, Брюс К. (1992). Разработка с использованием Ada: методы жизненного цикла . Группа пабов Bantam Dell. ISBN  0-553-09102-6 .
  • Бишоп, Джуди (10 мая 1990 г.). Распределенная Ada: разработки и опыт . Издательство Кембриджского университета. ISBN  0-521-39251-9 .
  • Санден, Бо (1994). Создание программных систем с примерами на языке Ada . Прентис Холл. ISBN  0-13-030834-Х .
  • Хиллам, Брюс (1994). Введение в абстрактные типы данных с использованием Ada . Прентис Холл. ISBN  0-13-045949-6 .
  • Радд, Дэвид (1994). Введение в проектирование и разработку программного обеспечения с использованием Ada . Брукс Коул. ISBN  0-314-02829-3 .
  • Пайл, Ян К. (1991). Разработка систем безопасности: руководство с использованием Ada . Прентис Холл. ISBN  0-13-204298-3 .
  • Бейкер, Луи (1989). Искусственный интеллект с Адой . МакГроу-Хилл. ISBN  0-07-003350-1 .
  • Бернс, Алан ; Веллингс, Энди (1995). HRT-HOOD: метод структурированного проектирования для систем Ada жесткого реального времени . Северная Голландия. ISBN  0-444-82164-3 .
  • Савич, Уолтер; Петерсон, Чарльз (1992). Ада: Введение в искусство и науку программирования . Издательская компания Бенджамина-Каммингса. ISBN  0-8053-7070-6 .
  • Вайс, Марк Аллен (1993). Структуры данных и алгоритмический анализ в Ada . Издательская компания Бенджамина-Каммингса. ISBN  0-8053-9055-3 .
  • Ледгард, Генри (1983). Ада: Введение (второе изд.). Спрингер-Верлаг. ISBN  0-387-90814-5 .
  • Бьёрнер, Дайнс; Оест, Оле Н., ред. К формальному описанию Ады . Лондон: Springer-Verlag. ISBN  3-540-10283-3 .

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]


Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: A7C5C5ADBE45263C5AE1FB341586431E__1716840900
URL1:https://en.wikipedia.org/wiki/Ada_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Ada (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)