ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.12.2020

Просмотров: 1072

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

187

стных

 

языков

 — 

Алгола

Кобола

Фортрана

 

и

 

даже

 

Ассемблера

Был

создан

 

комитет

 

под

 

руководством

 

Джорджа

 

Рэдина

в

 

который

 

кро

-

ме

 

специалистов

 IBM 

входили

 

ведущие

 

программисты

 

из

 

фирм

 

Лок

-

хид

Стандард

 

ойл

 

и

 

др

Комитет

 

регулярно

 

собирался

 

на

 

совеща

-

ния

 

в

 

отелях

 

Лос

-

Анджелеса

 

и

 

Нью

-

Йорка

.

К

 

марту

 1964 

года

 

была

 

готова

 

спецификация

 

нового

 

супер

-

язы

-

ка

названного

 «

скромно

»  PL/1 (Programming Language One). 

В

 

от

-

личие

 

от

 

Алгола

-68, 

который

 

глубоко

 

и

 

долго

 

прорабатывался

 

тео

-

ретически

, PL/1 

создавался

 

в

 

спешке

 

и

 

был

 

логически

 

очень

 

рых

-

лым

представляя

 

собой

 

механическую

 

смесь

 

идей

 

из

 

многих

 

язы

-

ков

Критики

 

сравнивали

 

его

 

с

 

елкой

 

со

 

множеством

 

украшений

или

 

с

 

перочинным

 

ножом

 

в

 

сто

 

лезвий

Вместе

 

с

 

тем

 

в

 

языке

 

было

немало

 

чисто

 

практических

 

находок

 

на

 

инженерном

 

уровне

напри

-

мер

указатели

макроопределения

механизм

 

обработи

 

исключитель

-

ных

 

ситуаций

 

и

 

др

., 

что

 

позволяло

 

писать

 

эффективные

 

программы

на

 

низком

 

уровне

Позже

при

 

создании

 

компилятора

который

 

де

-

лался

 

в

 

лаборатории

 IBM 

в

 

Великобритании

язык

 

был

 

существен

-

но

 

упрощен

 

и

 

отредактирован

.

Для

 

того

чтобы

 

получить

 

представление

 

о

 

синтаксисе

  PL/1,

приведем

 

пример

 

простейшей

 

программы

решающей

 

квадратное

уравнение

 Ax

+ 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;


background image

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


background image

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:


background image

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. 

Секрет

  

в

 

том

что

,

будучи

 

в

 

целом

 

языком

 

высокого

 

уровня

Си

 

через

 

указатели

 

и

 

сред

-

ства

 

связи

 

с

 

ОС

 

позволяет

 

очень

 

гибко

 

управлять

 

процессом

 

компи

-

ляции

 

и

 

исполнения

 

программ

Эти

 

качества

а

 

также

 

компактность

сделали

 

СИ

 

любимым

 

языком

 

программирования

 

для

 

системных

 

про

-


background image

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++. 

Новый

 

язык

 

приобрел

 

широкую

 

популярность

 

из

-

за

 

своей

 

мощи

компактности

 

и

 

универсальности

В

 

нем

 

реализова

-

ны

 

все

 

самые

 

смелые

 

идеи

 

объектного

 

программирования

напри

-

мер

множественное

 

наследие

Как

 

всякий

 

объектный

 

язык

С

++ 

яв

-

ляется

 

неограниченно

 

расширяемым

В

 

нем

 

можно

 

описывать

 

но

-