на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Ада Августа Байрон
место того чтобы создавать новый язык самим, было решено провести конкурс. Было образовано несколько команд, каждой из них был присвоен свой цвет. По случайному стечению обстоятельств все команды создали свои язык использовав Паскаль в качестве основы. В результате победила зеленая команда - фирма Ханейвелл-Балл (Honeywell-Bull) из Франции. Познее, язык был назван "Ада" в честь леди Ады Августы Лавлейс (Lady Ada Augusta Lovelace), дочери известного поэта Байрона и ассистентки математика Чарльза Байбиджа (Charles Babbage), который изобрел Аналитическую Машину. Леди Аду принято считать первым программистом.

В 1979, МО США создало первый черновой вариант документации по Аде, затем язык был стандартизован в 1983 году. Сейчас этот стандарт принято называть "Ада83", первоначально он находился под полным контролем со стороны МО США, и ни кто не мог создать компилятор с языка без авторизации оного со стороны Министерства Обороны.

Однако все изменилось в 1987 году, когда МО США предоставило Аду в публичное распоряжение, и на язык был создан стандарт Международного Института по Стандартизации (International Standards Organization (ISO)). К 1990 году появилось более 200 проверенных на соответсвие стандарту компиляторов с этого языка, еще позднее в 1995 году появился новый стандарт называемый Ада95. Ада в редакции 95го года стала полностью объектно-ориетированным языком, а также оснащена очень удобными средствами взаимодействия с кодом написанным на Си, Фортране, Коболе и прочих языках.

Где взять Аду?

Скорее всего вы думаете, что компилятор для такого мощного как Ада языка стоит очень и очень дорого, однако вы заблуждаетесь, вы наверное удивитесь, но один из наиболее мощных и популярных компиляторов с Ады95, GNAT (Gnu / New york University Ada Translator) не будет стоить вам ни копейки (за исключением технической поддержки, но только в том случае если вы захотите ее иметь).

GNAT можно скачать с FTP-сервера Нью-Йоркского Университета ftp: / / cs. nyu. edu из каталога / pub / gnat. В нем содержатся различные версии GNAT'а для различных ОС например Unix, включая SunOS / Solaris, Linux, NetBSD, SGI IRIX, IBM's AIX, DEC's Digital Unix.

Так же там существуют версии GNAT'a для WinNT, Win95, MacOS, и даже версия для DOS называемая "EZ2Load".

Учебник.

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

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

Также, Аде присуща своя собственная терминология, и Я далее буду использовать несколько таких слов, со значением которых вы возможно не знакомы:

пакет (package), файл исходного кода программы в котором хранится определенный набор связанных по смыслу команд, которые делают например такие вещи как печать текста, математические вычисления, и т.д. Они в чем-то похожи на заголовки в языке Си, но не являются прямой аналогией:

переменная (variable), это именованная область памяти в которой может хранится некоторое значение, например число, символ, или слово.

предложение или инструкция (statement), команда для выполнения специфического действия.

Все программы на Аде имеют следующую базовую структуру:

with Имя_Пакета; use Имя_Пакета;

procedure Имя_Процедуры

Переменная: Некоторый_Тип_Значений;

begin

end Имя_Процедуры;

Имя_Процедуры часто является и именем программы. (прим перев: В отличие от Паскале здесь нет выделенного блока begin - end, программой может считается любая процедура библиотечного уровня (т.е. не вложенная в другую процедуру / функцию) без параметров).

Место где написано Переменная: Некоторый_Тип_Значений является объявлением переменной. Возможно вы спросите, а что значит "Некоторый_Тип_Значений"? Это означает какого типа значения могут хранится в переменной. Другими словами, если вы хотите иметь переменную для целых чисел вам необходимо написать Variable: Integer;. Если вам нужны числа с плавающей запятой, то Variable: Float; и т.д.

Точки с запятой используются для завершения объявления переменной или в более общем случае любого предложения программы, позволяя вам разместить на одной строке более одного объявления переменной или предложения. (прим перев: в Паскале они разделяют предложения, в результате имеется несколько исключений из правил! А в результате выбранного подхода в Аде их размещение производится на более интуитивном уровне).

Инструкция begin начинает последовательность настоящих команд программы.

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

Предложение end Имя_Процедуры; завершает последовательность команд программы. Теперь Я могу сказать вам, что эта маленькая "демо" программка была нужна, чтобы просто показать вам структуру программы, но теперь мы можем посмотреть и на настоящую рабочую программу. По традиции ей будет, можно сказать, классическая; -) программа выводящая "Hello World", которая обычно и используется при первом знакомстве с новым языком.

with Ada. Text_IO; use Ada. Text_IO;

procedure Hello_World is - А переменные нам здесь не нужны:)

begin Put ("Hello world! ");

end Hello_World;

Пакет "Text_IO" содержит множество функций для операций ввода / вывода; он используется программами которым необходим вывод и получение текста.

Так же Я должен заметить за чем нужно писать "Ada. " перед "Text_IO". Поскольку Ада может взаимодействовать со множеством языков - например вы можете связать со своей программой процедуры на Си или Коболе - и может случится так что у вас будет множество библиотек с сотнями пакетов, поэтому необходимо указывать откуда их брать.

(прим перев: в Аде можно организовать набор пакетов в определенную иерархическую структуру со взаимными связями между кодом в них. В данном случает Text_IO это дочерний пакет от пакета Ada).

Процедура (и программа в данном случае) называется "Hello_World. " Предложения "with" и "use" позволяют использовать команды из них в нашей программе. Если вы хотите запустить эту программу, вы можете сохранить ее под именем hello_world. ada. Замечание: если вы используете GNAT вы должны сохранить ее как hello_world. adb.

Поскольку эта программа не делает ничего кроме печати нескольких слов на экране, нам не потребовалось объявлять ни каких переменных, поэтому место в котором это обычно делается осталось пустым. Обратите так же внимание на двойной прочерк (--) перед "А переменные нам здесь не нужны:)". Эти прочерки говорят компилятору, что эта строка комментарий. Комментарий это строка текста программы которую компилятор проигнорирует. Поэтому если вы хотите добавить строку "А переменные нам здесь не нужны:)" в программу и затем запустить ее, вы обязаны добавить перед ней двойной прочерк, иначе компилятор подумает, что вы хотели использовать "А переменные нам здесь не нужны:)" как описание переменной, естественно ничего не поймет и выдаст вам сообщение об ошибке. Предложение Put ("Hello world! "); служит собственно для печати текста на экране.

Даже если вам кажется, что использование скобок усложняет дело, они все равно нужны. Вы не можете просто взять и написать "Put "Hello world! "; "!

Так же заметьте, что многие имена начинаются с заглавных букв Notice also that many of the names begin with capital letters ("Text_IO" например). Это-го не требуется делать в обязательном порядке, но все же желательно делать так для удобства чтения ваших исходников.

Следующая программа несколько сложнее предыдущей. Она спрашивает у пользователя его / ее имя и затем печатает его на экране наряду с другим текстом:

with Ada. Text_IO; use Ada. Text_IO;

procedure Get_Name is Name: String (1. .80);

Length: Integer;

Begin Put ("Введите ваше имя> ");

Get_Line (Name, Length);

New_Line;

Put ("Привет ");

Put (Name (1. Length));

Put (", Я думаю вам понравиться изучать Аду! ");

end Get_Name;

Как это все работает? Мы уже знаем, что такое Text_IO, а предложение procedure Get_Name is говорит само за себя

Переменная Name содержит имя введенное пользователем, а тип String (1. .80) говорит компилятору о том, что Name это строковая переменная с длинной до 80 символов. Вторая переменная, Length, это целое число используемое для хранения действительной длинны строки введенной пользователем.

А теперь об остальном: когда программа выполняется, она печатает "Введите ваше имя> ", а затем ждет его ввода от пользователя. после того как он введет имя и нажмет Enter программа пропускает строку (New_Line;) и печатает "Привет [имя пользователя], Я думаю вам понравиться изучать Аду! ".

Визуальное программирование на Аде?

Возможно у вас возник вопрос "А есть ли к Аде графическая среда разработки программ (IDE) ? ". Да, такие есть, одна из них, под названием ObjectAda, поставляется компанией Aonix, www. aonix. com (Прим. перев: Данный продукт построен в духе IDE от Microsoft для Visual С++)

ObjectAda существует в двух вариантах как для MS Windows, так и для X-Windows (X-Windows это стандартная оконная графическая система ОС Unix)

Однако учтите, что это коммерческий продукт, правда он доступен для свободного скачивания в облегченном варианте и весит около 60~70Mb.

Ada - это доведенный до логического завершения (на данном этапе развития _науки_ программирования) Pascal. Ada - универсальный язык программирования и мощнейшее средство для software engineering. В равной степени пригодна для написания "зубочисток" из 50 строк на один-два прогона и для огромных особо надежных систем реального времени. Жестко определена стандартом языка. В язык встроены средства параллельного программирования, поддержка разноязыковых модулей, обработка исключительный ситуаций. Разговоры о ее чрезмерной сложности - бред, вызванный тем, что она опередила свое время лет этак 6. .10. Мощный инструмент не может быть простым - "Дубли у нас простые" ((с)"Понедельник... ", Стругацкие), но и слишком уж сложной я ее назвать не могу. Ada'е присущи строгость, логичность, ортогональность, симметричность. Она по-хорошему консервативна, несмотря на то, что в нее были введены революционные концепции, не понятые и не принятые серыми fortran-кодерами начала '80-ых годов, чем и объясняется ее сравнительно малое распространение. Первый стандарт вышел в '83, в '95 вышел второй стандарт, расширивший и симметризовавший язык. Для Ada'ы характерно очень жесткое следование стандарту, что делает программы на ней сравнительно легко переносимыми с платформы на платформу. !) Аналогии: Ada - это Парфенон среди языков программирования, она величественна, изящна, строга и прекрасна. Если считать, что Pascal это МиГ-21, то Modula-2 это (ранние версии) МиГ-29 и (нынешнее состояние) МиГ-33, а Ada'83 - Су-27, и Ada'95 - Су-37, и, продолжая аналогию, C - F-104, C++ - F-117 (much noise about nothing |)). > Q 2: А чем Ada95 отличается от Ada83? Насколько я понял, > Q 2: в Ada95 есть ООП? Вот еще отличия: - иерархические библиотеки (child units); - пассивные мониторы наряду (protected records) с активными (tasks); - дополнительные средства управления паралеллизмом (асинхронная передача управления); - стандартные библиотеки для важнейших областей (системное программирование, системы реального времени, распределенные системы, информационные системы, численные рассчеты); - "мелочевка" типа ссылок на подпрограммы и возможность связывать сообщение с возбуждаемым исключением; > Q 3: Насколько я понял, в Ada95 есть ООП? А как оно > Q 3: реализуется? Подлинное там ООП (как на функциональных > Q 3: языках) или паскале-си подобное? "Паскале-си-подобное", хотя по форме на первый взгляд сильно отличается.

Основной документ по Ada'е - "Language Reference Manual", обычно называемый просто "Стандарт" или "RM95" ("RM 95", а то и просто "RM"), некоторые по старинке говорят "LRM", но это - общепринятое сокращение для стандарта Ады-83. Изложено, как и положено стандарту, суховато, но строго, с примерами и ссылками на смежные вопросы. В отличие от пары-тройки других "стандартов", которые мне привелось посмотреть, это, действительно, Стандарт, а не рассуждения на тему об очередной версии компилятора и не учебник программирования на базе данного языка, но, между тем, он вполне пригоден для чтения. Второй документ - "Ada 95 Rationale" (обычно - "Rationale"). Это изложение и _обоснование_ базовых _проектных__решений_ языка (ответы на вопросы "а почему сделано именно так? ") и демонстрация этих решений в деле. Соответственно, более вольное, чем Стандарт, кое в чем менее полное, а кое в чем более ппространное. С развернутыми примерами, пояснениями, аналогиями и прочей весьма полезной "белетристикой". Читается как хороший детектив. Литературные достоинства (без тени иронии) этого документа отмечены не только мной. Я бы настоятельно рекомедовал эту книгу в качестве именно _учебника_ для подготовленного и _мотивированного_ читателя (такому читателю нет резона тратить время на традиционные университетские учебники), а RM использовать как справочник.

Язык Ада - двадцать лет спустя

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

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

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.