Язык программирования номер один

«Люди, которые не знают PL/1 и поминают его не к месту, очень раздражают нас – тех, кто знает PL/1»

…………

ПЛ/1 (PL/I, Programming Language I — «Язык программирования номер один», в русском языке произносится «пиэ́ль оди́н») — разработанный в 1964 году язык программирования, созданный для научных, инженерных и бизнес-ориентированных вычислений. Содержит столь широкий (особенно на время создания) набор синтаксических конструкций и встроенных функций, что в IBM даже не сразу появился компилятор, поддерживающего все возможности языка. ПЛ/1 поддерживает рекурсию и структурное программирование, широко применяется в обработке данных. Настоящее международное название языка PL/I (из латинских литер, как и PL/M, PL/S) в СССР не прижилось.

……………….

Основные свойства языка ПЛ/1

– Свободный синтаксис

– Ключевые слова и идентификаторы нечувствительны к регистру

– По умолчанию (в классических версиях для мейнфреймов — всегда) передача параметров по ссылке

– Поддержка сложных структур с объединениями (в терминологии языка Паскаль — записи с вариантами)

– Чрезвычайно развитая система встроенных типов данных (более тысячи!), при этом возможность неявных преобразований между большинством из них

– Несколько видов динамического выделения памяти

– Очень обобщённые операторы со многими вариантами синтаксиса

– Строго определённая семантика управляющих конструкций (например, оператор цикла определён через эквивалентные присваивания и go to и т. д.)

– Операции с массивами и их сечениями

– Развитый механизм исключительных состояний

– Поддержка на уровне языка мультизадачности и асинхронного ввода-вывода

– Поддержка на уровне языка сложных методов доступа для ввода-вывода

– Очень развитый препроцессор, фактически сам являющийся подмножеством ПЛ/1

……………………

История ПЛ/1

Первоначально IBM разработала несколько несовместимых компьютеров для разных целей: одни для научных, другие — для бухгалтерских приложений.
Научные и бухгалтерские программы не только использовали разные компьютеры, но ещё и писались на разных языках: научные — на Фортране, бухгалтерские — в основном на Коболе. Со временем эти два направления двинулись навстречу друг другу: например, ученым требовалась обработка файлов данных, а экономисты стали применять сложные расчеты типа регрессионного анализа.

Отсюда возникла естественная идея разработки единой системы совместимых компьютеров (System/360 – все направления на 360 градусов), которая заменила бы все предыдущие модели и могла бы с успехом использоваться для любых задач. Вторая естественная идея – у универсальной системы должен быть единый универсальный язык. Такой единый язык под названием ПЛ/1 был разработан в IBM как неотъемлемая часть системы System/360. Кроме объединения двух широко используемых языков, он вобрал в себя идеи структурного программирования, взятые из Алгола-60, а также ряд новых на то время возможностей.

Для разработки ПЛ/1 был сформирован комитет, состоящий из программистов IBM и пользователей со всех концов США. Работа комитета длилась несколько месяцев. Изначально планировалось, что ПЛ/1 будет готов к использованию к моменту запуска System/360, но это не было выполнено.

Язык изначально был назван NPL (New Programming Language — «новый язык программирования»), но эта аббревиатура уже использовалось британской Национальной физической лабораторией (National Physics Laboratory). Поэтому название изменили на ПЛ/1.

Поначалу ПЛ/1 вызвал большой энтузиазм, но оказался не так успешен, как планировалось, по следующим причинам:
– Язык получился весьма эклектичным во многом потому, что разрабатывавший его комитет, пытался удовлетворить нужды совершенно разных пользователей (научных и банковских).
– Трудность реализации компилятора привела к тому, что первые компиляторы содержали большое количество ошибок и имели низкое качество. Одной из причин этого было то, что ПЛ/1 содержал много почти не используемых большинством пользователей возможностей, вроде поддержки многозадачности.
– Для первых компиляторов был характерен низкий уровень оптимизации скомпилированного кода, что было очень критично для математических расчётов. Поэтому ПЛ/1 не смог заменить собой Фортран. Асинхронная модификация переменных (например, в результате конструкции ON ERROR) несколько затрудняла оптимизацию. Удовлетворительная оптимизация была достигнута лишь в разработанном IBM в 1969 оптимизирующем компиляторе. Вместе с ним IBM разработала и отладочный компилятор.
– Разные компиляторы языка ПЛ/1 реализовывали различные подмножества языка, что приводило к непереносимости программ.
Хотя ПЛ/1 и не смог окончательно вытеснить Фортран и КОБОЛ или даже сравниться с ними по популярности, тем не менее, он широко использовался во второй половине 1960-х и в 1970-х годах, особенно для бухгалтерских приложений, в основном из-за отсутствия в то время лучшей альтернативы. Как Фортран, так и КОБОЛ были бедны по своим возможностям даже для задач того времени. ПЛ/1, напротив, предоставлял богатый набор средств. Однако в СССР популярность ПЛ/1 была крайне высока и сопоставима с Фортраном.

Так, проект Multics, одна из первых попыток (для этой цели Burroughs чуть ранее около 1960 использовал Алгол ( B5000 и более поздние), причем там даже вовсе отсутствовал ассемблер) написать ОС на языке высокого уровня, использовал EPL (Early PL) — диалект ПЛ/1, разработанный в МТИ в 1964 году. Впоследствии для Multics был реализован «настоящий» ПЛ/1. Диалект XPL был использован для создания языка HAL/S, на котором программировались компьютеры космических кораблей проекта «Шаттл». Для ещё одного подмножества — PL/C — в Корнеллском университете был создан уникальный компилятор CORC, который мог скомпилировать программу с любыми синтаксическими ошибками, путём исправления многих ошибок и преобразования оставшихся в объектный код (это свойство в значительной степени присуще также компиляторам IBM). Первая система резервирования авиабилетов, SABRE, была написана (по крайней мере, её предполагалось написать) на ПЛ/1. Ещё одним диалектом ПЛ/1 был PL/S, на котором фирма IBM написала в начале 1970-х годах операционную систему MVS. IBM до сих пор использует усовершенствованный PL/S (который ныне известен как PL/X) для работы над системами семейства z/OS для IBM System z.

На базе ПЛ/1 был разработан язык PL/M, фактически представляющий собой приблизительный аналог языка Си с синтаксисом, близким к подмножеству ПЛ/1. Компилятор языка PL/M был разработан Гари Килдаллом, когда тот работал в Intel и использовался им для написания операционной системы CP/M и большинства программного обеспечения под CP/M и MP/M. Позже Гари Килдалл основал фирму Digital Research, которая продавала компилятор к PL/M для CP/M и MS-DOS, который сам был написан на PL/M. PL/M широко использовался для написания программного обеспечения к компьютерам, использовавшим интеловские процессоры 8080, 8085 и Z-80. Примерно в 1981 году Килдалл создал транслятор PL/I подмножества общего назначения (подмножество G) для процессора 8080, а затем и для 8086. Эти трансляторы под именами PL/I-80 и PL/I-86 до сих пор доступны в сети. Потомком PL/I-86 является отечественный транслятор PL/1-KT.

В СССР ПЛ/1 был весьма популярен в 1970-х и до первой половины 1990-х годов благодаря широкой распространённости ЕС ЭВМ, совместимых с мейнфреймами IBM. Кроме того, ПЛ/1 был реализован на БЭСМ-6 и Эльбрусе, но никаких их следов, увы, на сегодня не сохранилось.

ПЛ/1 был, вероятно, первым коммерческим языком, компилятор для которого писался на компилируемом языке. (Подобные экспериментальные языки были и раньше: например, NELIAC был разработан как минимум за 5 лет до ПЛ/1, и тот же Burroughs использовал Алгол для разработки своих компиляторов).

О странной судьбе языка PL/I как-то высказался известный специалист Норман Рэмси (Norman Ramsey):
Компиляторы PL/I не были предназначены для переносимости они были созданы сразу для IBM 360, которая должна была стать последним компьютером, в котором кто-либо когда-либо нуждался и IBM не собиралась догонять гораздо более простые, более легко переносимые языки на новых платформах.

Короче говоря:

– Никто, кроме IBM, не был заинтересован в успехе PL/I.

– IBM заботилась только о своих собственных мэйнфреймах.

– PL/I было ужасно трудно портировать на другое оборудование.

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

………….

Реализации

Хотя ПЛ/1 использовался в основном на мейнфреймах различных производителей, были также версии для операционных систем AIX, OS/2, OS/400, Windows, Unix и ряда других. В настоящее время фирма IBM предлагает компиляторы ПЛ/1 для платформ z/OS, MVS, VM, VSE, AIX, фирма Micro Focus — для платформ HP-UX, AIX, Windows, Solaris, Linux (SuSE, RedHat), фирма Fujitsu-Siemens — для платформы BS2000/OSD, фирма Kednos — для платформ OpenVMS и Tru64, фирма Stratus Technologies — для платформы VOS, фирма Raincode – для Windows, PL/1-KT – для Windows XP/7/8/10, фирма Iron Springs – для OS/2 и Linux.

Первый компилятор PL/I (F) от IBM (как и вся OS/360) и компилятор PL/C CORC в настоящее время имеют статус свободно распространяемого программного обеспечения.

Авторизация
*
*

2 × четыре =

Регистрация
*
*
*

семнадцать − 7 =

Генерация пароля

3 × 1 =

Перевести »
Прокрутить вверх
Scroll to Top