Книга посвящена систематическому изложению языков программирования. В первой ее части вводится система понятий и критериев, позволяющих исследовать самые различные языки с единой точки зрения. Главное внимание уделяется семантике языков, т. е. структурам данных, операциям, структурам управления и организации памяти. Во второй части рассматриваются семь наиболее распространенных языков программирования: Фортран, Алгол 60, Кобол, ПЛ/1, Лисп, Снобол 4, АПЛ.
Книга рассчитана на широкий круг программистов. Она будет полезным учебным пособием при изучении языков программирования в вузах, поможет профессиональным программистам наиболее рационально выбирать языки для конкретных приложений.
Author(s): Пратт Т
Publisher: Мир
Year: 1979
Language: Russian
Pages: 578
City: Москва
Предисловие редактора перевода 6
Предисловие 7
ЧАСТЬ I. ПОНЯТИЯ
1. Изучение языков программирования 12
1.1. Зачем изучать языки программирования? 12
1.2. Какой язык следует считать хорошим? 16
1.3. Заметания о терминологии 22
1.4. Рекомендуемая литература 22
2. Процессоры языков программирования 24
2.1. Структура вычислительной машины и принципы ее работы 24
2.2. Аппаратные и программно-аппаратные вычислительные машины 30
2.3. Трансляторы н программно-моделируемые вычислительные машины 32
2.4. Трансляция и моделирование в языках Фортран и Снобол 4 37
2.5. Виртуальные вычислительные машины 42
2.6. Иерархия вычислительных машин 44
2.7. Связывание и время связывания 46
2.8. Рекомендуемая литература 52
2.9. Упражнения 52
3. Данные 53
3.1. Данные, определяемые программистом, н данные, определяемые системой 53
3.2. Логическая организация, структура памяти и синтаксическое представление 54
3.3. Структуры памяти; дескрипторы, позиции н цепочки битов 55
3.4. Декларации 57
3.5. Связь между данными и операциями 62
3.6. Простые переменные 63
3.7. Простые элементы данных 64
3.8. Однородные массивы фиксированного размера 70
3.9. Неоднородные массивы фиксированного размера, записи и структуры 77
3.10. Массивы переменного размера 84
3.11. Множества 95
3.12. Внешние файлы данных 98
3.13. Интерпретируемые структуры данных: программы, образцы и форматы 103
3.14. Представление структуры данных одного типа с помощью структуры другого типа:
расширяемые структуры данных 105
3.15. Рекомендуемая литература 108
3.16. Упражнения 109
4. Операции 113
4.1. Общие характеристики операций 113
4.2. Элементарные операции 117
4.3. Присваивание 121
4.4. Создание структуры данных и включение элемента 123
4.5. Уничтожение структуры данных н исключение элемента 126
4.6. Сопоставление с образцом 129
4.7. Операции над программами: трансляция и выполнение 133
4.8. Операции, определяемые программистом: подпрограммы 134
4.9. Рекомендуемая литература 137
4.10. Упражнения 138
5. Управление последовательностью действий 139
5.1. Явное н неявное управление последовательностью действий 139
5.2. Управление последовательностью действий внутри выражений 14Э
5.3. Управление последовательностью выполнения инструкций 153
5.4. Управление последовательностью подпрограмм 165
5.5. Структуры данных, операции и управление последовательностью действий 189
5.6. Рекомендуемая литература 193
5.7. Упражнения 194
6. Управление данными 199
6.1. Основные понятия управления данными 200
6.2. Среда ссылок и область действия 206
6.3. Блочная структура 207
6.4. Простые подпрограммы без параметров: локальные среды 208
6.5. Простые подпрограммы без параметров: нелокальные среды 216
6.6. Нелокальные среды, основанные на статической структуре программы 223
6.7. Рекурсивные подпрограммы без параметров 235
6.8. Среды ссылок в сопрограммах, программах прерывания, задачах и планируемых подпрограммах 236
6.9. Подпрограммы с параметрами: способы передачи параметров 239
6.10. Передача результатов из подпрограмм 253
6.11. Рекомендуемая литература 255
6.12. Упражнения 256
7. Управление памятью 260
7.1. Введение 260
7.2. Основные элементы, требующие память во время выполнения 261
7.3. Память, управляемая программистом и системой 263
7.4. Фазы управления памятью: начальное распределение, утилизация, уплотнение и повторное использование 264
7.5. Статическое управление памятью 265
7.6. Стековое управление памятью 265
7.7. Управление кучей: элементы фиксированного размера 270
7.8. Управление кучей: элементы переменного размера 287
7.9. Рекомендуемая литература 295
7.10. Упражнения 296
8 Операционная среда 298
8.1 . Файлы данных 298
8.2. Файлы программ 299
8.3. Среды пакетной обработки 300
8.4. Интерактивные среды 302
8.5. Рекомендуемая литература 307
9. Синтаксис и трансляция 308
9.1. Общие синтаксические критерии 30$
9.2. Синтаксические элементы языка 314
9.3. Стадии трансляции 321
9.4 . Формальное определение синтаксиса 329
9.5. Рекомендуемая литература 338
9.6. Упражнения 339
ЧАСТЬ II. ЯЗЫКИ
10. Фортран 342
10.1. Введение 312
10.2. Краткий обзор языка 343
10.3. Пример с пояснениями: суммирование вектора 344
10.4. Данные 346
10.5. Операции 350
10.6. Управление последовательностью действий 356
10.7. Управление данными 360
10.8. Операционная среда 363
10.9. Синтаксис и трансляция 363
10.10. Структура виртуальной Фор1ран-машииы 365
10.11. Рекомендуемая литература 367
10.12. Упражнения 367
11. Алгол 60 369
11.1. Введение 369
11.2. Краткий обзор языка 370
11.3. Пример с пояснениями: суммирование вектора 372
11.4. Данные 375
11.5. Операции 376
11.6. Управление последовательностью действий 379
11.7. Управление данными 384
11.8. Операционная среда 385
11.9. Синтаксис и трансляция 385
11.10. Структура виртуальной Алгол-машины 387
11.11. Рекомендуемая литература 388
11.12. Упражнения 389
12. Кобол 391
12.1. Введение 391
12.2. Краткий обзор языка 392
12.3. Пример с пояснениями: суммирование списка цен 394
12.4. Данные 400
12.5. Операции 407
12.6. Управление последовательностью действий 410
12.7. Управление данными 413
12.8. Операционная среда 414
12.9. Синтаксис и трансляция 4 i 5
12.10. Структура виртуальной Кобол-машины 417
12.11. Рекомендуемая литература 417
12.12. Упражнения 418
13. ПЛ/1 420
13.1 . Введение 420
13.2. Краткий обзор языка 422
13.3. Пример с пояснениями: суммирование вектора 424
13 4. Данные 426
13.5. Операции 432
13.6. Управление последовательностью действий 438
13.7. Управление данными 444
13.8. Операционная среда 448
13.9. Синтаксис и трансляция 448
13.10. Структура виртуальной ПЛ/1-машниы 451
13.11 . Рекомендуемая литература 463
13.12. Упражнения 453
14. Лисп 1.5 455
14.1. Введение 45.5
14.2. Краткий обзор языка 455
14.3. Пример с пояснениями: построение списка атомов данного списка 457
14.4. Данные 460
14.5. Операции 465
14.6. Управление последовательностью, действий 470
14.7. Управление данными 472
14.8. Операционная среда 476
14.9. Синтаксис и трансляция 476
14.10. Структура виртуальной Лисп-машнны 478
14.11. Специальные вопросы 479
14.12. Рекомендуемая литература 480
14.13. Упражнения 481
15. Снобол 4 483
15.1. Введение 483
15.2. Краткий обзор языка 483
15.3. Пример с пояснениями: обращение цепочки элементов 485
15.4. Данные 488
15.5. Операции 494
15.6. Управление последовательностью действий 504
15.7. Управление данными 506
15.8. Операционная среда 509
15.9. Синтаксис и трансляция 510
15.10. Структура виртуальной Снобол-машины 511
15.11. Рекомендуемая литература 514
15.12. Упражнения 515
16. АПЛ 517
16.1. Введение 517
16.2. Краткий обзор языка 518
16.3. Пример с пояснениями: сеанс работы за терминалом
— программа для вычисления первых N простых чисел 520
16.4. Данные 524
16.5. Операции 525
16.6. Управление последовательностью действий 530
16.7. Управление данными 533
16.8. Операционная среда 536
16.9. Синтаксис и трансляция 538
16.10. Структура виртуальной АПЛ-машины 540
16.11. Рекомендуемая литература 543
16.12. Упражнения 543
17. Эпилог: язык Тьюринга и универсальность языка 544
17.1. Универсальные языки 544
17.2. Машины Тьюринга и язык Тьюринга 545
17.3. Различия между языками программирования 552
17.4. Рекомендуемая литература 553
17.5. Упражнения 553
Список литературы 554
Предметный указатель 562