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

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

уЧЕДЕОЙС ПВ ЙУФПТЙЙ ТБЪТБВПФЛЙ Й РПСЧМЕОЙЙ ОБ УЧЕФ СЪЩЛБ РТПЗТБННЙТПЧБОЙС бДБ, Б ФБЛЦЕ РПОЙНБОЙЕ ГЕМЕК ЕЗП ТБЪТБВПФЛЙ ОЕ ФПМШЛП ЙОФЕТЕУОЩ УБНЙ РП УЕВЕ, ОП ПОЙ ФБЛЦЕ ДБАФ ОЕЛПФПТПЕ РТЕДУФБЧМЕОЙЕ ЛБЛ П УБНПН СЪЩЛЕ, ФБЛ Й ПВ ЕЗП УЧПКУФЧБИ.

йУФПТЙС СЪЩЛБ РТПЗТБННЙТПЧБОЙС бДБ

ч 1974 ЗПДХ Ч нЙОЙУФЕТУФЧЕ пВПТПОЩ уыб (US Department of Defence / US DoD) ПУПЪОБМЙ, ЮФП ПОЙ ФЕТСАФ НОПЗП ЧТЕНЕОЙ, ХУЙМЙК Й ДЕОЕЗ ОБ ТБЪТБВПФЛХ Й УПРТПЧПЦДЕОЙЕ ЧУФТПЕООЩИ ЛПНРШАФЕТОЩИ УЙУФЕН (ОБРТЙНЕТ, УЙУФЕН ОБЧЕДЕОЙС ТБЛЕФ).

ч ЬФП ЧТЕНС ЙУРПМШЪПЧБМПУШ ПЛПМП 450 ТБЪМЙЮОЩИ СЪЩЛПЧ РТПЗТБННЙТПЧБОЙС Й/ЙМЙ ЙИ ТБУЫЙТЕОЙК. ьФП ХЧЕМЙЮЙЧБМП ЪБФТБФЩ ЧТЕНЕОЙ Й УТЕДУФЧ ОБ ТБЪТБВПФЛХ ОПЧЩИ УЙУФЕН Й ОБ РПУФПСООХА ФЕИОЙЮЕУЛХА РЕТЕРПДЗПФПЧЛХ РЕТУПОБМБ ДМС ПВУМХЦЙЧБОЙС ХЦЕ УПЪДБООЩИ УЙУФЕН. лТПНЕ ФПЗП, УПРТПЧПЦДЕОЙА УХЭЕУФЧХАЭЙИ УЙУФЕН НЕЫБМП ПФУХФУФЧЙЕ УФБОДБТФЙЪБГЙЙ Ч ЙОУФТХНЕОФБИ РПДДЕТЦЛЙ (ТЕДБЛФПТЩ, ЛПНРЙМСФПТЩ Й Ф.Д.). чУЕ ЬФЙ ЖБЛФПТЩ РТЙЧЕМЙ Л ФПНХ, ЮФП Ч нЙОЙУФЕТУФЧЕ пВПТПОЩ уыб ПУПЪОБМЙ ОЕПВИПДЙНПУФШ Ч ЕДЙОПН НПЭОПН СЪЩЛЕ РТПЗТБННЙТПЧБОЙС, ЛПФПТЩК ДПМЦЕО ВЩМ ВЩ ЙУРПМШЪПЧБФШУС ЧУЕНЙ РПУФБЧЭЙЛБНЙ ЧУФТПЕООЩИ ЛПНРШАФЕТОЩИ УЙУФЕН.

тБВПФЩ РП ТБЪТБВПФЛЕ ВЩМЙ ОБЮБФЩ Ч 1975 ЗПДХ РПУМЕ ФПЗП ЛБЛ Ч нЙОЙУФЕТУФЧЕ пВПТПОЩ уыб ВЩМ ТБЪТБВПФБО УРЙУПЛ ФТЕВПЧБОЙК Л СЪЩЛХ, ЛПФПТЩК ВЩМ ЫЙТПЛП ТБУРТПУФТБОЕО. пДОБЛП, ОЙ ПДЙО ЙЪ УХЭЕУФЧПЧБЧЫЙИ ОБ ФПФ НПНЕОФ ЧТЕНЕОЙ СЪЩЛПЧ РТПЗТБННЙТПЧБОЙС ОЕ УППФЧЕФУФЧПЧБМ ЧЩДЧЙОХФЩН ФТЕВПЧБОЙСН. ч ЙФПЗЕ, Ч 1977 ЗПДХ нЙОЙУФЕТУФЧП пВПТПОЩ уыб ЧЩДЧЙЗБЕФ РТЕДМПЦЕОЙЕ УПЪДБФШ ОПЧЩК СЪЩЛ. ч ПФМЙЮЙЕ ПФ «ЛПНЙФЕФОЩИ СЪЩЛПЧ», ФБЛЙИ ЛБЛ лпвпм, ОПЧЩК СЪЩЛ ВЩМ РТЕДНЕФПН ЛПОЛХТУОПЗП РЕТЕУНПФТБ Ч ЫЙТПЛЙИ ЙОДХУФТЙБМШОЩИ Й БЛБДЕНЙЮЕУЛЙИ ЛТХЗБИ.

ч 1983 ЗПДХ СЪЩЛ УФБОПЧЙФУС УФБОДБТФПН ANSI/MIL-STD-1815A-1983, Б ЪБФЕН Й НЕЦДХОБТПДОЩН УФБОДБТФПН ISO 8652:1987. сЪЩЛ ПРЙУЩЧБЕФУС Ч УРТБЧПЮОПН ТХЛПЧПДУФЧЕ РП СЪЩЛХ (Language Reference Manual), ЮБУФП ОБЪЩЧБЕНПН LRM. уУЩМЛЙ ОБ ЬФП УРТБЧПЮОПЕ ТХЛПЧПДУФЧП ЮБУФП ЧУФТЕЮБАФУС Ч ЛОЙЗБИ, РПУЧСЭЕООЩИ СЪЩЛХ РТПЗТБННЙТПЧБОЙС бДБ, Б ФБЛЦЕ ЧП НОПЗЙИ УППВЭЕОЙСИ ПВ ПЫЙВЛБИ ЛПНРЙМСФПТБ. ьФБ ЛОЙЗБ ЮБУФП ТЕЛПНЕОДХЕФУС ДМС РТПЮФЕОЙС. иПФС ЮЙФБФШ ЕЕ ДПЧПМШОП УМПЦОП, ПОБ СЧМСЕФУС ЙУЮЕТРЩЧБАЭЙН БЧФПТЙФЕФОЩН ЙУФПЮОЙЛПН Ч ЧПРТПУБИ РП СЪЩЛХ РТПЗТБННЙТПЧБОЙС бДБ (ВЩМБ УЖПТНЙТПЧБОБ УРЕГЙБМШОБС РПУФПСООБС ЗТХРРБ ДМС ЧЩСЧМЕОЙС РТПФЙЧПТЕЮЙК Ч СЪЩЛЕ).

сЪЩЛ РТЕФЕТРЕМ РЕТЕУНПФТ РТЙ ЧЧЕДЕОЙЙ ОПЧПЗП ISO УФБОДБТФБ Ч ОБЮБМЕ 1995 ЗПДБ (ISO/IEC 8652:1995). ьФПФ УФБОДБТФ ЙУРТБЧМСЕФ НОПЗЙЕ ХРХЭЕОЙС Й ОЕДПУФБФЛЙ ПТЙЗЙОБМШОПЗП СЪЩЛБ, Й ДПРПМОСЕФ ЕЗП НОПЗЙНЙ ОПЧЩНЙ РПМЕЪОЩНЙ УЧПКУФЧБНЙ.

гЕМЙ ТБЪТБВПФЛЙ

чПЪНПЦОП, ЮФП ОБЙМХЮЫЕК ИБТБЛФЕТЙУФЙЛПК ГЕМЕК ТБЪТБВПФЛЙ РПУМХЦЙФ ГЙФБФБ ЙЪ ТХЛПЧПДУФЧБ РП СЪЩЛХ РТПЗТБННЙТПЧБОЙС бДБ:

«сЪЩЛ бДБ ВЩМ ТБЪТБВПФБО ХЮЙФЩЧБС ФТЙ ЧЪБЙНОП РЕТЕЛМЙЛБАЭЙЕУС ЛПОГЕРГЙЙ: ОБДЕЦОПУФШ РТПЗТБННЙТПЧБОЙС Й УПРТПЧПЦДЕОЙС, РТПЗТБННЙТПЧБОЙЕ ЛБЛ ЮЕМПЧЕЮЕУЛБС ДЕСФЕМШОПУФШ Й ЬЖЖЕЛФЙЧОПУФШ»

й ЛБЛ РТЙНЕЮБОЙЕ Л ЬФПК ЖТБЪЕ, ФБЛЦЕ ЙЪ ТХЛПЧПДУФЧБ РП СЪЩЛХ РТПЗТБННЙТПЧБОЙС бДБ:

«фБЛЙН ПВТБЪПН, ЮЙФБВЕМШОПУФЙ РТПЗТБНН РТЙДБЧБМПУШ ВПМШЫЕЕ ЪОБЮЕОЙЕ, ЮЕН МЕЗЛПУФЙ ЙИ ОБРЙУБОЙС»

тЕЪХМШФБФЩ ФБЛЙИ ГЕМЕК ТБЪТБВПФЛЙ НПЦОП ХЧЙДЕФШ Ч РПМХЮЙЧЫЕНУС СЪЩЛЕ. пО ЙНЕЕФ УФТПЗХА ФЙРЙЪБГЙА Й РТЙОХЦДБЕФ Л БВУФТБЗЙТПЧБОЙА, ЮФП ЧМЕЮЕФ ЪБ УПВПК ХМХЮЫЕОЙЕ ЮЙФБВЕМШОПУФЙ Й ПВМЕЗЮЕОЙЕ УПРТПЧПЦДЕОЙС.

Источник

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

А́да (Ada) — язык программирования, созданный в 1979—1980 годах в ходе проекта Министерством обороны США с целью разработать единый язык программирования для встроенных систем (то есть систем управления автоматизированными комплексами, функционирующими в реальном времени). Имелись в виду, прежде всего, бортовые системы управления военными объектами (кораблями, самолётами, танками, ракетами, снарядами и т. п.). Перед разработчиками не стояло задачи создать универсальный язык, поэтому решения, принятые авторами Ады, нужно воспринимать в контексте особенностей выбранной предметной области. Язык назван в честь Ады Лавлэйс.

Содержание

Особенности языка

В исходном варианте, стандартизованном в 1983 году, Ада — это структурный, модульный язык программирования, содержащий высокоуровневые средства программирования параллельных процессов. Синтаксис Ады унаследован от языков типа Algol или Паскаль, но расширен, а также сделан более строгим и логичным. Ада — язык со строгой типизацией, в нём исключена работа с объектами, не имеющими типов, а автоматические преобразования типов сведены к абсолютному минимуму. В стандарте 1995 года в язык были добавлены базовые средства объектно-ориентированного программирования, в стандарте 2007 эти средства были дополнены, поэтому современная Ада — объектно-ориентированный язык программирования.

Из особенностей синтаксиса можно отметить:

«Hello, world!» на Аде

Несколько различных вариантов программы «Hello, world!» можно увидеть в Викиучебнике (англ.). Различия обусловлены необходимостью использовать библиотечную функцию Put_Line — в этом языке есть три различных способа организации такого использования.

Здесь для применения функции Put_Line содержащий её пакет Ada.Text_IO импортируется с помощью конструкции use, что даёт возможность вызывать функцию по имени без квалификации — указания в вызове имени пакета, содержащего функцию.

История

Разработка языка была проведена в рамках международного конкурса, организованного и профинансированного министерством обороны США. Целью разработки было получение языка программирования, который мог бы стать единым для разработки проектов по заказам военного ведомства, главным образом, для разработки встроенных систем военного назначения и для больших военных компьютеров (на базе процессора iAPX 432 от Intel). Работа началась в 1975 году, с формирования набора требований к языку, который бы в полной мере удовлетворил разработчиков систем указанного типа. Первоначальный список требований, выпущенный под кодовым наименованием «Соломенный», был представлен на рецензию в ряд организаций и фирм, в течение двух лет последовательно уточнялся, в конечном счёте превратившись в итоговый документ под названием «Стальной».

После завершения формирования требований был проведён анализ, который показал, что ни один из имеющихся языков программирования не удовлетворяет требованиям в достаточной мере, так что было принято решение разработать новый язык. Конкурс на его создание был объявлен в 1977 году, разработчикам было предложено базироваться на одном из трёх языков: Паскаль, Алгол-68 или PL/1.

Из представленных на конкурс 15 проектов было отобрано 4 (все основаны на Паскале). Эти проекты были отправлены на дальнейшую доработку. На следующем этапе из 4 проектов отобрали два, из которых, после очередной доработки, был выбран один. Этот язык получил наименование «Ада» — разработавшая его группа под руководством француза Жана Ишбиа дала языку название в честь Огасты Ады Кинг Лавлейс (1815—1852), дочери поэта Дж. Байрона, которая занималась разработкой программ для вычислительной машины Бэббиджа и считается первым программистом в мире.

В 1983 году язык был официально стандартизован ANSI. Стандарт языка ANSI/MIL-STD-1815-A-1983 был утверждён 17 февраля 1983 года. МО США сделало наименование «Ada» зарегистрированной торговой маркой, запретив выпускать трансляторы языка, не прошедшие официальную процедуру тестирования на соответствие стандартам. Процедура состояла в прогоне через тестируемый компилятор большого количества (более 1000) тестовых программ (так называемый комплект ACVC), для каждой из которых был однозначно определён результат тестирования: либо удачная компиляция, либо выдача вполне конкретного сообщения об ошибке. Тестирование проводилось по принципу «всё или ничего» — при ошибке в обработке хотя бы одного тестового примера компилятор считался не прошедшим тест, причём тестирование было действительно только на той аппаратной и программной платформе, на которой оно проводилось. Таким образом была в зародыше подавлена возможность образования «версий» или «диалектов» языка Ада.

В 1987 году язык Ада был официально стандартизован ISO. С этого момента МО США предоставило язык в публичное распоряжение.

К 1990 году в мире существовало уже около 200 компиляторов, соответствовавших стандарту языка Ада.

В 1995 году был принят новый стандарт Ады, известный как Ada95. В язык были введены средства объектного программирования. Кроме того, язык был дополнен более развитыми средствами для взаимодействия с программами, написанными на других языках.

Читайте также:  Грамматические нормы русского языка кратко

В марте 2007 года опубликованы [3] изменения в стандарте Ады. Они коснулись, в основном, возможностей объектно-ориентированного программирования: введены интерфейсы, принят обычный для большинства гибридных языков синтаксис вызова метода, внесён ещё ряд дополнений.

Ада в СССР и России

В СССР в 80-х годах была организована Рабочая Группа по языку Ада при Госкомитете по науке и технике. Группа занималась изучением всех открытых (а также, по слухам, добытых разведкой закрытых) данных по языку Ада и исследовала возможность и целесообразность развития и использования Ады в СССР. Деятельность этой группы привела к концу 80-х годов к разработке компиляторов Ады для практически всех применяемых в СССР компьютеров. Было выпущено несколько книг по языку Ада на русском языке.

В МГУ проводилась работа по созданию собственных пакетов тестирования Ада-трансляторов на соответствие стандартам. В ЛГУ для создания Ада-системы была использована ранее разрабатываемая для реализации Алгола-68 система «Паллада», которую перевели на Аду. Система содержит интегрированную среду разработки, компилятор, текстовый редактор, отладчик, библиотеки, систему контроля версий и командный интерпретатор.

После распада СССР работа по распространению Ады практически прервалась. Правда, были приняты три программы развития разработки ПО на Аде (в министерстве обороны, министерстве гражданской авиации и министерстве образования и науки), но разработка их ведётся медленно и нескоординированно. В результате в России язык Ада малоизвестен, большинство современных российских программистов считают его «мёртвым языком» и ничего о нём не знают. Ада используется в России и СНГ отдельными энтузиастами. Тем не менее, язык применяется для промышленной разработки ПО. Известно несколько разработанных на Аде проектов, работающих в России. Среди них:

Критика

С момента появления Ада подверглась критике некоторых признанных авторитетов в области разработки языков программирования, в первую очередь — за сложность синтаксиса и большой объём. В частности, язык критиковали Чарльз Хоар и Никлаус Вирт (участвовавшие со своим проектом в данном конкурсе, но выбывшие после первого этапа), а также Эдсгер Дейкстра.

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

Распространение, перспективы

Тем не менее, по некоторым осторожным прогнозам, с удешевлением аппаратуры и распространением встроенных систем со сложным ПО рынок для программ на Аде может заметно вырасти:

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

Операционные системы, написанные на Аде

Встроенные системы

Системы в разработке

Больше не существующие системы

Компиляторы Ада

Название Компания Версия Операционная система Сайт
AdaMagic SofCheck Ада 95 ? www.sofcheck.com
AdaMULTI Green Hills Software Ада 83, Ада 95, Си, Си++, Фортран Solaris SPARC, GNU/Linux x86, Windows www.ghs.com
DEC Ada Hewlett Packard Ада 83 OpenVMS h71000.www7.hp.com
GNAT AdaCore Ада 83, Ада 95, Ада 2005, Си Solaris SPARC, Linux x86/x86-64, Windows, другие libre.adacore.com
ICC Irvine Compiler Corporation Ада 83, Ада 95 DEC VAX/VMS, HP 9000/700, Solaris SPARC, DEC Alpha OSF/1, PC Linux, SGI IRIX, Windows www.irvine.com
Janus/Ada RR Software Ада 83, Ада 95 SCO, UnixWare, Interactive, MS-DOS, Windows www.rrsoftware.com
MAXAda Concurrent Ада 95 Linux/Xeon, PowerPC www.ccur.com
ObjectAda Aonix Ада 95 Solaris SPARC, HP-UX, IBM AIX, Linux, Windows www.aonix.com
PowerAda OC Systems Ада 83, Ада 95 Linux, AIX (Ада 95); IBM System 370/390 (Ада 83) www.ocsystems.com
Rational Apex IBM Rational Ада, Си, Си++ Solaris SPARC, Linux www-01.ibm.com
SCORE DDC-I Ада 83, Ада 95, Си, Фортран Solaris SPARC, Windows www.ddci.com
XD Ada SWEP-EDS Ада 83 OpenVMS Alpha/VAX www.swep-eds.com
XGC Ada XGC Software Ада 83, Ада 95, Си Solaris SPARC, PC Linux, Windows (Cygwin) www.xgc.com

За исключением GNAT и XGC (для некоторых платформ) вышеперечисленные компиляторы являются платными. Некоторые фирмы, например Aonix, предлагают бесплатные демонстрационные версии, ограниченные либо по времени использования, либо по функциональности.

Среды разработки NetBeans [7] и Eclipse имеют плагины для работы с Ада.

Производные языки

Синтаксис языка Ада использован в следующих языках:

Интересные факты

Язык Пентагона — враг мира. Язык «Ады» — голос термоядерного ада… В языке «Ады» слышится проклятие роду людскому.

Источник

Программирование | Ada

Порой в интернете можно встретить шутливые картинки с изображением старых потёртых книг, названия которых звучат как «Язык программирования Ада», и у человека, незнакомого с программированием это вполне естественно может вызвать улыбку. Откуда такое любопытное название, если о преисподней речи не идёт?

Ada — мощнейший модульный объектно–ориентированный язык общего назначения, ориентированный на разработку надёжного программного обеспечения.

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

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

Ада, язык, носящий имя графини, был разработан по инициативе и при содействии министерства обороны США. Исследования, предпринятые в начале и середине 70-х годов, показали, что можно получить огромную экономию средств на программное обеспечение (около 24 млрд. долл. за период 1983 — 1999 гг.), если министерство обороны воспользуется единым языком программирования для решения всех своих задач вместо примерно 450 языков программирования и несовместимых диалектов, используемых программистами. Финансы поют романсы. Всё как всегда.

Результатом сих исследований стали требования к новому языку программирования, способному заменить большинство языков программирования, используемых в рамках министерства обороны США. Требования, получившие шутливое именование «соломенный человек», постепенно уточнялись с помощью широкого обсуждения как в США, так и за рубежом. В этот процесс были вовлечены вооруженные силы США, зарубежные военные организации, промышленность и университеты. Получаемые в результате очередного шага детализации требования постепенно назывались «деревянными», «железными» и, наконец, «стальными».

Несмотря на то, что побудительные мотивы создания нового языка программирования первоначально были чисто экономическими, на него оказало заметное влияние и желание иметь язык программирования, направленный на решение важных проблем разработки программного обеспечения. Требования к новому языку содержали такие технические особенности, как простота и полнота языка, надежность, правильность и переносимость программ, простота поддержки, возможность разработки больших программ, программирование в реальном масштабе времени и обнаружение и исправление ошибок. Для разработки языка, удовлетворяющего перечисленным требованиям, был организован международный конкурс. Семнадцать фирм подали свои предложения, четыре из них были отобраны как полуфиналисты. Интересно, что все полуфиналисты в качестве основы для своих языков взяли язык Паскаль. Победителем конкурса стал язык программирования, разработанный группой ученых под руководством Ж. Ишбиа фирмы CII Honeywell Bull. Претерпев некоторое число изменений, этот язык был назван Ада. Через некоторое время доработанный язык Ада становится стандартом ANSI; дальнейшие изменения в языке были направлены на его упрощение и устранение несоответствий. Язык Ада был принят как стандарт ANSI в феврале 1983 г.

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

Читайте также:  Индоевропейская группа языков страны

Язык Ада – это современный язык программирования, содержащий такие возможности паскалеподобных языков, как определение типов, общие управляющие структуры и подпрограммы. Более того, в языке Ада собраны многие достижения теории языков программирования, полученные после 1970 г. Язык поддерживает логическую модульность, для которой данные, типы и подпрограммы – все могут быть пакетами. Физическая модульность достигается раздельной компиляцией. Язык Ада поддерживает программирование в реальном масштабе времени за счет механизмов распараллеливания и обработки исключений. Системное программирование поддерживается за счет доступа к системно-зависимым параметрам и управлением точностью при представлении данных.

Язык Ада вводит строгую дисциплину программирования, направленную на то, чтобы сделать программы более удобочитаемыми, надежными, переносимыми, модульными, эффективными и т.д. – т.е. обладающими всеми качествами хорошей программы. Например, программист должен объявить все объекты, использовать объекты в соответствии с их типами и обращаться к объектам только в соответствии с правилами видимости языка Ада. Пусть ранее программист использовал для этих целей язык, не обладающий той строгостью, которую предписывает язык Ада. Однако, написав несколько нетривиальных программ на языке Ада, программист оценит его правила, поймет, что цель ограничений языка Ада – это найти большее по сравнению с другими языками программирования число ошибок, причем раньше и автоматически, а также помочь программисту писать хорошие программы, не сдерживая его творчество и изобретательность.

Особенности языка

Синтаксис

Примеры программ

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

2) рекурсивное определение факториала

with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Long_Long_Integer_Text_IO;

procedure Factorial is
begin
declare
function Fact (N: Integer) return Long_Long_Integer is
begin
if N=0 then
return 1;
else
return Long_Long_Integer(N)*Fact(N-1);
end if;
end Fact;
i: Integer := 0;
begin
loop
Ada.Integer_Text_IO.Put (Item => i, Width => 1);
Ada.Text_IO.Put («! = «);
Ada.Long_Long_Integer_Text_IO.Put (Item => Fact(i), Width => 1);
Ada.Text_IO.New_Line;
i := i + 1;
exit when i=17;
end loop;
end;
end Factorial;

3) Решение квадратных уравнений

Ada предоставляет тип данных для работы с комплексными числами, который требует использования пакетов Generic_Complex_Types и Generic_Complex_Elementary_Functions с предварительной инициализацией их типом данных для хранения комплексных чисел (в данном случае — Float ). Ada не поддерживает неявные преобразования типов, поэтому все преобразования выполняются в явном виде.

with Ada.Text_IO,
Ada.Integer_Text_IO,
Ada.Float_Text_IO,
Ada.Numerics.Elementary_Functions,
Ada.Text_IO.Complex_IO,
Ada.Numerics.Generic_Complex_Types,
Ada.Numerics.Generic_Complex_Elementary_Functions;
use Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO;

procedure QuadraticEquation is
package Complex_Types is new Ada.Numerics.Generic_Complex_Types (Float);
package Complex_Functions is new Ada.Numerics.Generic_Complex_Elementary_Functions(Complex_Types);
package Complex_IO is new Ada.Text_IO.Complex_IO (Complex_Types);

use Complex_Types, Complex_Functions, Complex_IO;

A,B,C,D: Integer;
A2f, Bf, S: Float;
Dc: Complex;
begin
Put(«A = «);
Get(Item => A);
if A = 0 then
Put_Line(«Not a quadratic equation.»);
return;
end if;
Put(«B = «);
Get(B);
Put(«C = «);
Get(C);
A2f := Float(2*A);
Bf := Float(B);

Источник

Если спросить отечественного ИТ-специалиста: «Что такое Ада?», большинство лишь удивленно пожмет плечами, а кто-то даже скажет, что это мертвый язык, когда-то придуманный Пентагоном, а ныне практически не используемый. На самом же деле Ада и сегодня — вполне благополучный и активно применяемый в различных областях язык программирования. Правда, большинство российских программистов знают о нем мало.

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

Несмотря ни на что, в отдельных областях техники Россия все еще «впереди планеты всей». И одна из них — конструирование и производство самолетов-амфибий. Всемирно признанным лидером в этой области является ТАНТК им. Г.М. Бериева. Недавно это предприятие приобрело средства разработки бортового программного обеспечения на базе языка Ада для использования при модернизации своей последней модели Бе-200.

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

Немного истории

Официальным днем рождения языка программирования Ада можно считать 17 февраля 1983 года — дату утверждения стандарта ANSI/MIL-STD-1815-A-1983.

Технические и административные меры, предпринятые Минобороны как часть проекта по созданию и внедрению Ады, полностью предотвратили появление и распространение диалектов языка. С 1983 года и по настоящее время все индустриальные реализации поддерживают действующий стандарт Ады. Когда же речь заходит о подмножествах Ады, то эти подмножества определяются не реализацией, а стандартами разработки конкретного класса систем.

В 1987 году стандарт ANSI без единого изменения был утвержден в качестве стандарта ISO (ISO/IEC 8652), а когда в начале 90-х годов назрела необходимость пересмотра стандарта, работа по пересмотру также была проведена под управлением и на средства Министерства обороны США. Стартовал новый международный проект, который завершился утверждением в конце 1994-го и публикацией в начале 1995 года новой версии стандарта ISO/IEC 8652. Именно этот документ и служит сегодня определением языка программирования Ада.

В СССР в начале 80-х годов была образована Рабочая группа по языку программирования Ада при Государственном комитете по науке и технике. Тщательно собиралась и анализировалась вся открытая информация о проекте, а усилиями специальных служб добывалась и закрытая информация. Были организованы проекты по реализации Ады для практически всех использовавшихся тогда архитектур ЭВМ, и некоторые из них оказались весьма успешными. Распад СССР положил конец этой деятельности. Сегодня Ада используется в России и СНГ отдельными энтузиастами.

Что такое Ада

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

Пример такой просто необходим для того, чтобы опровергнуть достаточно распространенный миф о том, что Ада — большой, сложный и «тяжелый» язык, пригодный лишь для написания сверхбольших и сверхсложных систем. На самом же деле, Ада может применяться для разработки небольших и средних программ с тем же успехом, как и современные клоны Си, Паскаля, Бейсика и Java. Так, классический пример программы «Hello, World!» выглядит на Аде следующим образом:

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

Следующая программа определяет два асинхронных процесса [1]:

В разделе локальных объявлений процедуры Tasking_Example описывается задача Outputter (строка 6, строки с 8 по 17 содержат тело этой задачи). Когда управление в процессе, соответствующем процедуре Tasking_Example, доходит до строки 20, перед тем, как выполнить этот первый оператор, запускается процесс, соответствующий задаче Outputter, после чего два этих процесса живут и асинхронно выполняются независимо друг от друга. Выполнение оператора задержки (строки 14 и 20) состоит в приостановке соответствующего процесса на указанное количество секунд. Таким образом, процесс Tasking_Example приостанавливается на 20 секунд, а в это время процесс Outputter начинает печатать значения увеличивающегося на единицу счетчика, приостанавливаясь на одну секунду после вывода каждого значения. По истечении 20 секунд процесс Tasking_Example устанавливает флаг Finished в положение «истина», в результате завершается цикл в процессе Outputter. Спецификация переменной Finished как атомарного объекта данных (строка 4) делает невозможным одновременное чтение и изменение значения этой переменной.

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

Читайте также:  Агглютинативный тип языка примеры

Строки 1-6 содержат объявление настраиваемой функции, а строки 8-20 — ее тело. Содержательно, параметром настройки является произвольный одномерный регулярный тип с неуточненным индексным диапазоном (строка 4), про которого известно только, что тип компонента у него произвольный, однако для компонентов определена операция присваивания (строка 2), тип индекса — произвольный дискретный (строка 4). Поскольку нам предстоит покомпонентно складывать два массива, надо знать, что такое операция сложения для типа компонентов. Так как это произвольный тип, мы вынуждены передавать сложение для типа компонента как формальный параметр настройки (строка 5).

Почему Ада?

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

Ада и Си

При проведении сравнительных анализов популярных языков переломано столько копий, что сегодня эту тему часто относят к разряду «религиозных войн». Поэтому ограничимся лишь ссылкой на известную статью [2], в которой делается ряд красноречивых выводов.

В качестве иллюстрации этих выводов, приведем пример разработки бортового программного обеспечения самолета C-130J в соответствии с требованиями Уровня А стандарта DO-178B [3]. При этом констатировалось качество кода, в 10 раз превышающее среднее для программного обеспечения Уровня А. Производительность труда выросла вчетверо относительно сопоставимых программных проектов.

Ада и Java

Укажем также на статьи [4] и [5], демонстрирующие преимущества языка Ада над Java.

«Адские» мифы

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

Ада — мертвый язык, на нем сейчас никто не программирует. В действительности, Ада уверенно занимает нишу больших встроенных систем с повышенными требованиями к надежности. По сравнению с «коробочными» продуктами для Windows, такие системы не так заметны, поскольку либо существуют в одном экземпляре (какой смысл тиражировать программу, управляющую движением поездов метро), или распространяются как часть системы, в которую они встроены (бортовое программное обеспечение).

Ада — язык, предназначенный исключительно для военных применений. Ада действительно была разработана при участии Министерства обороны США, однако отсутствуют какие-либо технические, административные или иные причины, препятствующие использованию Ады для разработки гражданских систем. Количество «гражданских» проектов, основанных на этом языке, сегодня сопоставимо с количеством «военных» проектов.

Ада — слишком большой и сложный язык, для того чтобы использовать его в небольшом проекте. Объем и сложность всех современных индустриальных языков практически одинаковы, и чтобы убедиться в этом, достаточно просто сравнить объем их описаний. Этот миф восходит к началу 80-х годов, когда Аду сопоставляли с Паскалем, Фортраном 77 или Бейсиком.

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

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

Существующие Ада-технологии неэффективны; и трансляторы, и порождаемый ими код, отличаются низкой производительностью. Этот миф также восходит к первой половине 80-х годов, когда появились первые реализации Ады, фактически всего лишь доказывавшие «теорему существования Ада-транслятора, соответствующего стандарту». Достаточно провести ряд несложных экспериментов, запрограммировав некоторую модельную задачку на Аде, Паскале и Си/Си++, и сравнив (при сопоставимых параметрах компиляторов) затем скорость компиляции, объем порождаемого кода и скорость его выполнения, чтобы убедиться, что какой-либо специфической неэффективности, свойственной Аде, просто не существует. Можно также отметить, что система программирования GNAT при объеме исходных текстов более 40 Мбайт, на 90% реализована на Аде, и построение ее из исходных текстов (в его ходе она трижды сама себя компилирует) на современном ПК занимает не более получаса.

Существующие реализации Ады крайне дороги. Это верно, однако следует иметь в виду, что существует публично доступная версия системы программирования GNAT, которая бесплатно и на совершенно законных основаниях может быть взята из программного репозитория Нью-йоркского университета (ftp://cs.nyu.edu/pub/gnat) вместе с исходными текстами

Бесплатный сыр и как избежать мышеловки

GNAT (GNu Ada Translator) — многоплатформная реализация языка Ада, существующая практически на всех современных индустриальных платформах и поддерживающая генерацию кода для популярных встроенных архитектур. GNAT (www.gnat.com) полностью реализует стандарт Ады, включая те библиотеки, которые стандартом классифицируются как необязательные. Помимо собственно Ада-транслятора, GNAT включает инструментарий, в котором следует отметить развитую интегрированную среду разработчика и многоязыковый графический отладчик, позволяющий, в том числе, исследовать поведение программ с асинхронными процессами. Транслятор и сопутствующие инструменты можно использовать как по отдельности, вызывая их из командной строки, так и в рамках интегрированной графической среды разработки Ада-программ. Все компоненты GNAT, включая среду разработки, имеют один и тот же интерфейс на всех платформах. Помимо полной реализации описываемых стандартом средств GNAT предлагает богатый набор допускаемых стандартом расширений. GNAT — реализация Ады в многоязыковой системе программирования gcc, состоящей из набора компиляторов переднего плана для различных входных языков при общем генераторе кода, что существенно упрощает разработку программ, содержащих компоненты, реализованные на различных языках программирования.

GNAT с самого начала разрабатывался и распространялся под лицензией GPL. Увы, с GPL также связана масса мифов. Так, многие считают, что программы под GPL разрабатываются неорганизованными группами энтузиастов, распространяются абсолютно бесплатно; в результате и надежность, и функциональность таких программ оставляют желать лучшего, не позволяют использовать их в сколько-нибудь серьезных проектах. В случае с GNAT это далеко не так. Для того чтобы убедиться в этом, достаточно просмотреть список компаний, заключивших с его разработчиками контракты на техническую поддержку: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics и др.

Свободное предоставление демонстрационных версий — обычная практика многих разработчиков программного обеспечения. GNAT отличается тем, что находящаяся в свободном доступе публичная версия является абсолютно полной версией технологии, без каких-либо юридических или технических ограничений на ее использование. Ряд серьезных проектов был успешно реализован именно на базе публичных версий GNAT. Программное обеспечение спускаемого аппарата Beagle 2 европейской автоматической станции Mars Express, направляющейся в данный момент к Марсу (www.beagle2.com/index.htm), автоматизированная станция документальной связи Министерства обороны РФ (www.ada-ru.org/prj_doc.html). Единственным недостатком публичных версий является то, что разработчик не предоставляет для них технической поддержки.

Заключение

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

Литература
Полезные источники

Практически вся информация по языку Ада и Ада-технологиям, доступная в Сети, может быть найдена, если в качестве стартовой точки поиска использовать один из трех сайтов: www.adahome.com, www.adaic.org, www.acm.org/sigada. Недавно силами энтузиастов языка Ада был создан русскоязычный сайт www.ada-ru.org. Аннотированную библиографию книг по языку Ада, изданных на русском языке, можно найти на сайте faqs.org.ru/progr/other_l/adafaq2.htm.

Поделитесь материалом с коллегами и друзьями

Источник

Поделиться с друзьями
Расскажем обо всем понемногу
Adblock
detector