Благодарности
Хочу выразить благодарность всем энтузиастам:
Д.Анисимков, И.Васильченко, В.Годунко, Е.Зуев, А.Литвинов, М.Резник, С.Рыбин, К.Сазонов, Г.Сисюк, О.Цирюлик,
- которые помогли мне конструктивными замечаниями, советами и подсказками во время написания этой книги.
Кроме того, с благодарностью будут приняты любые дополнительные замечания по содержанию книги, которые можно направлять по адресу: alex ( at ) lviv ( dot ) bank ( dot ) gov ( dot ) ua
Copyright (C) А.Гавва | V-0.4w май 2004 |
Цели разработки
Возможно, что наилучшей характеристикой целей разработки послужит цитата из руководства по языку программирования Ада:
"Язык Ада был разработан учитывая три взаимно перекликающиеся концепции: надежность программирования и сопровождения, программирование как человеческая деятельность и эффективность"
И как примечание к этой фразе, также из руководства по языку программирования Ада:
"Таким образом, читабельности программ придавалось большее значение, чем легкости их написания"
Результаты таких целей разработки можно увидеть в получившемся языке. Он имеет строгую типизацию и принуждает к абстрагированию, что влечет за собой улучшение читабельности и облегчение сопровождения.
Ада избавлена от использования криптованного синтаксиса и обладает более "разговорным" стилем английского языка что значительно улучшает читабельность программ (читабельность - программирование как человеческая деятельность).
К тому же, почти все конструкции языка могут быть эффективно реализованы.
Copyright (C) А.Гавва | V-0.4w май 2004 |
История языка программирования Ада
В 1974 году в Министерстве Обороны США (US Department of Defence / US DoD) осознали, что они теряют много времени, усилий и денег на разработку и сопровождение встроенных компьютерных систем (например, систем наведения ракет).
В это время использовалось около 450 различных языков программирования и/или их расширений. Это увеличивало затраты времени и средств на разработку новых систем и на постоянную техническую переподготовку персонала для обслуживания уже созданных систем. Кроме того, сопровождению существующих систем мешало отсутствие стандартизации в инструментах поддержки (редакторы, компиляторы и т.д.). Все эти факторы привели к тому, что в Министерстве Обороны США осознали необходимость в едином мощном языке программирования, который должен был бы использоваться всеми поставщиками встроенных компьютерных систем.
Работы по разработке были начаты в 1975 году после того как в Министерстве Обороны США был разработан список требований к языку, который был широко распространен. Однако, ни один из существовавших на тот момент времени языков программирования не соответствовал выдвинутым требованиям. В итоге, в 1977 году Министерство Обороны США выдвигает предложение создать новый язык. В отличие от "комитетных языков", таких как КОБОЛ, новый язык был предметом конкурсного пересмотра в широких индустриальных и академических кругах.
Из большого числа предложений было отобрано четыре, для последующего пересмотра и доработки. Позже, для дальнейшего уточнения, из них отобрали два, и в финале выбрали проект представленный компанией Cii-Honeywell Bull.
Этому языку и было дано имя Ада, в честь Августы Ады Байрон, графини Лавлейс, дочери английского поэта лорда Байрона.
Она была сотрудницей Чарльза Беббиджа, изобретателя аналитической машины, и написала для этой машины программу вычисления чисел Бернулли - Августа Ада по праву считается первым в мире программистом.
Разработкой данного проекта руководил Jean Ichbiah.
В 1983 году язык становится стандартом ANSI/MIL-STD-1815A-1983, а затем и международным стандартом ISO 8652:1987.
Язык описывается в справочном руководстве по языку (Language Reference Manual), часто называемом LRM.
Ссылки на это справочное руководство часто встречаются в книгах, посвященных языку программирования Ада, а также во многих сообщениях об ошибках компилятора.
Эта книга часто рекомендуется для прочтения.
Хотя читать ее довольно сложно, она является исчерпывающим авторитетным источником в вопросах по языку программирования Ада (была сформирована специальная постоянная группа для выявления противоречий в языке).
Язык претерпел пересмотр при введении нового ISO стандарта в начале 1995 года (ISO/IEC 8652:1995). Этот стандарт исправляет многие упущения и недостатки оригинального языка, и дополняет его многими новыми полезными свойствами.
Для предотвращения размножения множества различных версий языка Ада, в "Ada Joint Program Office" (AJPO) заняли довольно оригинальную позицию - они зарегистрировали имя "Ada" как торговую марку. Таким образом, вы не имеете права распространять компиляторы языка программирования Ада до тех пор, пока они не пройдут тестирование на совместимость. Позднее эти требования были ослаблены, и теперь защищенное название звучит как "Validated Ada".
Результирующий сертификат ратификации (валидированности) ограничен по времени и имеет дату срока истечения. После истечения срока сертификации компилятор не может больше распространятся как ратифицированный, - "Validated Ada", - компилятор языка программирования Ада. Таким образом AJPO убежден в том, что все, в текуший момент распространяемые компиляторы, соответствуют требованиям текущего стандарта.
Это помогает убедиться в том, что любая программа на языке Ада может быть скомпилирована на любой системе - с этой точки зрения деятельность AJPO более успешна чем любые другие языковые группы.
Некоторые исторические сведения
Сведения об истории разработки и появлении на свет языка программирования Ада, а также понимание целей его разработки не только интересны сами по себе, но они также дают некоторое представление как о самом языке, так и об его свойствах.
Применение языка программирования Ада
Исходя из того, что Ада разрабатывалась по заказу Министерства Обороны США, может создаться впечатление, что Ада используется только в военных проектах.
Отчасти это так. Ада действительно считается единым языком программирования как для вооруженных сил США, так и для НАТО.
Однако это не исключает использование языка Ада в промышленности и образовании.
Прежде всего, Ада используется для построения больших систем к которым предъявляются достаточно высокие требования по надежности.
Как правило, к таким системам относятся:
Управляющие компьютерные системы для авиации (в том числе и гражданской).
Управляющие компьютерные системы для скоростных железных дорог.
Банковские системы.
Промышленная автоматика и робототехника.
Медицинская техника.
Телекоммуникационные системы.
Не составит труда догадаться почему от подобных систем требуется высокая надежность.
Следует обратить внимание на то, что в настоящее время Ада достаточно активно используется в различных высших учебных заведениях США и Западной Европы, как основа для изучения программирования.
Кроме этого, Ада часто используется в различных научно-исследовательских разработках.
Хорошей иллюстрацией сказанного может служить разработка Ада компилятора GNAT, которая была начата в стенах Нью-Йоркского университета, и разработка сопутствующей этому компилятору библиотеки времени выполнения, которая велась в университете штата Флорида.
Copyright (C) А.Гавва | V-0.4w май 2004 |
Современное общество все больше зависит
Современное общество все больше зависит от программного обеспечения.
Стремительное падение цен на оборудование позволяет, в настоящее время, осуществлять разработку больших программных комплексов, целевое предназначение которых весьма разнообразно.
Таким образом, транспортные, финансовые, медицинские и военные системы во все возрастающей степени зависят от программного обеспечения.
В результате этого, все больше возрастают требования к надежности разрабатываемого программного обеспечения.
Характерной особенностью языка программирования Ада является то, что он специально проектировался как инструмент разработки больших программных комплексов реального времени для встроенных компьютерных систем, к которым предъявляются высокие требования надежности.
В первую очередь, такие требования предъявляются к системам военного предназначения.
Однако, это не исключает применение языка Ада для решения всевозможных задач вычислительного характера, параллельной обработки, моделирования промышленных и технологических процессов в реальном масштабе времени, системного программирования и т.д.
Более того, язык Ада часто рассматривается как язык общего назначения.
К сожалению, существующая на русском языке литература, посвященная языку программирования Ада, в большинстве случаев, относится к старому стандарту языка Ада (Ada-83).
Таким образом, основной целью данной книги является попытка ликвидировать образовавшийся информационный пробел.
Данная работа рассматривает средства языка программирования Ада в соответствии с действующим в настоящее время стандартом Ada-95.
Представленный материал может быть полезен и интересен широкому кругу специалистов, чья работа связана с вычислительной техникой и программированием.
Основное содержание материала логически разделено на четыре части:
Первая часть посвящена обзору средств и возможностей языка Ада, в соответствии с действующим в настоящее время стандартом Ada-95.
Вторая часть служит дополнением к первой части, и ее цель - дать некоторое представление об идеологии программирования на языке Ада.
Третья часть посвящена инструментальным средствам, и она рассматривает поставку компилятора GNAT, поскольку он является свободно доступным (включая исходные тексты).
Четвертую часть составляют приложения, которые содержат некоторый справочный и информационный материал.
Следует заметить, что представленный материал не можт расцениваться как исчерпывающий.
Так, ввиду ограниченности объема книги, опущено обсуждение целого ряда самостоятельных тем, примерами которых могут служить: "Спецификация семантического интерфейса Ады" (ASIS - Ada Semantic Interface Specification), программирование распределенных систем (Distributed Systems), программирование систем реального времени (Real-Time Systems)...
Необходимо также заметить, что данная работа не может расцениваться как перевод стандарта, поэтому, в случае возникновения каких-либо конфликтных ситуаций, которые могут возникнуть при реальной работе, необходимо непосредственно обращаться к Ada-95 Reference Manual, который всегда является истиной в последней инстанции.