Введение

Собственный системный язык программирования IBM

PL/S, сокращение от Programming Language/Systems, – "машинно-ориентированный" язык программирования, основанный на PL/I. Он был разработан IBM в конце 1960-х годов под названием Basic Systems Language (BSL) в качестве замены языка ассемблера во внутренних программных проектах; он поддерживал встроенный ассемблер и явный контроль над использованием регистров. Первыми проектами, реализованными на PL/S, были пакетная утилита IEHMOVE и опция совместного использования времени MVT, TSO. К 1970-м годам IBM переписывала свою флагманскую операционную систему на PL/S. Несмотря на частые просьбы пользователей выпустить PL/S для общего пользования, IBM отказывала, заявляя, что продукт является проприетарным. Компания опасалась, что открытый PL/S даст конкурентам – Amdahl, Itel (National Advanced Systems), Storage Technology Corporation, Trilogy Systems, Magnuson Computer Systems, Fujitsu, Hitachi и другим производителям PCM – конкурентное преимущество. Однако, несмотря на отказ предоставлять компилятор, IBM поставляла исходный код PL/S в составе больших частей операционной системы своим клиентам, многие из которых таким образом ознакомились с его чтением. Закрытый PL/S означал, что только IBM могла легко модифицировать и совершенствовать операционную систему. После PL/S появились PL/S II, PL/S III и PL/AS (Programming Language/Advanced Systems), а затем PL/X (Programming Language/Cross Systems). PL/DS (Programming Language/Distributed Systems) был тесно связанным языком, использовавшимся для разработки операционной системы DPPX, а PL/DS II – портом архитектуры S/370 для порта DPPX/370. С изменением рынка компьютеров и программного обеспечения, с уходом от мейнфреймов и MVS IBM, компания пересмотрела свою позицию и предложила текущие версии PL/S избранным клиентам (ISV через программу Developer Partner).

Компилятор Рэнд для PL/S

Компилятор Rand RL/S для языка PL/S от IBM был разработан в начале 1970-х годов Вычислительным центром Корпорации Rand в Санта-Монике, штат Калифорния. Он был реализован с использованием системы-генератора компиляторов XPL командой из трех программистов Rand (Р. Лоуренс Кларк, Джеймс С. Рейли и руководитель группы Дэвид Дж. Смит). Компилятор Rand RL/S был разработан независимо от IBM и без какой-либо помощи с её стороны. Использовались только общедоступная документация по PL/S, не защищенная авторским правом, и примеры исходного и сгенерированного ассемблерного кода PL/S из распространяемых исходных файлов IBM для операционной системы MVS. RL/S полностью совместим с языком IBM PL/S II. Это было обеспечено путем разбора десятков тысяч строк кода PL/S, написанного IBM и взятого из дистрибутивных файлов MVS. Ассемблерный код, созданный компилятором Rand RL/S, не идентичен коду, созданному компилятором IBM PL/S, но он функционально эквивалентен. Rand на протяжении долгого времени вносил вклад в компьютерные исследования и разработки (например, JOSS, графический планшет Rand, WYLBUR) и был одним из первых пионеров в определении и разработке сетевой технологии "коммутации пакетов" (Baran). Rand также был одним из первых узлов в сети Arpanet, предшественнице Интернета, созданной Министерством обороны. Интерес Rand к PL/S был обусловлен обширными модификациями, внесенными Вычислительным центром в операционную систему MVT от IBM, включая изменения для повышения производительности Arpanet на компьютере IBM 360. Поскольку MVT не обрабатывал сетевые прерывания достаточно быстро для обработки трафика Arpanet, был разработан "гипервизор", позволяющий обрабатывать прерывания Arpanet с помощью специально написанного кода, в то время как все остальные прерывания обрабатывались MVT. Когда IBM объявила о выпуске операционной системы MVS, Rand предложил себя в качестве ранней "бета"-площадки для этой операционной системы с намерением портировать гипервизор и другие модификации на MVS. Как хорошо известно, IBM, однако, отказалась предоставлять свой компилятор PL/S клиентам, утверждая, что это является значительным конкурентным преимуществом. Отсутствие компилятора означало, что ни конкуренты, ни клиенты не могли изменять код MVS на уровне исходного кода PL/S, а могли только изменять сгенерированный ассемблерный код. Однако изменения, внесенные на уровне сгенерированного ассемблера, легко устаревали, когда IBM изменяла исходный код PL/S и распространяла перегенерированный ассемблерный код. Это особенно касалось изменений в структурах данных, генерируемых PL/S. Поэтому Rand решила разработать собственную версию компилятора PL/S для достижения как оперативных целей, так и договорных обязательств. Компилятор RL/S был первоначально написан на PL/I, а затем преобразован в RL/S для повышения производительности. С небольшими ограничениями программы RL/S могли быть разработаны с использованием компилятора PL/I от IBM для предварительной обработки и отладки, а затем окончательный код компилировался RL/S. Язык и компилятор Rand RL/S были публично представлены в августе 1976 года на конференции Share, где участникам было распространено множество экземпляров Справочника по языку RL/S. IBM быстро отреагировала, заявив, что язык является "собственностью". Хотя Rand не признал своей вины в разработке RL/S, руководство Rand согласилось не распространять компилятор публично. Тем не менее, Rand продолжал использовать язык RL/S и компилятор внутри для многих проектов.

"Развития" Фудзицу

В конце 1970-х годов компанией Fujitsu Ltd был "разработан" полностью совместимый компилятор PL/S, который был создан на основе исходного кода компилятора IBM PL/I Optimizer. Этот компилятор PL/S использовался внутри компании Fujitsu, а также её внешними аффилированными лицами. Неизвестно, знала ли IBM об этом нелицензионном использовании её лицензионной интеллектуальной собственности. Названия фаз этого компилятора PL/S соответствовали названиям фаз компилятора IBM PL/I Optimizer, при этом начальная буква "I" (IBM) в каждом названии фазы была заменена на "J" (Япония). Все уведомления об авторских правах IBM (как для исходного, так и для объектного кода) были удалены из модулей, чтобы скрыть их истинное происхождение и правообладателя.