СоНоты

Язык программирования PL/1

В октябре 1963 г. представители фирм IBM и SHARP образовали Комитет под представительством Б. Розенблата и Дж. Радина по созданию совершенного языка программирования. Предполагалось создать такой язык, который сможет удовлетворить различные классы пользователей, решающих как научные, так и коммерческие (экономические), а также специальные задачи. В результате разработки эффективного "единственного" языка программирования ожидалось, что отпадет необходимость в таких языках, как ФОРТРАН, КОБОЛ и др.

Первой попыткой создания универсального языка стала разработка в начале 60-х годов фирмой System Development языка ДЖОВИАЛ (автор Ж. Шварц и др.). Но этот язык, использовавшийся исключительно для военных приложений, не смог претендовать на роль универсального.

Первоначально разработка PL/1 ориентировалась на обеспечение соответствующих расширений ФОРТРАНА, он и назывался ФОРТРАН-IV. Скоро стало ясно, что совместимость с ФОРТРАНом сохранить не удастся, не удастся также достичь целей, определенных для нового языка.

Одним из аспектов начального этапа разработки языка PL/1 была быстрота, с какой предполагалось завершить описание языка - декабрь 1963 г. В дальнейшем сроки были отодвинуты сначала на январь, а затем на февраль 1964 г. Причиной такого жесткого графика было стремление приурочить создание PL/1 к выпуску семейства совместимых ЭВМ, известных теперь под названием IBM/360.

Первый официальный документ с описанием нового языка программирования был выпущен в марте 1964 г. В январе 1965 г. П. Рогоуэй и Дж. Радин подготовили окончательный отчет Комитета по созданию нового языка.

Новый язык разработчики нарекли NPL (аббревиатура от слов New Programming Language - новый язык программирования). Это название существовало вплоть до 1965 г., а затем, по предложению английских пользователей из Национальной физической лаборатории, язык стал называться PL/1 (PL/1 - сокращение от Programming Language/One - язык программирования/первый).

Осенью 1964 г. в нью-йоркском центре программирования фирмой IBM было учреждено правление по контролю над новым языком, которое через два года переехало в Херсли (Англия). По мере того как члены правления осуществляли свою деятельность, направленную на "очищение" и усовершенствование языка, стало очевидно, что ни один из документов по разработке языка, подготовленных в 1964 г., не мог служить основой, на которую можно было опереться в дальнейшей работе. Сотрудники лаборатории из Херсли выполнили немалую работу по становлению нового языка. Они неограничились просто его "очищением" и расширением. Они взяли, можно сказать, сырой материал и на протяжении двух лет занимались его обработкой, оформлением и "облицовкой", в результате чего получился хорошо определенный, пригодный к широкому использованию язык программирования.

Характеризуя язык PL/1, его часто сравнивают с известными предшественниками, причем говорят, что он сочетает и себе блочную структуру и динамическое распределение памяти АЛГОЛа, структуры записей и средства ввода-вывода КОБОЛа и арифметические операции ФОРТРАНа, а также располагает некоторыми дополнительными средствами: обработкой строк, списков и др.

Создание языка PL/1 было направлено на более эффективное использование компьютерной техники нового поколения: язык PL/1 был первым, с помощью которого можно было решать проблемы, возникающие при взаимодействии с операционной системой. Он лучше, чем какой-то другой язык, обеспечивал большие удобства распределения памяти, управления задачами и обработки исключительных ситуаций. Например, пользователь мог инициировать асинхронное выполнение задач и управлять процессором решения, основываясь на таких факторах, как временные задержки или завершение другой задачи. PL/1 привнес идею родовых функций, что означает использование одного имени функции для различных типов входных данных. К важной особенности PL/1, относится широко используемая концепция условий по умолчанию, которая позволяет пользователям указывать не все атрибуты данных, функций и операторов, хотя со временем некоторые специалисты стали рассматривать эту особенность как слабость языка.

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

PL/1 стал первым универсальным языком программирования (точнее, первый, претендующий на такое название). Как и всякий новый язык, он не избежал болезней становления. Хотя первый компилятор с языка был создан в 1965 г., до 1967 г. не было "приличной" версии компилятора, которую можно было бы широко использовать. И только в начале 1968 г., когда сотрудниками фирмы IBM был разработан улучшенный вариант компилятора, стали очевидны достоинства нового языка. Первоначально планы реализации PL/1 на компьютерах семейств IBM/360 предусматривали создание семейства компиляторов, но их появилось только два: PL/1 F и PL/1 D. В дальнейшем компиляторы с PL/1 были разработаны для ряда вычислительных систем, выпускаемых фирмами Burroughs, Control Data, Honeywell и др. В нашей стране язык PL/1 был успешно реализован на вычислительных машинах серии EC ЭВМ.

С марта 1968 г. и до середины 70-х годов фирма IBM опубликовала ряд документов по усовершенствованию языка PL/1 с целью его стандартизации (версии 0, 1, 2 и ООК).

В тоже время в процесс развития языка включились Комитеты ANSI и ECMA (Европейская ассоциация изготовителей машин), опубликовавшие в феврале 1975 г. проект стандартного языка PL/1, который был принят в октябре 1976 г.

Наряду с полуформальным определением языка, осуществленным сотрудниками IBM в Херсли, основательную работу по формальному его определению проделали сотрудники венских лабораторий той же фирмы. С помощью предложенного ими метода формального определения языков программирования впервые был описан такой сложный язык высокого уровня, как PL/1. В основе метода ВЯО (Венского Языка Определений) лежат работы Маккарти, Элгота, Лэндина. Первая версия формального определения языка появилась в 1966 г., вторая - в 1968.

После своего "выхода в свет" PL/1 был определен некоторыми специалистами как важнейший язык 70-х годов. Однако вскоре стало очевидным, что он не в состоянии "бороться" с КОБОЛом и ФОРТРАНом, а затем, в конце 70-х годов, уступил место
БЕЙСИКу и ПАСКАЛЮ.

Одна из причин неоправданных надежд на широкое применение PL/1, как отмечает Г. Хеллс, объясняется его сложностью (многие реализации языка содержат 200 ключевых слов). Сложность привела к низкой читабельности и затруднила автоматическую проверку программ. Другая причина: язык PL/1 появился после того, как ФОРТРАН, КОБОЛ, АЛГОЛ тоже повсеместно были признаны, и многие пользователи, программирующие на этих языках, не нуждались в оригинальных возможностях PL/1.

И все же всплеск активности PL/1 был отмечен в годы широкого использования компьютеров IBM/360 и IBM/370, а также совместимых серий машин, созданных в других странах. Кроме того, история языка PL/1 получила свое продолжение.

В 1966 г. для существовавшего языка для обработки формул ФОРМАК (FORMAC) на основе PL/1 была выпущена версия под названием PL/1-ФОР-МАК,которая не без успеха использовалась на ЭВМ третьего поколения до начала 80-х годов.

В начале 70-х годов появились первые микропроцессоры. В 1972 г. компанией MAA (Microcomputers Applications Associates) был разработан язык PL/М (PL/M - Programming Language for Microcomputers - язык программирования для микрокомпьютеров) как язык системного программирования для 8-разрядных микропроцессоров фирмы INTEL. PL/М берет свое начало от языка написания компилятора ХPL, который, в свою очередь, происходит от полного языка PL/1.

Консультант фирмы Г. Килдалл написал первый компилятор с языка PL/М. В 1974 г. он же разработал первую версию операционной системы СР/М (Control Program for Microcomputers - управляющая программа для микрокомпьютеров), на которую опирался резидентный компилятор PL/М. Язык PL/М стал инструментальным языком фирмы INTEL и сыграл большую роль в отказе от применения языков ассемблерного типа. В дальнейшем многие ведущие фирмы - производители микропроцессорной техники - создали свои варианты языка PL/М. К настоящему времени разработано несколько таких версий: PL/3, PL/65, PL/М-80, PL/М-86, PL/М-286. Некоторые из этих версий реализованы на отечественных микро-ЭВМ семейства СМ1800.