Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.043 c
8-1096200616
maguk
2004-09-26 16:10
2004.12.26
Как воспроизвести аудио-поток?


14-1102488330
WondeRu
2004-12-08 09:45
2004.12.26
Опрос: Иностранные языки


6-1097758501
Григорьев Антон
2004-10-14 16:55
2004.12.26
Как авторизоваться на прокси?


1-1102510216
Игорь нтк
2004-12-08 15:50
2004.12.26
Редактирование DBEdit


1-1102538433
Silla
2004-12-08 23:40
2004.12.26
MDI form &amp; Child + MessageBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский