litceysel.ru
добавить свой файл
1
Языки программирования



  1. Подход к рассмотрению языков программирования.

Исторический очерк развития языков программирования (ЯП). Пять позиций при рассмотрении языка программирования. Концептуальная схема рассмотрения языка программирования - базис, средства развития и защиты. Данные, операции и связывание как основные абстракции. Понятие виртуальной машины (ВМ) языка. Основные абстракции и ВМ. Иерархия ВМ.


2. Данные и типы.

Классификация данных. Динамические и статические ЯП. Атрибуты данных и средства их описания. Характеристики, связанные с типом (класс значений, множество операций). Именная и структурная эквивалентность типов. Атрибутные функции. Понятие строгой типизации и уникальность типа. Основные проблемы, связанные с типами (полиморфизм, изменчивость ролей объектов данных - янус-проблема). Базисные типы данных в традиционных ЯП (Си, Модула-2, Ада). Объявление нового типа. Конструктор типа. Ограничения и параметризация типов. Производные типы и подтипы в Аде. Перекрытие имен. Преобразование типов и квазистатический контроль. Недостатки традиционных языков с точки зрения основных проблем, связанных с типами. Операторный базис традиционных ЯП. Средства определения подпрограмм. Правила передачи параметров. Процедурные абстракции и надежность. Понятие модуля. Модульность в Си, Модуле-2, Аде. Инкапсуляция. Абстрактные типы данных. Скрытые типы в Модуле-2. Приватные типы данных в Аде. Имя в ЯП. Описания и области действия. Правила видимости. Перекрытие имен и видимость. Раздельная трансляция. Недостатки независимой трансляции (Си, Фортран). Понятие программной и трансляционной библиотек. Раздельная трансляция в Турбо Паскале, Модуле-2 и Аде. Раздельная трансляция и технология разработки программного обеспечения. Проблемы, связанные с параметризацией типов. Родовые модули в Аде. Понятие исключительной ситуации (ИС). Принципы надежной обработки ИС. Определение и возбуждение исключений, распространение исключений, реакция на исключения (Ада, Си++). Управление представлением и учет машинно-зависимых особенностей.



3. Объектно-ориентированные ЯП.

Понятие объектно-ориентированного анализа. Классы и объекты. Основные отношения между классами и объектами. Связь объектного подхода с основными понятиями языков программирования. Недостатки традиционных ЯП с точки зрения объектного подхода. Наследование в ЯП. Понятие и примеры наследования. Наследование, янус-проблема и полиморфизм. Производные типы и родовые модули Ады с точки зрения объектного подхода и наследования. Реализация наследования в необъектных языках и её недостатки. Наследование, надежность и повторное использование программных компонент (на примере ЯП Оберон). Ограничения ЯП Оберон с точки зрения объектного подхода. Наследование в ЯП Турбо Паскаль. Описание производных типов (объектов ). Статические методы. Виртуальные методы и полиморфизм. Конструкторы и деструкторы. Введение в ЯП Си++. Объявление классов и объектов. Конструкторы и деструкторы. Производные классы. Виртуальные функции-члены. Абстрактные классы и методы. Множественное наследование. Управление доступом. Инкапсуляция. Статическая параметризация в Си++. Сравнение шаблонов с родовыми модулями Ады. Исключения и классы. Статическое, квазистатическое и динамическое связывание методов. Введение в язык Смолток. Объявления (производных) классов. Переменные класса и объекта. Метаклассы. Сравнение ЯП Смолток и Си++. Характеристика ЯП Эйфель и CLOS. Объектно-ориентированные средства в ЯП Ада 9Х.


4. Асинхронные процессы в ЯП.

Сопрограммы и квазипараллельные процессы. Семафоры, сигналы, мониторы. Средства программирования параллельных процессов в Модуле-2. Параллельные процессы в ЯП Ада. Механизм рандеву. Симметричные и асимметричные рандеву. Входы, операторы принятия, отбора и задержки. Средства синхронизации в Аде 9Х. Параллельное программирование в ЯП Оккам. Сравнение концепций параллелизма в Аде и Оккаме.

5. Непроцедурные парадигмы в ЯП.


Определение модели Маркова. Аппликативное программирование. Базис языка Лисп. Определение новых функций. Связь между моделью Маркова-Турчина и Лиспом. Функциональная модель Бэкуса. Сравнение модели Бэкуса с Лиспом. Идея логического подхода к программированию. Сравнение логической и функциональной моделей. Подходы к реализации языков с нетрадиционной архитектурой.


Литература:


  1. Кауфман В.Ш. Языки программирования. Концепции и принципы, М., "Радио и связь", 1993.

  2. Буч Г. Объектно-ориентированное проектирование с примерами применения, М., 1993.

  3. Джехани Н. Язык Ада, М., "Мир", 1988.

  4. Вирт Н. Программирование на языке Модула-2, М., "Мир", 1987.

  5. Керниган Б., Ричи Д. Язык Си, М., "Финансы и статистика", 1990.

  6. Строуструп Б., Эллис М. Справочное руководство по языку программирования C++ с комментариями, М., "Мир", 1992.