Редактирование: Язык Ада, весна 2010

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
= Язык Ада =
+
== Лекция №1. Вводная ==
-
== Информация о курсе ==
+
Язык Ада в России практически не заметен, на рынке мало используем. Зато, например, в Париже в метро на 14 линии управление поездами происходит с помощью программы на Аде. Технология Ада используется в основном во встроенных системах. В этом курсе не ставится задача научить программировать на Аде, а изучается в некотором смысле философия создания и сопровождения программ. На сегодняшний день Аду можно назвать самым мощным из индустриальных языков программирования, который включается в себя все то, что так или иначе есть в других технологиях, а также то, что в них отсутствует. К примеру, Ада – единственный из языков программирования, который предоставляет на уровне языковых конструкций средства для управления асинхронными процессами. Ада возникла в конце золотого века программирования. В то время делалось огромное количество трансляторов и диалектов языков программирования. Потом это «мода» прошла, и теперь массово используется только несколько языков программирования, такие как C,C++,C#, Delphi, Java.
-
* Лектор - Рыбин Сергей Игоревич, старший научный сотрудник НИВЦ МГУ, консультант компании AdaCore EU, эксперт по языку Ада рабочей группы ISO по стандарту языка, выпускник кафедры АЯ ВМК МГУ
+
История создания
-
* Лекции проходят по средам в 17.00 в аудитории 503
+
В 70-е годы 20 века Пентагон подсчитал, что используется около 400 различных языков программирования.
-
* Форма отчетности - экзамен
+
Ада в чем-то похожа на Паскаль, она в отличие от Си «многословный», т.е. много ключевых слов. Аде необходимо сказать, с каким программным модулем программа должна рассматриваться, в отличие от include в C/С++, которая означает включение другого куска кода из внешнего файла в текущую программу.
-
* Главная задача курса - не научить синтаксису языка, а рассказать философию языка
+
Краеугольный камень Ады – надежность. К примеру конец какой-либо endHello
-
* Курс читался весной 2010 года
+
-
== Форма проведения экзамена ==
+
Все началось в 70х годах 20 века, когда Министерство Обороны США стала замечать, что нарастает количество ситуаций, когда разработчики ПО не укладываются ни в бюджет, ни во время, и качество результатов тоже резко пошло вниз. Поэтому был запущен проект, в рамках которого должны были определить, какой из аспектов самый критичный. Был исследован вопрос, куда уходят ресурсы? Результаты исследований показали следующее:
-
* Экзамен письменный
+
* 5% - на научные исследования
-
* Задаются 5 или 6 качественных вопроса, на которые сложно ответить, если не ходил на лекции.
+
* 19% - на обработку данных
-
* Можно пользоваться можно всем, кроме соседей
+
* 56% - встроенные программные системы
-
* Отвечать лучше кратко, по делу и именно на тот вопрос, который задается. Вода и хождения вокруг да около вместо ответа не прокатят.
+
* 20% - прочее
-
* Если на какой-то вопрос никто не сможет правильно ответить, то этот вопрос не учитывается никому и лектор считает, что это его ошибка, а не ошибка студентов.
+
Так же было замечено, что расходование ресурсов распределяется следующим образом:
-
* Экзамен можно сдать 2 раза, если лектор помнит ваше лицо. Иначе, при незачете в первый раз, до второго раза могут не допустить.
+
* 20% - Разработка
 +
* 80% - Сопровождения
 +
Таким образом, большая часть ресурсов уходит на сопровождение встроенных программных систем. Американцы определили, что встроенные системы – это аппаратно-программный комплекс, предназначенный для решения задач, отличных от численных расчетов. Встроенное обеспечение – это бортовое программное обеспечение, встроенное в различную технику, программа организации воздушного движения, программа для ПВО, ПРО и тд. А компилятор – это не встроенная система. Драйвер в чем-нибудь едущем, летящем – встроенное ПО.
 +
Специфика встроенных систем:
 +
* Самая главная – критичное требование к надежности.
 +
* Большой объем программы
 +
* Большой срок жизни
 +
В 70е годы по контракту Пентагона использовалось порядка 450 языков программирования общего назначения. Ситуация осложнялась тем, что часто некоторая контора получала заказ от Пентагона на разработку ПО. Им необходимо было удержать контракт у себя. Для этого разрабатывался новый язык программирования, которым никто не смог бы пользоваться, кроме тех, кто придумал этот новый язык программирования. В ходе исследования Пентагона рассмотрели все имеющиеся языки программирования и было выяснено, что ни один из существующих языков программирования для области встроенных систем не подходил. Поэтому был предложен проект на разработку нового языка программирования для встроенных систем. Проект Ада – единственный осознанный проект разработки нового языка, который завершился успешно, за исключением, быть может, Java. Для разработки языка Ада были определены 3 прототипа: Паскаль, PL1, Algol68. Далее были разработаны требования для языка. Среди них были такие:
 +
* Общность – одного языка должно хватить на все встроенные системы
 +
* Надежность – язык должен помогать писать надежный код и не ошибаться
 +
* Удобство сопровождения
 +
* Эффективность объектного кода на целевой машине
 +
* Простота
 +
* Реализуемость
 +
* Машинная независимость
 +
* Ясный однозначный синтаксис, легко читаемый код
 +
* Запрет синтаксических расширений
 +
* Встроенная типизация
 +
* Запрет неявных преобразований
 +
* и другое
 +
Победителем была объявлена международная команда под предводительством француза Жана Ишбиа. Т.о. в 1979 году придумали язык Ада. В 1983 года Ада официально возникла как американский национальный стандарт. Стоит заметить, что у Ады никогда не было диалектов. Пентагон зарегистрировал торговую марку Ада и только он мог распоряжаться, какому компилятору можно называться Ада, а кому нельзя. После этого все внешние заказы для Пентагона можно было делать только на Аде. Для того, чтобы компилятор имел право называться компилятором языка Ада, он должен был проходить обязательную сертификация на эталонных тестах. В 1983 г возник стандарт языка. В 1987 году стандарт Ада без единого изменения был утвержден как стандарт ISO. Но раз в 10 лет стандарт языка должен был пересматриваться. Либо комиссия говорит, что все хорошо и ничего не надо менять, либо подвергает изменениям.
-
== Ссылки на ресурсы ==
 
-
* http://ada-ru.org/
 
-
Лекции записаны по аудиозаписям участником [[Участник:Sedzy|Sedzy]]
+
Hello, World на Аде:
 +
 
 +
with Ada.Text_IO;
 +
procedure Hello_World is
 +
begin
 +
Put_Line (“Hello, World!”);
 +
end Hello_World;
 +
 
 +
Пример с двумя асинхронными процессами на 20 строк
 +
[код]
 +
В Аде нет никаких ограничений по степени вложенности конструкций. В качестве локального объявления внутри одной процедуры может быть другая процедура.
 +
Задачи – средства описания асинхронных процессов. У всех программных модулей, кроме процедур и функций, обязательно должно раздельно присутствовать спецификация и тело. Задача может иметь входы для общения с внешним миром. Семантика языка такая, если в одной процедуре написаны асинхронные процессы, то они запустятся. В данном случае один процесс 20 секунд стоит. Другой находится в цикле и печатает от 1 до 20. Pragma показывает, что доступ к переменной осуществляется в режиме взаимного исключения. После изменения флажка Boolean цикл завершится, напишется terminate и программа закончит свою работу.
 +
К вопросу о ясном синтаксисе: в Аде присваивание – оператор
 +
В Аде все, что явно не разрешено, то запрещено.
 +
 
 +
Ссылки на ресурсы:
 +
[http://ada-ru.org]
 +
 
{{Язык Ада, весна 2010}}
{{Язык Ада, весна 2010}}
-
{{Лекции}}
 

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Шаблоны, использованные на этой странице:

Личные инструменты
Разделы