Язык Ада, весна 2010

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

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

Текущая версия

Содержание

[править] Язык Ада

[править] Информация о курсе

  • Лектор - Рыбин Сергей Игоревич, старший научный сотрудник НИВЦ МГУ, консультант компании AdaCore EU, эксперт по языку Ада рабочей группы ISO по стандарту языка, выпускник кафедры АЯ ВМК МГУ
  • Лекции проходят по средам в 17.00 в аудитории 503
  • Форма отчетности - экзамен
  • Главная задача курса - не научить синтаксису языка, а рассказать философию языка
  • Курс читался весной 2010 года

[править] Форма проведения экзамена

  • Экзамен письменный
  • Задаются 5 или 6 качественных вопроса, на которые сложно ответить, если не ходил на лекции.
  • Можно пользоваться можно всем, кроме соседей
  • Отвечать лучше кратко, по делу и именно на тот вопрос, который задается. Вода и хождения вокруг да около вместо ответа не прокатят.
  • Если на какой-то вопрос никто не сможет правильно ответить, то этот вопрос не учитывается никому и лектор считает, что это его ошибка, а не ошибка студентов.
  • Экзамен можно сдать 2 раза, если лектор помнит ваше лицо. Иначе, при незачете в первый раз, до второго раза могут не допустить.

[править] Ссылки на ресурсы

Лекции записаны по аудиозаписям участником Sedzy


Язык Ада

01 02 03 04 05 06 07 08 09


Лекции

10 семестр История развития вычислительных технологий в СССР, России | Современные проблемы прикладной математики
9 семестр Формальная спецификация и верификация программ | Теория игры и исследования операций | История и методология прикладной математики | Основы российского права | История религии | Параллельная обработка данных
8 семестр Верификация программ на моделях | Математические основы теории прогнозирования | Основы квантовой физики и квантовых вычислений | Методы оптимизации | Распределённые операционные системы
7 семестр Вычислительные Системы | Объектно-ориентированные Анализ и Проектирование | Искусственный Интеллект | Математическая Логика | Функциональный Анализ | Социология | Параллельная Обработка Данных
6 семестр Основы Кибернетики | Численные Методы | Конструирование Компиляторов | Компьютерные Сети
5 семестр Базы Данных | Языки Программирования | Экономические Науки
3 семестр Операционные системы

Спецкурсы
Осень 2013 Современная криптография | Дизайн и реализация ОС FreeBSD
Весна 2011 Практические аспекты сетевой безопасности | Сетевое администрирование в UNIX
Осень 2010 UNИX | Теория функционального программирования. Язык Haskell | Введение в информационную безопасность | Информационный поиск
Весна 2010 UNИX | Архитектура и программирование массивно-параллельных вычислительных систем | Язык Ада
Осень 2009 UNИX | Введение в парадигмы программирования
Весна 2009 UNИX | Архитектура и программирование массивно-параллельных вычислительных систем
Осень 2008 UNИX | Структурные методы обработки изображений и сигналов
Весна 2008 UNИX | Вопросы организации вычислительных кластеров на основе UNIX-серверов | Философия математики
Осень 2007 UNИX
Весна 2007 UNИX | Практика мультипарадигмального программирования
Осень 2006 Введение в теорию построения оптимизирующих компиляторов

Отдельные лекции Bruce Eckel, The State of The Java Union | Richard Stallman: Free software: ethics and practice, Copyright vs Community in the Age of Computer Networks | Наану Александр, Vim | Erinn Clark, The Tor Project: Anonymity Online
Личные инструменты
Разделы