Языки программирования. Лекция 1.

Курс начал читаться с 1983 года.

Литература:
1. В.Ш. Кауфан "Языки программирования: концепции и примеры", Москва, "Радио и связь", 1993;
2. Бен Ари "Языки программирования: ...", "Мир", 1999.
3. Р. Себеста "Языки программирования: ...", 2001;
4. Теринс Пратт, Марвин Зелковиц "Языки программирования, разработка и реализация" (большое внимание уделяется концепциям реализации языков программирования);
5. Нараин Джехани "Язык Ада";
6. Б. Страуструп "Дизайн и эволюция языка Си++", 1994 (объяснено, как и почему, рассмотрены альтернативы);

Будем изучать именно концепции языков программирования, потому что изучать ВСЕ языки очень сложно.

•	Программа курса

Введение:
п. 1. Определение ЯП
п. 2. Исторический очерк
п. 3. Концептуальное схема свойств ЯП

Часть 1. Основные понятия традиционных (процедурных) ЯП.
-----------------------------------------
Процедурные языки - основаны на парадигме Фон-Неймана, основной оператор - присваивание (v:=e), есть операторы ввода-вывода, операторы управления.
-----------------------------------------

Часть 2. Объектно-ориентированные языки программирования (ООЯП)
Кроме традиционной модели программирования есть ещё функциональная и логическая модели. Про логическую модель (и про параллельное программирование) мы подробно говорить не будем.
Первый ЯП Фортран появился в 1954 году. К 1967 году активно использовались в США уже 400 языков. Через 10 лет было более 1000 языков.
Язык программирования - инструмент планирования поведения исполнителя. Более точное определение зависит от того, каким образом будут введены понятия, входящие в определение ЯП.
Как только под исполнителем понимается вычислительная система, мы уже имеем дело с классическими ЯП.

•	Точки зрения на ЯП (позиции рассмотрения)

1. Технологическая

Виды программирования:
1. Игровое (программирование для себя) - продукт не отчуждается;
2. Научное (программа нужна человеку для выполнения каких-то опытов/расчётов, для получения результата; после его получения надобность в программе отпадает);
3. Индустриальное (программы являются отчуждаемыми, за деньги или нет; программа используется без автора).

Для разных видов программирования требуются разные ЯП, разные инструменты.
Мы будем рассматривать только индустриальное программирования и языки программирования для него.

1. технологическая потребность - 
потребность в раздельной трансляции, чтобы над программой в один момент времени могли работать несколько человек.

2. Авторская
Язык - совокупность компромиссов (с позиции автора).
Авторская позиция - посмотреть, в чём заключается компромисс, рассмотреть альтернативы.

3. Реализаторская
Как это будет реализовываться.
Одна из крайностей: "Реализаторская позиция нужна только реализаторам".
Другая крайность: "Сколько компиляторов, столько и языков программирования".
Истина: Языки надо изучать вне зависимости от реализации. Но некоторые конструкции легче понять через их реализацию (например, механизм виртуальных функций).

4. Семиотическая
Семиотика - наука о знаковых системах.
------------------------------------------
"Что такое знаковая система?
Что такое система - мы уже знаем, нам это вчера объясняли..."
------------------------------------------

5. Социальная
Каких программистов больше, на Си++ или на Дельфи?..