| | | | | | | | | | | | | | | | | | | | | | | | | | Я | з | ы | к | | п | р | о | г | р | а | м | м | и | р | о | в | а | н | и | я | | А | Д | А | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1.6.97 | |
Язык программирования высокого уровня Ада назван в часть Августы Ады |
Байрон, графини Лавлейс и дочери английского поэта лорда Байрона. Она была |
ассистентом, коллегой и сторонницей Чарльза Беббиджа, математика и |
изобретателя вычислительной машины, названной аналитической машиной. С помощью |
Ч. Беббиджа в 1830 г. она написала практически законченную программу на |
аналитической машине для вычисления чисел Бернулли. Поэтому графиню можно |
назвать первым в мире программистом на вычислительной машине. |
Ада, язык, носящий имя графини, был разработан по инициативе и при |
содействии министерства обороны США. Исследования, предпринятые в начале и |
середине 70-х годов, показали, что можно получить огромную экономию средств на |
программное обеспечение (около 24 млрд. долл. за период | 1983 | -1999 гг.), если |
министерство обороны воспользуется единым языком программирования для решения |
всех своих задач вместо примерно 450 языков программирования и несовместимых |
диалектов, используемых программистами. |
Результатом этого исследования стали требования к новому языку |
программирования, способному заменить большинство языков программирования, |
используемых в рамках министерства обороны США. Требования, получившие |
шутливое название "соломенный человек", постепенно детализировались с помощью |
широкого обсуждения как в США, так и за рубежом. В этот процесс были вовлечены |
вооруженные силы США, зарубежные военные организации, промышленность и |
университеты. Получаемые в результате очередного шага детализации требования |
постепенно назывались "деревянными", "железными" и, наконец, "стальными". |
Хотя побудительные мотивы создания нового языка программирования |
первоначально были чисто экономическими, на него оказало заметное влияние и |
желание иметь язык программирования, направленный на решение важных проблем |
разработки программного обеспечения. Требования к новому языку содержали такие |
технические особенности, как простота и полнота языка, надежность, |
правильность и переносимость программ, простота поддержки, возможность |
разработки больших программ, программирование в реальном масштабе времени и |
обнаружение и исправление ошибок. В поддержку тенденции перевода на |
мультикомпьютеры | и отказа от больших ЭВМ в требованиях также содержалось и |
параллельное программирование, т.е. возможность писать программы, компоненты |
которых могли бы выполняться параллельно на различных ЭВМ или на одной ЭВМ |
квазипараллельно. Для разработки языка, удовлетворяющего перечисленным |
требованиям, был организован международный конкурс. Семнадцать фирм подали |
свои предложения, четыре из них были отобраны как полуфиналисты. Интересно, |
что все полуфиналисты в качестве основы для своих языков взяли язык | Паскаль | . |
Победителем конкурса стал язык программирования, разработанный группой ученых |
под руководством Ж. Ишбиа фирмы CII Honeywell Bull. Претерпев некоторое число |
изменений, этот язык был назван Ада. Через некоторое время доработанный язык |
Ада становится стандартом ANSI; дальнейшие изменения в языке были направлены |
на его упрощение и устранение несоответствий. Язык Ада был принят как стандарт |
ANSI в феврале | 1983 | г. |
Другим направлением работ министерства обороны США по стандартизации своего |
программного обеспечения был проект аттестации компиляторов с языка Ада. Цель |
этого проекта - разработка набора стандартных тестов, которые компилятор |
должен выполнить прежде, чем он будет зафиксирован как реализующий стандарт |
языка Ада. Параллельно с этим был начат процесс разработки требований к |
окружению программ на языке Ада и к интерфейсу между программами и |
пользователями. |
Язык Ада - это современный язык программирования, содержащий такие |
возможности паскалеподобных языков, как определение типов, общие управляющие |
структуры и подпрограммы. Более того, в языке Ада собраны многие достижения |
теории языков программирования, полученные после | 1970 | г. Язык поддерживает |
логическую модульность, для которой данные, типы и подпрограммы - все могут |
быть пакетами. Физическая модульность достигается раздельной компиляцией. Язык |
Ада поддерживает программирование в реальном масштабе времени за счет |
механизмов распараллеливания и обработки исключений. Системное |
программирование поддерживается за счет доступа к системно-зависимым |
параметрам и управлением точностью при представлении данных. |
Язык Ада вводит строгую дисциплину программирования, направленную на то, |
чтобы сделать программы более удобочитаемыми, надежными, переносимыми, |
модульными, эффективными и т.д. - т.е. обладающими всеми качествами хорошей |
программы. Например, программист должен объявить все объекты, использовать |
объекты в соответствии с их типами и обращаться к объектам только в |
соответствии с правилами видимости языка Ада. Пусть ранее программист |
использовал для этих целей язык, не обладающий той строгостью, которую |
предписывает язык Ада. Однако, написав несколько нетривиальных программ на |
языке Ада, программист оценит его правила, поймет, что цель ограничений языка |
Ада - это найти большее по сравнению с другими языками программирования число |
ошибок, причем раньше и автоматически, а также помочь программисту писать |
хорошие программы, не сдерживая его творчество и изобретательность. |
Характеристики языка Ада: |
зддддддддддддддддддддбдддддддддддддддддддддддддддддбддддддддддддддддддддд© |
ЁАбстракции Ё Переменные объектов Ё Да Ё |
Ё Ё Методы объектов Ё Да Ё |
Ё Ё Переменные классов Ё Нет Ё |
Ё Ё Методы классов Ё Нет Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁОграничение Ё Для переменных Ё Общедоступные, Ё |
Ёдоступа Ё Ё обособленные Ё |
Ё Ё Для методов Ё Общедоступные, Ё |
Ё Ё Ё обособленные Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁМодульность Ё Виды модульности Ё Пакет Ё |
Ё Ё Ё (Спецификация-тело) Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁИерархия Ё Наследование Ё Нет Ё |
Ё Ё Обобщенные блоки Ё Да Ё |
Ё Ё Метаклассы Ё Нет Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁТипирование Ё Строгое типирование Ё Да Ё |
Ё Ё Полиморфизм Ё Нет Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁПараллельность Ё Многозадачность Ё Да (определяется Ё |
Ё Ё Ё в языке Ё |
цддддддддддддддддддддедддддддддддддддддддддддддддддеддддддддддддддддддддд╢ |
ЁУстойчивость Ё Устойчивость объектов Ё Нет Ё |
юддддддддддддддддддддадддддддддддддддддддддддддддддаддддддддддддддддддддды |
|
Н. Джехани. Язык программирования АДА.; Гради Буч. Объектно-ориентированное |
проектирование. |