Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

PL/1 - Programming Language One   Найти похожие ветки 

 
iZEN ©   (2004-12-04 00:17) [80]

"Язык PL/I представляет собой первую масштабную попытку разработки языка, кото¬рый бы использовался в широком спектре областей. Все предшествовавшие и большин¬ство последующих языков программирования концентрировались на какой-то одной об¬ласти применения (наука, искусственный интеллект или коммерция).
2.8.1. Исторические предпосылки
Подобно языку FORTRAN язык PL/I разрабатывался как продукт корпорации IBM. В начале 1960-х годах промышленные пользователи компьютеров сформировали два от¬дельных лагеря. С точки зрения корпорации IBM научные программисты могли исполь¬зовать либо универсальный компьютер 7090, либо компьютер с ограниченными возмож¬ностями 1620, которые выпускались указанной корпорацией. Эта группа в значительной степени использовала тип данных с плавающей точкой и массивы. Основным языком в их работе был язык FORTRAN, хотя параллельно рассматривались и некоторые языки ассемблера. Эти пользователи имели собственную группу SHARE и поддерживали сла¬бые связи с программистами, работавшими над коммерческими приложениями.
Для коммерческих приложений использовались большие или малые компьютеры, IBM 7080 и IBM 1401. Для этих приложений требовались типы данных для десятичных чисел и символьных строк, а также детально разработанные и эффективные свойства ввода-вывода. Данная группа пользователей использовала язык COBOL, хотя в начале 1963 года переход с языков ассемблера на язык COBOL был далек от завершения. Эта категория пользователей также имела свою собственную группу пользователей GUIDE и изредка налаживала контакты с научными пользователями.
В начале 1963 года проектировщики корпорации IBM почувствовали, что ситуация начинает меняться. Указанные группы двигались навстречу друг другу по путям, кото¬рые неизбежно должны были привести к возникновению проблем. Ученые начали соби¬рать большие файлы данных, требующих обработки. Для этого нужны были изощренные и эффективные средства ввода-вывода. Люди же, занимавшиеся коммерческими прило¬жениями, для построения систем управления информацией начали использовать регрес¬сионный анализ, что требовало чисел с плавающей точкой и массивов. Стало казаться, что внедрение компьютерной техники вскоре потребует двух отдельных компьютеров, поддерживающих два значительно отличающихся языка программирования.
Эти предчувствия вполне естественно привели к возникновению концепции разра¬ботки единого универсального компьютера, который бы мог выполнять как действия над числами с плавающей точкой, так и над десятичными числами, и, следовательно, был бы применим и в науке, и в коммерции. Так зародилась концепция серии компьюте¬ров IBM System/360. Наряду с этой концепцией возникла идея о языке программирова¬ния, который был бы применим и для коммерческих, и для научных приложений. В зна¬чительной степени в язык были включены возможности системного программирования и обработки списков. Следовательно, новый язык должен был заменить языки FORTRAN, COBOL и LISP, а в области системных приложений — еще и язык ассемблера."
...продолжение следует...


 
iZEN ©   (2004-12-04 00:18) [81]

...продолжение...
"2.8.2. Процесс разработки
Разработка началась с образования в октябре 1963 года корпорацией IBM и группой SHARE комитета Advanced Language Development Committee of the SHARE FORTRAN Project. Этот новый комитет быстро собрался и сформировал подкомитет 3<->3 Committee, названный так из-за наличия в нем трех человек со стороны корпорации IBM и трех со стороны группы SHARE. Для разработки языка комитет 3<->3 Committee соби¬рался на три-четыре дня через неделю.
Как и при работе комитета Short Range Committee, разрабатывавшего язык COBOL, завершение исходной разработки была запланировано на удивительно близкую дату. По-видимому, независимо от целей разработки языка в начале 1960-х широко распростра¬ненно мнение, что это задание может быть выполнено за три месяца. Первую версию языка PL/I, позже названную FORTRAN VI, предполагалось завершить к декабрю, что составляло менее трех месяцев со дня основания комитета. Комитет, приведя в оправда¬ние две различные причины задержки, передвинул срок окончания работ сначала на ян¬варь, а затем и на февраль 1964 года.
Исходная концепция разработки состояла в том, что новый язык должен был быть расширенной версией языка FORTRAN IV, совместимой с ним, но это намерение было быстро отброшено, как и название FORTRAN VI. Вплоть до 1965 года этот язык был из¬вестен как NPL, что являлось аббревиатурой названия New Programming Language (новый язык программирования). Первый опубликованный отчет о языке NPL был пре¬доставлен на собрании группы SHARE в марте 1964 года. Более полное описание после¬довало в апреле, а работоспособная версия была опубликована в декабре 1964 года (IBM, 1964) группой разработчиков компилятора из выбранной для реализации лаборатории IBM Hursley Laboratory в Великобритании. В 1965 году, чтобы избежать путаницы с аб¬бревиатурой Национальной физической лаборатории (NPL— National Physical Laboratory) в Великобритании, название языка было изменено на PL/I. Если бы компиля¬тор разрабатывался за пределами Соединенного Королевства, название, вероятно, оста¬лось бы прежним."


 
iZEN ©   (2004-12-04 00:19) [82]

...окончание...
"Обзор языка PL/I
Возможно, лучшим описанием языка PL/I, состоящим из одного предложения, будет следующее: он содержит то, что считалось лучшими частями языка ALGOL 60 (рекурсия и блочная структура), языка FORTRAN IV (раздельная компиляция со связью посредст¬вом глобальных данных) и языка COBOL 60 (структуры данных, средства ввода-вывода и генерации отчетов), а также несколько новых конструкций, каким-то образом соеди¬ненных в единое целое. Мы не будем пытаться даже в конспективной форме описать все свойства этого языка или хотя бы его наиболее противоречивые конструкции. Вместо этого мы кратко назовем несколько вкладов, сделанных этим языком в фонд знаний в области языков программирования.
Язык PL/I был первым языком, имевшим следующие возможности.
&#9632; Программы могли порождать параллельно выполняемые задачи. Хотя сама идея
была хороша, но ее реализация в языке PL/I была скверной.
&#9632; Появилась возможность выявления и обработки 23 видов различных исключи¬
тельных ситуаций или ошибок в процессе выполнения.
&#9632; Процедуры могли использоваться рекурсивно, но для более эффективного програм¬
мирования нерекурсивных процедур эта возможность могла быть заблокирована.
&#9632; В качестве типа данных были включены указатели.
&#9632; Появилась возможность обращаться к пересекающимся разделам массивов. На¬
пример, к третьей строке матрицы можно было обращаться как к вектору."


 
iZEN ©   (2004-12-04 00:20) [83]

...продолжение...
"Оценка
Любая оценка языка PL/I должна начинаться с упоминания о претенциозности работ по его созданию. Оглядываясь назад, кажется наивным полагать, что такое количество конструкций можно было успешно объединить вместе. Тем не менее, это суждение сле¬дует смягчить признанием того, что опыт разработки языков в то время был очень не¬большим. Вообще говоря, структура языка PL/I была основана на допущении, что любая полезная конструкция, которая может быть реализована, должна включаться в язык, при этом вопросу, как большое количество функций сможет ужиться вместе, уделялось мало внимания. Эдсгер Дийкстра (Edsger Dijkstra) в своей лекции на церемонии вручения премии Тьюринга (Turing Award Lecture (Dijkstra, 1972)) подверг сильнейшей критике сложность языка PL/I: "Я совершенно не вижу, как мы можем охватить умом наши уве¬личивающиеся в размере программы, в то время как из-за своей явной переусложненно¬сти язык программирования — наш основной инструмент, прошу отметить! — уже вы¬ходит из-под нашего интеллектуального контроля".
Помимо сложности, возникшей из-за большого размера, язык PL/I страдал от боль¬шого количества конструкций, которые сейчас считаются неудачно разработанными. Среди них можно отметить указатели, обработку исключительных ситуаций, параллель¬ность, хотя мы должны обратить внимание и на то, что в каждой из указанных конструк¬ций было что-то новое.
С точки зрения использования язык PL/I должен считаться, по крайней мере частич¬но, успешным. В 1970-х годах он в значительной мере использовался как в коммерции, так и в науке. В это же время он широко использовался в качестве учебного средства, главным образом в несколько сокращенных формах, таких как язык PL/C (Cornell, 1977) и язык PL/CS (Conway and Constable, 1976)."
...окончание следует...


 
Sha ©   (2004-12-04 00:26) [84]

> Alex Konshin ©   (03.12.04 21:50) [77]
> Игорь Шевченко ©   (03.12.04 22:48) [78]

Для своего времени, состояния развития вычислительной техники и программирования PL/I был лучшим.

Да, в нем присутствовала неортогональность конструкций и некоторая избыточность, но она ничуть не мешала. Каждый программист или группа выбирала или вырабатывала приемлемый для себя стиль.

Коррекность или некоррекность в зависимости от контекста - что-то не припомню.

Возможно, здесь имеется ввиду достаточно сложный синтаксис операторов ввода/вывода. Но он отражал тогдашнее состояние вычислительной техники и существовавший в то время подход - язык должен был обеспечивать возможность работы со всем оборудованием всеми средствами, предоставляемыми ОС.

А оборудование и ОС были достачно причудливыми, только для дисков существовало несколько методов доступа: 2 последовательных обычных (с очередями и без) плюс 1 управляемый списком (реализован в библиотеке языка), 3 прямых (один с относительной адресацией и два с ключами) и 1 библиотечный. А были еще телекоммуникационный (TCAM), графический (GAM)...
Отсюда громоздкий компилятор и зависимость от платформы. В то время это было обычным явлением, т.к. не было стандартного оборудования. А практика требовала быстрой разработки ПО.

Что касается Алгола - он больше подходил для описания алгоритмов, а не для решения практических задач. На нем, к примеру невозможно разработать систему резервирования билетов или информационную систему для издательства.

Благодаря тому, что Ритчи и Вирт уловили потребность программистов в абстрагировании от оборудования, а также благодаря общему прогрессу средств ВТ и ОС, программисты получили два новых замечательных языка.

Но снова обратимся к PL/I. Мысленно выбросим из него все зависимые от оборудования вещи, отбросим все ОС-зависимые навороты (мультизадачность, события и т.п.). Что останется в итоге? Мы получим язык более защищенный, мощный и эффективный, чем C, имеющий синтаксис близкий к Паскалю. Кому он может не понравиться? При этом необходимо учесть что появился он значительно раньше.

Таким образом, ядро проекта было проработано изумительно.
Основные конструкции языков того времени (FORTRAN, COBOL и Algol) имели близкие аналоги, благодаря чему миграция на этот языт была предельно простой. При этом никаких противоречий в ядре языка не было и в помине. Эффективность генерируемого кода просто потрясала. Оставалось только отделить ядро языка от шелухи.
 
По каким-то причинам в то время IBM не смогла увидеть этого или не захотела сделать это и дать языку вторую жизнь. А жаль. Здесь я соглашусь с Эндрю Таненбаум: "Наличие четкого представления о своих целях является решающим."


 
iZEN ©   (2004-12-04 00:30) [85]

...окончание...
"пример программы на языке PL/I.
/*ПРИМЕР ПРОГРАММЫ НА ЯЗЫКЕ PL/I

ВВОД:  ЦЕЛОЕ ЧИСЛО LISTLEN, МЕНЬШЕ 100, ЗА КОТОРЫМ СЛЕДУЕТ
НАБОР ЦЕЛЫХ ЧИСЕЛ В КОЛИЧЕСТВЕ LISTLEN "

ВЫВОД: КОЛИЧЕСТВО ВВЕДЕННЫХ ВЕЛИЧИН, КОТОРЫЕ БОЛЬШЕ ИХ
СРЕДНЕГО АРИФМЕТИЧЕСКОГО
*/

PLIEX: PROCEDURE OPTIONS (MAIN);
  DECLARE INTLIST (1:99) FIXED.
  DECLARE (LISTLEN, COUNTER, SUM, AVERAGE, RESULT) FIXED;
  SUM = 0;
  RESULT = 0;
  GET LIST(LISTLEN);
  IF (LISTLEN > 0) & (LISTLEN < 100) THEN
    DO;
    /* СЧИТЫВАНИЕ ВХОДНЫХ ДАННЫХ В МАССИВ И ВЫЧИСЛЕНИЕ ИХ СУММЫ */
    DO COUNTER = 1 ТО LISTLEN;
      GET LIST (INTLIST (COUNTER));
      SUM = SUM + INTLIST (COUNTER);
    END;
    /* ВЫЧИСЛЕНИЕ СРЕДНЕГО */
    AVERAGE = SUM / LISTLEN;
    /* ПОДСЧЕТ ЧИСЛА ВЕЛИЧИН, КОТОРЫЕ БОЛЬШЕ СРЕДНЕГО */
    DO COUNTER = 1 TО LISTLEN;
      IF INTLIST (COUNTER) > AVERAGE THEN
        RESULT = RESULT +1;
    END;
    /* ВЫВОД РЕЗУЛЬТАТОВ */
    PUT SKIP LIST ("ЧИСЛО ВЕЛИЧИН, КОТОРЫЕ БОЛЬШЕ СРЕДНЕГО:");
    PUT LIST (RESULT);
  END;
  ELSE
    PUT SKIP LIST ("ОШИБКА - ВВЕДЕНА НЕВЕРНАЯ ДЛИНА СПИСКА"); END PLIEX
"
Роберт У. Себеста "Основные концепции языков программирования", из. Вильямс, 2001.


 
Игорь Шевченко ©   (2004-12-04 00:37) [86]

Sha ©   (04.12.04 00:26) [84]


> Отсюда громоздкий компилятор и зависимость от платформы.
> В то время это было обычным явлением, т.к. не было стандартного
> оборудования


Ну здравствуйте :) Оборудование выпускалось фирмой IBM же, и уж стандартнее его не было на тот момент.


> Для своего времени, состояния развития вычислительной техники
> и программирования PL/I был лучшим.


Я бы не стал так категорично утверждать. Большинство программ все-таки писалось на Коболе и Фортране :)


 
Sha ©   (2004-12-04 00:51) [87]

> Игорь Шевченко ©   (04.12.04 00:37) [86]

>> Отсюда громоздкий компилятор и зависимость от платформы.
>> В то время это было обычным явлением, т.к. не было стандартного
>> оборудования

> Ну здравствуйте :) Оборудование выпускалось фирмой IBM же, и уж
> стандартнее его не было на тот момент.

Так я про зависимость от платформы.
А ты про что?
Или считаешь, что все фирмы в то время придерживались стандартов IBM?


 
Sha ©   (2004-12-04 00:57) [88]

> Игорь Шевченко ©   (04.12.04 00:37) [86]

>> Для своего времени, состояния развития вычислительной техники
>> и программирования PL/I был лучшим.

> Я бы не стал так категорично утверждать. Большинство программ > все-таки писалось на Коболе и Фортране :)

Так было до появления PL/I.
Потом ситуация стала исправляться :)
Особенно в Союзе, где из-за задержки с выходом EC некоторые так и не успели попрактиковаться на Коболе.


 
Sha ©   (2004-12-04 01:25) [89]

> Sha ©   (04.12.04 00:26) [84]
Все это время мучительно вспоминал 8-ой способ обмена данными.
Оказывается, забыл про слона: плюс 1 последовательный форматный (реализован в библиотеке языка).


 
Игорь Шевченко ©   (2004-12-04 10:14) [90]

Sha ©   (04.12.04 00:57) [88]


> А были еще телекоммуникационный (TCAM),


Саша, насколько я помню, TCAM не поддерживался PL/1


> Или считаешь, что все фирмы в то время придерживались стандартов
> IBM?


А если не затруднит - на каких платформах компилятор PL/1 имел широкое распространение, кроме IBM ?

Насколько мне помнится, из широко распространенных платформа тогда были IBM и DEC - на DEC"овской платформе был PL/1 ? (Я просто не в курсе).


> Так было до появления PL/I.
> Потом ситуация стала исправляться :)
> Особенно в Союзе, где из-за задержки с выходом EC некоторые
> так и не успели попрактиковаться на Коболе.


В Союзе, насколько мне помнится, PL/1 был распространен там же, где сейчас Паскаль (рискну сделать такое утверждение) :)


 
Sha ©   (2004-12-04 18:07) [91]

> Игорь Шевченко ©   (04.12.04 10:14) [90]

> Саша, насколько я помню, TCAM не поддерживался PL/1

Да, естественно. Это сказано мной в смысле разнообразия аппаратного и программного обеспечения. ТСAM, GAM и, кажется, ISAM не поддерживались непосредственно в языке. Но это легко поправимо благодаря наличию интерфейсов с всеми языками программирования. В часности, для обеспечения доступа пользователей с терминалов EC-7066 и EC-7220 к моей базе был написан переходник на ассемблере по образу и подобию популярных в то время редакторов PRIMUS и JEC.
Насчет ISAM полностью не уверен, т.к. в то время, когда я писал базы на BDAM, знакомые, тоже используя PL/I, писали их на ISAM.

> А если не затруднит - на каких платформах компилятор PL/1 имел
> широкое распространение, кроме IBM ?

Думаю, что еще только на ЕС :)
Была еще пародия на PL/I, сделанная третьей фирмой, на платформе IBM PC.

> Насколько мне помнится, из широко распространенных платформа
> тогда были IBM и DEC - на DEC"овской платформе был PL/1 ? (Я
> просто не в курсе).

Насколько я знаю, нет, не был.

> В Союзе, насколько мне помнится, PL/1 был распространен там
> же, где сейчас Паскаль (рискну сделать такое утверждение) :)

В точку. Именно потому, что свято место пусто не бывает :)
Король умер, да здравствует король!


 
Игорь Шевченко ©   (2004-12-04 18:41) [92]

Sha ©   (04.12.04 18:07) [91]


> Но это легко поправимо благодаря наличию интерфейсов с всеми
> языками программирования.


Точнее, только с ассемблером :) Насколько мне помнится, попытка связать его с фортраном была несколько трудоемкой.


> по образу и подобию популярных в то время редакторов PRIMUS
> и JEC.


Не трави душу :) И вода тогда была мокрее, и небо голубее, и в водке градус был правильный :))

С уважением,


 
Sha ©   (2004-12-04 19:52) [93]

> Игорь Шевченко ©   (04.12.04 18:41) [92]

> Точнее, только с ассемблером :) Насколько мне помнится,
> попытка связать его с фортраном была несколько трудоемкой.

Да, ассемблер был универсальным инструментом для работы с любым оборудованием. Например, работать с устройствами ввода/вывода перфоленты можно было непосредственно из языка, но только через ассемблер удавалось получить полный контроль.

С оптимизирующим Фортраном у соседей вроде получалось связать оптимизирующий PL/I. Сам не пробовал, но помнится, в сопроводительной документации на PL/I приведено описание связи по данным и по управлению.

> Не трави душу :) И вода тогда была мокрее, и небо голубее, и в
> водке градус был правильный :))

> С уважением,

Это точно.

С уважением.


 
Юрий Зотов ©   (2004-12-05 22:50) [94]

> Sha © (04.12.04 19:52) [93]

> Например, работать с устройствами ввода/вывода перфоленты
> можно было непосредственно из языка, но только через ассемблер
> удавалось получить полный контроль.

Вводил и выводил, из языка, непосредственно в двоичном виде (использовалась нестандартная кодировка). Обрабатывались конец файла и ошибки передачи данных. Вроде бы, другой контроль и не нужен.

Насчет связи с Фортраном - сам делал, без проблем. Там богатая библиотека численных методов была, вот я ее и подцеплял, на уровне объектных файлов.



Страницы: 1 2 3 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.68 MB
Время: 0.066 c
14-1102335385
Привет!!!!
2004-12-06 15:16
2004.12.26
И как лечить вирус? (не конкретная ситуация а в целом)


14-1102458363
KilkennyCat
2004-12-08 01:26
2004.12.26
Компания "ЭСК" полностью завершила процесс госрегистрации.


14-1102154522
SteelMan
2004-12-04 13:02
2004.12.26
куда катится интернет?!


4-1099902701
Андрей Н.
2004-11-08 11:31
2004.12.26
Задержка в программе


1-1102500203
snake1977
2004-12-08 13:03
2004.12.26
QRRichText