ПЛ/1

Поделись знанием:
Перейти к: навигация, поиск

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





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

Алфавит языка

Первоначальный алфавит ПЛ/1 включал 60 символов: $ @ # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + — * / () , . ' % ; : ¬ & | > < _ ? и пробел.

Была предусмотрена возможность работы и с более ограниченным 48-символьным алфавитом, в который не входили символы @ # ; : ¬ & | > < _ ? — вместо отсутствующих символов использовались дополнительные ключевые слова:[1]

60 символов : ; || > >= < <= ¬< ¬> ¬= ¬ | & ->
48 символов .. ,. CAT GT GE LT LE NL NG NE NOT OR AND PT

В современных версиях языка разрешено использовать также строчные латинские буквы (везде, кроме значений строк символов, строчные буквы эквивалентны прописным). Вместо символа ¬ (отрицание), отсутствующего в переносимом наборе символов, используют ~.

История ПЛ/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) крайне затрудняла оптимизацию.
  • Компиляторы языка ПЛ/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.

В СССР ПЛ/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, Windows, фирма Micro Focus — для платформ HP-UX, AIX, Windows, Solaris, Linux (SuSE, RedHat), фирма Fujitsu-Siemens — для платформы BS2000/OSD, фирма Kednos — для платформ OpenVMS и Tru64, фирма Stratus Technologies — для платформы VOS.

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

Пример программы

Test: procedure options(main);
   declare My_String char(20) varying initialize('Hello, world!');
   put skip list(My_String);
end Test;

То же самое можно написать гораздо короче:

Test: proc options (main);
  put list ('Hello, world!');
end;

Напишите отзыв о статье "ПЛ/1"

Примечания

  1. [www.osdata.com/topic/language/pli.htm PL/I Programming Language One]

Литература

  • ANSI X3.53-1976 (R1998) Information Systems — Programming Language — PL/I
  • ANSI X3.74-1987 (R1998) Information Systems — Programming Language — PL/I General-Purpose Subset
  • [www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=12406 ISO 6160:1979 Programming languages — PL/1]
  • [www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=12907 ISO/IEC 6522:1992 Information technology — Programming languages — PL/1 general purpose subset]

Ссылки

  • [schools.keldysh.ru/sch444/MUSEUM/LANR/pl.htm PL/I] в Виртуальном музее информатики
  • [www.users.bigpond.com/robin_v/pli_faq.htm FAQ по ПЛ/1] (англ.)
  • [www-306.ibm.com/software/awdtools/pli/ Официальный сайт на сервере IBM] (англ.)
  • [www.microfocus.com/products/OpenPLI/index.asp Компилятор Open PL/I] (англ.)
  • [pl1gcc.sourceforge.net/ pl1gcc.sourceforge.net] (англ.) — фронтэнд PL/1 для GNU Compiler Collection


Отрывок, характеризующий ПЛ/1

Когда человек находится в движении, он всегда придумывает себе цель этого движения. Для того чтобы идти тысячу верст, человеку необходимо думать, что что то хорошее есть за этими тысячью верст. Нужно представление об обетованной земле для того, чтобы иметь силы двигаться.
Обетованная земля при наступлении французов была Москва, при отступлении была родина. Но родина была слишком далеко, и для человека, идущего тысячу верст, непременно нужно сказать себе, забыв о конечной цели: «Нынче я приду за сорок верст на место отдыха и ночлега», и в первый переход это место отдыха заслоняет конечную цель и сосредоточивает на себе все желанья и надежды. Те стремления, которые выражаются в отдельном человеке, всегда увеличиваются в толпе.
Для французов, пошедших назад по старой Смоленской дороге, конечная цель родины была слишком отдалена, и ближайшая цель, та, к которой, в огромной пропорции усиливаясь в толпе, стремились все желанья и надежды, – была Смоленск. Не потому, чтобы люди знала, что в Смоленске было много провианту и свежих войск, не потому, чтобы им говорили это (напротив, высшие чины армии и сам Наполеон знали, что там мало провианта), но потому, что это одно могло им дать силу двигаться и переносить настоящие лишения. Они, и те, которые знали, и те, которые не знали, одинаково обманывая себя, как к обетованной земле, стремились к Смоленску.
Выйдя на большую дорогу, французы с поразительной энергией, с быстротою неслыханной побежали к своей выдуманной цели. Кроме этой причины общего стремления, связывавшей в одно целое толпы французов и придававшей им некоторую энергию, была еще другая причина, связывавшая их. Причина эта состояла в их количестве. Сама огромная масса их, как в физическом законе притяжения, притягивала к себе отдельные атомы людей. Они двигались своей стотысячной массой как целым государством.
Каждый человек из них желал только одного – отдаться в плен, избавиться от всех ужасов и несчастий. Но, с одной стороны, сила общего стремления к цели Смоленска увлекала каждою в одном и том же направлении; с другой стороны – нельзя было корпусу отдаться в плен роте, и, несмотря на то, что французы пользовались всяким удобным случаем для того, чтобы отделаться друг от друга и при малейшем приличном предлоге отдаваться в плен, предлоги эти не всегда случались. Самое число их и тесное, быстрое движение лишало их этой возможности и делало для русских не только трудным, но невозможным остановить это движение, на которое направлена была вся энергия массы французов. Механическое разрывание тела не могло ускорить дальше известного предела совершавшийся процесс разложения.
Ком снега невозможно растопить мгновенно. Существует известный предел времени, ранее которого никакие усилия тепла не могут растопить снега. Напротив, чем больше тепла, тем более крепнет остающийся снег.
Из русских военачальников никто, кроме Кутузова, не понимал этого. Когда определилось направление бегства французской армии по Смоленской дороге, тогда то, что предвидел Коновницын в ночь 11 го октября, начало сбываться. Все высшие чины армии хотели отличиться, отрезать, перехватить, полонить, опрокинуть французов, и все требовали наступления.
Кутузов один все силы свои (силы эти очень невелики у каждого главнокомандующего) употреблял на то, чтобы противодействовать наступлению.
Он не мог им сказать то, что мы говорим теперь: зачем сраженье, и загораживанье дороги, и потеря своих людей, и бесчеловечное добиванье несчастных? Зачем все это, когда от Москвы до Вязьмы без сражения растаяла одна треть этого войска? Но он говорил им, выводя из своей старческой мудрости то, что они могли бы понять, – он говорил им про золотой мост, и они смеялись над ним, клеветали его, и рвали, и метали, и куражились над убитым зверем.
Под Вязьмой Ермолов, Милорадович, Платов и другие, находясь в близости от французов, не могли воздержаться от желания отрезать и опрокинуть два французские корпуса. Кутузову, извещая его о своем намерении, они прислали в конверте, вместо донесения, лист белой бумаги.
И сколько ни старался Кутузов удержать войска, войска наши атаковали, стараясь загородить дорогу. Пехотные полки, как рассказывают, с музыкой и барабанным боем ходили в атаку и побили и потеряли тысячи людей.
Но отрезать – никого не отрезали и не опрокинули. И французское войско, стянувшись крепче от опасности, продолжало, равномерно тая, все тот же свой гибельный путь к Смоленску.



Бородинское сражение с последовавшими за ним занятием Москвы и бегством французов, без новых сражений, – есть одно из самых поучительных явлений истории.
Все историки согласны в том, что внешняя деятельность государств и народов, в их столкновениях между собой, выражается войнами; что непосредственно, вследствие больших или меньших успехов военных, увеличивается или уменьшается политическая сила государств и народов.
Как ни странны исторические описания того, как какой нибудь король или император, поссорившись с другим императором или королем, собрал войско, сразился с войском врага, одержал победу, убил три, пять, десять тысяч человек и вследствие того покорил государство и целый народ в несколько миллионов; как ни непонятно, почему поражение одной армии, одной сотой всех сил народа, заставило покориться народ, – все факты истории (насколько она нам известна) подтверждают справедливость того, что большие или меньшие успехи войска одного народа против войска другого народа суть причины или, по крайней мере, существенные признаки увеличения или уменьшения силы народов. Войско одержало победу, и тотчас же увеличились права победившего народа в ущерб побежденному. Войско понесло поражение, и тотчас же по степени поражения народ лишается прав, а при совершенном поражении своего войска совершенно покоряется.
Так было (по истории) с древнейших времен и до настоящего времени. Все войны Наполеона служат подтверждением этого правила. По степени поражения австрийских войск – Австрия лишается своих прав, и увеличиваются права и силы Франции. Победа французов под Иеной и Ауерштетом уничтожает самостоятельное существование Пруссии.
Но вдруг в 1812 м году французами одержана победа под Москвой, Москва взята, и вслед за тем, без новых сражений, не Россия перестала существовать, а перестала существовать шестисоттысячная армия, потом наполеоновская Франция. Натянуть факты на правила истории, сказать, что поле сражения в Бородине осталось за русскими, что после Москвы были сражения, уничтожившие армию Наполеона, – невозможно.
После Бородинской победы французов не было ни одного не только генерального, но сколько нибудь значительного сражения, и французская армия перестала существовать. Что это значит? Ежели бы это был пример из истории Китая, мы бы могли сказать, что это явление не историческое (лазейка историков, когда что не подходит под их мерку); ежели бы дело касалось столкновения непродолжительного, в котором участвовали бы малые количества войск, мы бы могли принять это явление за исключение; но событие это совершилось на глазах наших отцов, для которых решался вопрос жизни и смерти отечества, и война эта была величайшая из всех известных войн…
Период кампании 1812 года от Бородинского сражения до изгнания французов доказал, что выигранное сражение не только не есть причина завоевания, но даже и не постоянный признак завоевания; доказал, что сила, решающая участь народов, лежит не в завоевателях, даже на в армиях и сражениях, а в чем то другом.
Французские историки, описывая положение французского войска перед выходом из Москвы, утверждают, что все в Великой армии было в порядке, исключая кавалерии, артиллерии и обозов, да не было фуража для корма лошадей и рогатого скота. Этому бедствию не могло помочь ничто, потому что окрестные мужики жгли свое сено и не давали французам.
Выигранное сражение не принесло обычных результатов, потому что мужики Карп и Влас, которые после выступления французов приехали в Москву с подводами грабить город и вообще не выказывали лично геройских чувств, и все бесчисленное количество таких мужиков не везли сена в Москву за хорошие деньги, которые им предлагали, а жгли его.

Представим себе двух людей, вышедших на поединок с шпагами по всем правилам фехтовального искусства: фехтование продолжалось довольно долгое время; вдруг один из противников, почувствовав себя раненым – поняв, что дело это не шутка, а касается его жизни, бросил свою шпагу и, взяв первую попавшуюся дубину, начал ворочать ею. Но представим себе, что противник, так разумно употребивший лучшее и простейшее средство для достижения цели, вместе с тем воодушевленный преданиями рыцарства, захотел бы скрыть сущность дела и настаивал бы на том, что он по всем правилам искусства победил на шпагах. Можно себе представить, какая путаница и неясность произошла бы от такого описания происшедшего поединка.