Обзор и сравнительный анализ языков программирования [Антон Евгеньевич Москаль kouzdra] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Антон Е.Москаль,
Олег А.Плисс,
Андрей А.Терехов,
Андрей Н.Терехов,
Владимир В.Уфнаровский

Конспект лекций
"Обзор и сравнительный анализ
языков программирования"

Санкт-Петербург
2000

Оглавление
ВВЕДЕНИЕ ......................................................................................................................................................................3
ТРАНСЛЯЦИЯ ПРОГРАММ ....................................................................................................................................10
ИСТОРИЧЕСКИЙ ОБЗОР .........................................................................................................................................20
АССЕМБЛЕР.................................................................................................................................................................23
BASIC ..............................................................................................................................................................................27
PASCAL/MODULA 2 ....................................................................................................................................................29
C/C++...............................................................................................................................................................................34
PROLOG .........................................................................................................................................................................37
OCCAM...........................................................................................................................................................................40
ФУНКЦИОНАЛЬНЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ................................................................................47
SMALLTALK.................................................................................................................................................................54
ЗАКЛЮЧИТЕЛЬНАЯ ЛЕКЦИЯ...............................................................................................................................58
УКАЗАТЕЛЬ ЛИТЕРАТУРЫ ....................................................................................................................................60

Введение
Общая задача курса – дать понятие о современных языках программирования,
научить выбирать правильный язык программирования, обучить созданию ЯП и т.п.
Общая схема рассмотрения языка:
1. Название, кем, когда и зачем был создан
2. Общая характеристика:
– декларативный или императивный;
– язык-оболочка или язык-ядро;
– хороший или плохой (красивый? схожесть операторов, т.е. если что-то
изменить, то насколько велика вероятность неявной ошибки? Эффективность
– по скорости исполнения; по скорости компиляция; по времени отладки, т.е.
перекомпиляции; отзывчивость (responsiveness), например, можно даже
продолжать исполнение программы).
3. Синтаксис
4. Данные (типы, представление)
5. Управление последовательностью действий
6. Управление данными (передача параметров, подготовка к исполнению операций)
7. Управление памятью
8. Модульность (по-хорошему надо бы записать после 3)
9. Среда ЯП, работа с файлами, устройствами
Как описывается синтаксис ЯП?



неформально
в форме Бэкуса-Неймана (БНФ):
метасимволы в угловых скобочках
::= есть «обозначает»
| есть «один из вариантов»

Пример БНФ:
::=
::= | –
::=
::= 0|1|2|3|4|5|6|7|8|9
Расширенная БНФ (для записи регулярных выражений)
вводятся дополнительные символы *, +, { }, [ ]
Пример РБНФ:
::= { пробел | –}{0|1|2|3|4|5|6|7|8|9}+
или [–] {0|1|2|3|4|5|6|7|8|9}+

Как описывается семантика ЯП?
В терминах абстрактного вычислителя; считается, что программа транслируется в
терминах вычислителя (виртуальной машины). Кроме того, бывает последовательность
виртуальных машин.
Интерпретация
Программно-аппаратная реализация – в микропрограммах. Что
такое
микропрограмма? Современные процедуры сделаны либо совсем аппаратно, либо с
помощью микропрограмм, с помощью которых можно добраться до процессора напрямую.
Архитектура ЭВМ
Раньше делались процессоры, ориентированные на язык (ФОРТРАН-машины). Дело в
том, что выгоднее потратить транзисторы на очень простые операции, но сделать их очень
быстрыми.

Память состоит из бестиповых ячеек, у которых есть только целый адрес, туда можно
записать что угодно.
У процессора есть instruction pointer (он же program counter). Есть декодер и АЛУ.
Работает все это так: декодер вынимает следующую команду, управление данными
вынимает операнды, АЛУ все это исполняет, IP инкрементируется.
В современных ЭВМ все это сопровождается наворотами (несколько параллельно
исполняемых команд, выборка вперед и т.п.). Бывает иерархия памяти (например, кэш –
промежуточный уровень между быстрой и медленной памятью).
Когда пишешь что-то в порты I/O сразу записывается что-то на внешнее устройство.
Интересно, что input и output регистры не совпадают.
Это не очень удобно. Прерывания – различные уровни (256 уровней). Прервал
программу – передай управление на обработчик.
Память – данные по 8, 16, 32 бита (выравнивание). Бывают binary/decimal,
packed/unpacked, floating.
Операции над данными – арифметические, сравнения (результат – в регистре
состояния), проверка битов состояния (⇒ ветвление), переходы бывают безусловными и
условными, ввод/вывод в порты прерывания; иногда управление иерархией памяти; бывают
аппаратно поддерживаемые стеки. В таких случаях можно поддерживать подпрограммы
(адрес кладется на стек, по окончании снимается). Это поддержка не везде и если не
поддержано, то надо делать руками.

Многопроцессорные системы – несколько декодеров + память общая.