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

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

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

— Свободный синтаксис
— Ключевые слова и идентификаторы нечувствительны к регистру
— По умолчанию (в классических версиях для мейнфреймов — всегда) передача параметров по ссылке
— Поддержка сложных структур с объединениями (в терминологии языка Паскаль — записи с вариантами)
— Чрезвычайно развитая система встроенных типов данных (более тысячи!), при этом возможность неявных преобразований между большинством из них
— Несколько видов динамического выделения памяти
— Очень обобщённые операторы со многими вариантами синтаксиса
— Строго определённая семантика управляющих конструкций (например, оператор цикла определён через эквивалентные присваивания и go to и т. д.)
— Операции с массивами и их сечениями
— Развитый механизм исключительных состояний
— Поддержка на уровне языка мультизадачности и асинхронного ввода-вывода
— Поддержка на уровне языка сложных методов доступа для ввода-вывода
— Очень развитый препроцессор, фактически сам являющийся подмножеством ПЛ/1

История ПЛ/1

ПЛ/1 был разработан в IBM как часть системы System/360. До того IBM разработала несколько несовместимых компьютеров для разных целей: одни для научных, другие — для бухгалтерских приложений. Целью System/360 была разработка единой системы совместимых компьютеров, которые заменили бы все предыдущие модели и могли бы с успехом использоваться для любых задач.

Научные и бухгалтерские программы не только использовали разные компьютеры, но ещё и писались на разных языках: научные — на Фортране, бухгалтерские — в основном на Коболе. Целью ПЛ/1 было создание языка, подходящего для обоих типов приложений. Другой целью было добавление конструкций для структурного программирования, взятых из Алгола-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, напротив, предоставлял богатый набор средств.

Так, проект Multics, одна из первых попыток написать ОС на языке высокого уровня, использовал 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).

Реализации

Хотя ПЛ/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 в настоящее время имеют статус свободно распространяемого программного обеспечения.

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

восемнадцать − 5 =

или используйте социальную сеть:
Регистрация
*
*
*

18 − тринадцать =

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

четыре × один =

Перевести »
Пролистать наверх