Форум: "Потрепаться";
Текущий архив: 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 был первым языком, имевшим следующие возможности.
■ Программы могли порождать параллельно выполняемые задачи. Хотя сама идея
была хороша, но ее реализация в языке PL/I была скверной.
■ Появилась возможность выявления и обработки 23 видов различных исключи¬
тельных ситуаций или ошибок в процессе выполнения.
■ Процедуры могли использоваться рекурсивно, но для более эффективного програм¬
мирования нерекурсивных процедур эта возможность могла быть заблокирована.
■ В качестве типа данных были включены указатели.
■ Появилась возможность обращаться к пересекающимся разделам массивов. На¬
пример, к третьей строке матрицы можно было обращаться как к вектору."
← →
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.049 c