PL/I
テンプレート:プログラミング言語 PL/I(ピーエルワン)は、汎用プログラミング言語の一つ。名前は英語の「programming language one」に由来する。
PL/Iは科学技術用、工業用、商業用などにデザインされた命令型プログラミング言語である。1964年に生まれ、多くの教育機関、商用、工業で使用され、2011年現在も使われている。
PL/Iの主要な用途はデータ処理で、再帰および構造化プログラミングをサポートする。言語の構文は英語に似ており、検証や操作が可能な幅広い機能のセットを持ち、複合的なデータ型を記述することに適している。
呼称
提案当時は「NPL」[1]と呼ばれていた。初期には「PL/1」と表記していたが、その後「PL/I」が正式名称となった(I はローマ数字)。同時期の「DL/I」(ディー・エル・ワン、IBMの階層型データベース照会言語)と同じネーミングと考えられる。
特徴
言語としての特徴
を同時に持っている。
予約語が無いのも特徴。
長所
- 商用計算と科学技術計算を、1つの言語で記述できる
- 最初から構造化されている
- 積み木構造(初歩的機能から入門し、徐々に高度な機能を学習できる)
- IBMメインフレーム(OS/390、z/OS、IMS、CICSなど)で広く使われている
短所
- 言語仕様が複雑で大規模なため、当時の小型機では性能的に厳しく、大型機以外に広まらなかった
歴史
1965年 IBMが完成させた
2009年現在でも、IBMメインフレーム上の業務処理では広く使われているが、今後の新規開発はJavaなどに移行していくと思われる。なお、国産メーカー系汎用機ではCOBOLが使われているケースが多い。
科学技術計算向けのFORTRAN、ビジネス処理向けのCOBOLと言われていた時代に、ALGOL並のアルゴリズム記述能力も加え、ひとつの言語であらゆるニーズを満たすために開発されたプログラミング言語。主としてIBMの大型機で利用された。
言語仕様が複雑なため、大型計算機以外では余り使われなかったが、デジタルリサーチ社のゲイリー・キルドールが、インテルのi8080のために、サブセット版のPL/M[2]および、一部をPL/Mで記述し、オペレーティングシステムCP/Mを作った。また、CP/M上で動作するPL/I(PL/I-80)も作成している。
UNIX開発のきっかけとなったMulticsは、PL/Iで書かれていた。Multicsの失敗はPL/Iが原因ではなかったものの、記述言語においても簡潔極まるC言語を生んだ事は皮肉である。
エピソード
IBMのPL/Iコンパイラでは、メッセージIDが「IBM」で始まる。IBMが当時PL/Iに力を入れていたためと言われている。
コードの実例
HELLO:PROC OPTIONS(MAIN);
DCL HELLO1 CHAR(12) INIT('HELLO WORLD!');
DCL 1 HELLO2,
2 * CHAR(12) INIT('HELLO WORLD!');
DISPLAY('HELLO WORLD!');
DISPLAY(HELLO1);
DISPLAY(HELLO2);
END HELLO;