ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.12.2020
Просмотров: 1072
Скачиваний: 1
187
стных
языков
—
Алгола
,
Кобола
,
Фортрана
и
даже
Ассемблера
.
Был
создан
комитет
под
руководством
Джорджа
Рэдина
,
в
который
кро
-
ме
специалистов
IBM
входили
ведущие
программисты
из
фирм
Лок
-
хид
,
Стандард
ойл
и
др
.
Комитет
регулярно
собирался
на
совеща
-
ния
в
отелях
Лос
-
Анджелеса
и
Нью
-
Йорка
.
К
марту
1964
года
была
готова
спецификация
нового
супер
-
язы
-
ка
,
названного
«
скромно
» PL/1 (Programming Language One).
В
от
-
личие
от
Алгола
-68,
который
глубоко
и
долго
прорабатывался
тео
-
ретически
, PL/1
создавался
в
спешке
и
был
логически
очень
рых
-
лым
,
представляя
собой
механическую
смесь
идей
из
многих
язы
-
ков
.
Критики
сравнивали
его
с
елкой
со
множеством
украшений
или
с
перочинным
ножом
в
сто
лезвий
.
Вместе
с
тем
в
языке
было
немало
чисто
практических
находок
на
инженерном
уровне
,
напри
-
мер
,
указатели
,
макроопределения
,
механизм
обработи
исключитель
-
ных
ситуаций
и
др
.,
что
позволяло
писать
эффективные
программы
на
низком
уровне
.
Позже
,
при
создании
компилятора
,
который
де
-
лался
в
лаборатории
IBM
в
Великобритании
,
язык
был
существен
-
но
упрощен
и
отредактирован
.
Для
того
,
чтобы
получить
представление
о
синтаксисе
PL/1,
приведем
пример
простейшей
программы
,
решающей
квадратное
уравнение
Ax
2
+ Bx + C=0.
Значения
A, B, C
считываются
с
перфо
-
карт
(
в
эпоху
PL/1
это
было
типичное
устройство
ввода
),
а
комп
-
лексные
корни
X1 + i Y1
и
X2 + i Y2
выдаются
на
печать
.
EXAMPLE: PROCEDURE OPTIONS (MAIN);
ON ENDFILE (SYSIN) GO TO ENDING;
P1:
GET LIST (A, B, C);
D = B*B — 4*A*C;
E = —B/(A+A);
IF D<0 THEN DO;
X1, X2 = E;
Y1 = SQRT(—D)/(A+A);
END;
ELSE DO;
R = SQRT(D)/(A+A);
X1 = E+R;
X2 = E — R;
188
Y1 = 0;
END;
Y2 = —Y1;
PUT LIST (X1, Y1, X2, Y2);
GO TO P1;
ENDING:;
END EXAMPLE;
В
синтаксисе
заметно
влияние
Фортрана
и
Алгола
,
что
же
каса
-
ется
объявления
структур
,
то
они
явно
заимствованы
из
Кобола
:
DECLARE 1 DATE,
2 MONTH CHAR(2),
2 DAY CHAR(2),
2 YEAR CHAR(2);
Несмотря
на
теоретическое
несовершенство
,
язык
PL/1
сыграл
исключительно
важную
роль
в
практике
программирования
для
машин
класса
IBM 360/370.
В
СССР
в
эпоху
АСУ
(70-80-
е
годы
)
он
был
основным
языком
программирования
экономических
и
науч
-
но
-
технических
задач
на
ЕС
ЭВМ
,
а
также
стандартным
языком
для
обучения
программистов
.
К
тому
же
имеющиеся
в
PL/1
механизмы
низкоуровневого
программирования
(
указатели
,
средства
связи
с
вычислительной
средой
)
позволяли
писать
весьма
эффективные
программы
.
Однако
после
появления
персональных
компьютеров
популярность
языка
резко
упала
.
Первые
поколения
микрокомпью
-
теров
были
слишком
слабыми
для
реализации
компилятора
с
PL/1,
а
когда
компьютеры
стали
достаточно
мощными
,
было
уже
поздно
—
нишу
PL/1
заняли
Паскаль
и
Си
.
Simula
и
Smalltalk -
революция
в
программировании
Одним
из
специализированных
расшире
-
ний
Алгола
-60
был
язык
Simula,
разработан
-
ный
в
1964
году
в
Норвегии
под
руко
-
водством
Дала
(Dahl, Ole-Johan; )
и
Нюгор
-
да
(Nygaard, Kristen; ).
Этот
язык
предназначался
для
записи
алго
-
ритмов
моделирования
динамических
процессов
(simulation —
мо
-
делирование
)
и
приобрел
очень
большую
популярность
среди
спе
-
циалистов
,
вплоть
до
наших
дней
он
является
живым
языком
ими
-
тационного
моделирования
.
Однако
историческое
значение
Simula
189
выходит
далеко
за
рамки
специализированного
применения
,
в
нем
впервые
появилось
революционное
для
программирования
поня
-
тие
объекта
.
В
языке
Simula
объекты
были
еще
специализирован
-
ными
,
а
в
новой
версии
языка
Simula-67
понятие
объекта
было
обоб
-
щено
и
ему
придан
универсальный
характер
.
Идея
объекта
далеко
не
сразу
завоевала
компьютерный
мир
.
Первым
масштабным
проектом
,
воплотившим
принцип
объектно
-
ориентированного
программирования
,
был
проект
Alto,
реализова
-
ный
в
1973
году
под
руководством
Алана
Кея
в
Xerox PARC,
о
кото
-
ром
мы
говорили
во
второй
главе
.
Программную
часть
проекта
Alto
составили
язык
и
система
программирования
Smalltalk — «
разго
-
ворчик
»,
развивающие
принципы
Simula-67,
и
коренным
образом
отличающиеся
от
всего
,
что
было
ранее
.
Известные
языки
(
Фортран
,
Алгол
,
Кобол
, PL/1...)
основыва
-
лись
на
концепции
«
данные
-
процедуры
»,
то
есть
были
процедур
-
но
-
ориентированными
. Smalltalk
был
первым
языком
,
основанным
на
концепции
«
объекты
-
сообщения
»,
то
есть
объектно
-
ориентиро
-
ванным
.
С
точки
зрения
языка
компьютер
представляес
собой
сре
-
ду
,
населенную
объектами
,
которые
посылают
друг
другу
сообще
-
ния
.
Каждый
объект
—
это
как
бы
микроскопический
компьютер
со
своей
памятью
(
переменные
объекта
)
и
своей
системой
команд
(
ме
-
тоды
объекта
).
Для
общения
с
пользователем
в
системе
были
впервые
приме
-
нены
особые
графические
объекты
—
окна
,
а
для
управления
ими
использовался
придуманный
Дугласом
Энгельбартом
в
1968
году
манипулятор
«
мышь
».
Язык
шлифовался
в
течение
нескольких
лет
,
в
1980
году
появилась
версия
Smalltalk/V,
которая
и
на
сегодняшний
день
является
недосягаемым
идеалом
абсолютно
-
объектного
про
-
граммирования
.
Для
знакомства
с
внешним
видом
Smalltalk
приведем
пример
программы
,
которая
воодит
,
сортирует
по
возрастанию
и
выводит
массив
из
5
чисел
:
|a|
a := Array new: 5.
1 to: 5 do: [:i | a at: i put:
190
(Prompter prompt: ’
Введите
элемент
массива
’) asNumber].
a := a asSortedCollection.
a do: [:i | Transcript putAll: i printString].
Проект
Smalltalk
был
прорывом
в
будущее
,
опередившим
свое
время
на
10-20
лет
.
Хотя
фирма
не
сумела
извлечь
из
него
коммер
-
ческую
выгоду
,
могучие
идеи
проекта
имели
далекие
последствия
.
После
посещения
руководством
Apple
в
1979
году
центра
PARC
в
мир
ПК
были
вброшены
принципы
графического
оконного
интер
-
фейса
,
а
идеи
объектности
стали
завоевывать
все
современные
языки
программирования
.
В
1980
году
появился
«
Си
с
объектами
»,
по
-
зднее
переименованный
в
C++,
начиная
с
версии
5.5
объекты
вош
-
ли
в
Паскаль
,
объектным
стал
Visual Basic,
в
1995
году
со
скорос
-
тью
эпидемии
распространился
100%
объектный
Java
и
т
.
д
.
Вместе
с
тем
возможности
оригинального
Smalltalk
до
конца
не
исчерпаны
.
Удивительная
стройность
,
логичность
,
изящность
этой
системы
программирования
,
как
нам
представляется
,
еще
долго
бу
-
дут
служить
источником
идей
для
других
систем
.
На
Smalltalk
обра
-
тила
внимание
фирма
IBM,
она
включила
его
список
базовых
язы
-
ков
программирования
.
С
—
язык
для
профессионалов
Язык
Си
был
создан
Деннисом
Ричи
(Ritchie, Dennis M.;
р
. 1941)
в
1973
году
в
Bell Labs
в
ходе
разработки
операционной
системы
UNIX,
о
которой
мы
будем
говорить
в
следующем
парагра
-
фе
.
Обычно
для
того
,
чтобы
добиться
максимальной
эффективнос
-
ти
,
ядро
ОС
писали
на
языке
ассемблера
.
За
это
приходилось
пла
-
тить
узкой
специализированностью
:
при
переходе
на
новый
тип
процессора
программы
переписывались
полностью
.
Авторы
UNIX
задумали
ее
как
переносимую
систему
и
решили
написать
ядро
в
основном
на
языке
высокого
уровня
.
Си
прекрасно
справился
с
этой
задачей
,
на
нем
написано
около
90%
кода
UNIX.
Секрет
в
том
,
что
,
будучи
в
целом
языком
высокого
уровня
,
Си
через
указатели
и
сред
-
ства
связи
с
ОС
позволяет
очень
гибко
управлять
процессом
компи
-
ляции
и
исполнения
программ
.
Эти
качества
,
а
также
компактность
сделали
СИ
любимым
языком
программирования
для
системных
про
-
191
граммистов
.
Поскольку
UNIX
была
некоммерческой
системой
,
язык
Си
вме
-
сте
с
ней
разошелся
по
всем
университетам
мира
.
Исходная
версия
языка
была
реализована
на
мини
-
ЭВМ
PDP-11,
однако
впоследствии
компилятороы
появились
практически
для
всех
аппаратных
плат
-
форм
.
Язык
Си
отличает
очень
лаконичный
синтаксис
.
Вот
как
выгля
-
дит
,
например
,
известная
нам
программа
сортировки
пяти
чисел
:
float A[5];
for(int i=0;i<5;i++)scanf("%f",&A[i]);
i=0;
while(i<4){
if(A[i]<=A[i+1])i++;
else{
z=A[i];
A[i]=A[i+1];
A[i+1]:=z;
i=0;
}
};
for(i=0;i<5;i++)printf("%f\n",A[i]);
«
Чистый
»
Си
до
сих
пор
очень
широко
используется
системны
-
ми
программистами
для
создания
приложений
,
сравнимых
по
эф
-
фективности
с
программами
,
реализованными
на
языке
Ассембле
-
ра
,
однако
истинную
славу
этому
изящному
и
компактному
языку
принесли
его
объектно
-
ориентированные
потомки
C++, Java
и
C#.
В
начале
80-
х
годов
другой
сотрудник
Bell Labs
Бьярн
Страуст
-
руп
(Stroustrup, Bjarne;
р
. 1950)
на
основе
синтаксиса
Си
разрабо
-
тал
универсальный
объектно
-
ориентированный
язык
программиро
-
вания
C++.
Он
является
надмножеством
(
расширением
)
языка
Си
,
поэтому
программы
,
написанные
на
Си
,
могут
обрабатываться
ком
-
пиляторами
C++.
Новый
язык
приобрел
широкую
популярность
из
-
за
своей
мощи
,
компактности
и
универсальности
.
В
нем
реализова
-
ны
все
самые
смелые
идеи
объектного
программирования
,
напри
-
мер
,
множественное
наследие
.
Как
всякий
объектный
язык
,
С
++
яв
-
ляется
неограниченно
расширяемым
.
В
нем
можно
описывать
но
-