ПЛ/1
Материал из Википедии — свободной энциклопедии
ПЛ/1 (PL/I, Programming Language I — "Язык программирования номер один", (жарг.)Плюшкин/1) — разработанный в 1964 году язык программирования, созданный для научных, инженерных и бизнес-ориентированных вычислений. Он содержит такой широкий набор синтаксических конструкций и встроенных функций, что, вероятно, не существует ни одного компилятора, поддерживающего все возможности языка ПЛ/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 году. Компилятор к другому диалекту, PL/M, был разработан фирмой Intel и использовался ею для написания операционной системы CP/M и большинства программного обеспечения под CP/M и MP/M. Digital Research продала компилятор к PL/M, который сам был написан на PL/M. PL/M широко использовался для написания программного обеспечения к компьютерам, использовавшим интелевские процессоры 8080, 8085 и Z-80. Диалект XPL был использован для создания языка HAL/S, на котором программировались компьютеры космических кораблей проекта "Шаттл". Для ещё одного подмножества — PL/C — в Корнелльском университете был создан уникальный компилятор CORC, который мог скомпилировать программу с любыми синтаксическими ошибками, путём исправления многих ошибок и преобразования оставшихся в объектный код. Первая система резервирования авиабилетов, SABRE, была написана (по крайней мере, её предполагалось написать) на ПЛ/1. Ещё одним диалектом ПЛ/1 был PL/S, на котором фирма IBM написала в начале 1970-х операционную систему MVS. IBM до сих пор использует усовершенствованный PL/S (который ныне известен как PL/X) для работы над системами семейства z/OS для ЭВМ System/z.
В СССР ПЛ/1 также был популярен в 1970-х и первой половине 1980-х гг. благодаря широкой распространённости компьютеров ЕС, совместимых с IBM System/360 (ряд-1) и System/370 (ряд-2) и использовавших системы OS/360 и OS/370, называвшиеся в СССР ОС ЕС. Кроме того, ПЛ/1 был реализован на БЭСМ-6 [2].
ПЛ/1 был, вероятно, первым коммерческим языком, компилятор для которого писался на компилируемом языке. (Подобные экспериментальные языки были и раньше: например, NELIAC был разработан как мнинимум за 5 лет до ПЛ/1, были и другие.)
Хотя ПЛ/1 использовался в основном на мейнфреймах, есть также версии для AIX, Windows и Unix.
[править] Пример программы
Test: procedure options(main);
declare My_String char(20) varying initialize('Hello, world!');
put skip list(My_String);
end Test;
[править] Ссылки
- www.russianenterprisesolutions.com/techno/pli.html(русск.) — статья «ПЛ/1, пли!», Сергей Бобровский, PC Week/RE, 1997
- schools.keldysh.ru/sch444/MUSEUM/LANR/pl.htm(русск.)
- www.users.bigpond.com/robin_v/pli_faq.htm(англ.) — FAQ по ПЛ/1
- www-306.ibm.com/software/awdtools/pli(англ.) — Официальный сайт на сервере IBM
- www.liant.us/open-pl1.html(англ.) — Проект «Open PL/1»
- pl1gcc.sourceforge.net(англ.) — фронтэнд PL/1 для GNU Compiler Collection
|
|
|
|---|---|
| Используемые в разработке | ABAP/4 | Ада | ActionScript | Ассемблеры | AutoIt | Awk | BASIC | C | COBOL | C++ | C# | ColdFusion | D | Delphi | Erlang | Forth | FoxPro | DataFlex | Фортран | Groovy | Haskell | Java | JavaScript | J++ | J# | Icon | Limbo | Лисп | Lua | Objective-C | Оберон | Oz | Паскаль | Perl | PHP | PL/I | Пролог | Руби | Python | Tcl | Scheme | Smalltalk | SQL | Vala | Visual DataFlex | Visual Basic | VB.NET | Visual FoxPro |
| Академические | АПЛ | Clean | Curry | Лого | MATLAB | ML | Scala |
| IEC61131-3 | Instruction List | ST | FBD | Ladder Diagram | SFC |
| Прочие | Алгол | Алгол 68 | Модула-2 | Miranda | Hope |
| Эзотерические | INTERCAL | Brainfuck | Befunge | Malbolge | Unlambda |
| список всех языков | |

