For faster navigation, this Iframe is preloading the Wikiwand page for PL/I.

PL/I

PL/I
パラダイム 構造化命令型
登場時期 1964年 (60年前) (1964)
開発者 IBM (Hursley)
型付け 強い静的型付け
主な処理系 コンパイラ
方言 PL/M, XPL, PL/P, PL/C, IBM PL/S, PL/AS, PL/X, PL/8, Early PL/I
影響を受けた言語 COBOLFORTRANALGOL
影響を与えた言語 SP/k, B, REXX, AS/400 Control Language
プラットフォーム z/OS, z/VM, z/VSE, AIX, Windows ほか
ライセンス プロプライエタリ(IPLA)
ウェブサイト IBM PL/I Compiler Family
テンプレートを表示

PL/I(ピーエルワン)は、汎用プログラミング言語の一つ。名前は英語の「programming language one」に由来する。

PL/Iは科学技術用、工業用、商業用などにデザインされた命令型プログラミング言語である。1964年に生まれ、教育機関、商用、工業で使用されてきた。

PL/Iの主要な用途はデータ処理で、再帰および構造化プログラミングに対応する。言語の構文は英語に似ており、検証や操作が可能な幅広い機能のセットを持ち、複合的なデータ型を記述することに適している。

呼称

[編集]

提案当時は「NPL」[注釈 1]と呼ばれていた。初期には「PL/1」と表記していたが、その後「PL/I」が正式名称となった(I はローマ数字)。同時期の「DL/I」(ディー・エル・ワン、IBMの階層型データベース照会言語)と同じネーミングと考えられる。

特徴

[編集]

言語としての特徴

[編集]
  • FORTRANの記述形式
  • COBOLのレコード構造や入出力機能
  • ALGOLのアルゴリズム記述能力

を同時に持っている。

予約語が無いのも特徴。

長所

[編集]
  • 商用計算と科学技術計算を、1つの言語で記述できる
  • 最初から構造化されている
  • 積み木構造(初歩的機能から入門し、徐々に高度な機能を学習できる)
  • IBMメインフレーム(OS/390z/OSIMSCICSなど)で広く使われている

短所

[編集]
  • 言語仕様が複雑で大規模なため、当時の小型機では性能的に厳しく、大型機以外に広まらなかった

歴史

[編集]

1963年 IBMとそのユーザー団体(SHARE)が提案

1965年 IBMが完成させた

1979年 ISOで標準化

科学技術計算向けのFORTRAN、ビジネス処理向けのCOBOLと言われていた時代に、ALGOL並のアルゴリズム記述能力も加え、ひとつの言語であらゆるニーズを満たすために開発されたプログラミング言語。

言語仕様が複雑なため、大型計算機以外では余り使われなかったが、デジタルリサーチ社のゲイリー・キルドールが、インテルのi8080のために、サブセット版のPL/M[注釈 2]および、一部をPL/Mで記述し、オペレーティングシステムCP/Mを作った。また、CP/M上で動作するPL/I(PL/I-80)も作成している。

UNIX開発のきっかけとなったMultics(のちにMulticsは「成功しなかったプロジェクト」と見なされることとなる)は、PL/Iで書かれていた。Multicsの失敗はPL/Iが原因ではなかったものの、記述言語においても簡潔極まるC言語を生んだ事は皮肉である。これについてはエピソードも参照のこと。

2016年時点でも、メインフレームで稼働する銀行の勘定系システムの多くはCOBOLまたはPL/Iで記述されている[1]

エピソード

[編集]

IBMのPL/Iコンパイラでは、メッセージIDが「IBM」で始まる。IBMが当時PL/Iに力を入れていたためと言われている。

BSDがネットワークサポートの一環としてカーネルにネットワークインタフェース構造体を導入した際、これをstruct ifnetと名付けた。その際、コメントとしてWould like to call this struct ``if'', but C isn't PL/1.(この構造体をstruct ``if''と呼びたいところだが、C言語はPL/1ではない。)が添えられた。[2]

コードの実例

[編集]
HELLO:PROC OPTIONS(MAIN);
 DCL HELLO1        CHAR(12)  INIT('HELLO WORLD!');
 DCL 1 HELLO2,
      2 HELLO2_1   CHAR(12)  INIT('HELLO WORLD!');
 DISPLAY('HELLO WORLD!');
 DISPLAY(HELLO1);
 DISPLAY(HELLO2);
END HELLO;

関連項目

[編集]

脚注

[編集]

注釈

[編集]
  1. ^ 英語「new programming language」に由来する名前。
  2. ^ 英語「programming language for microcomputers」に由来する名前。

出典

[編集]
  1. ^ FinTech時代の今、COBOLやPL/I、メインフレームが勘定系システムで必要な理由 - atmarkIT
  2. ^ Make struct ifnet readable and comprehensible again by grouping”. GitHub. FreeBSD (2013年11月1日). 2024年8月21日閲覧。 本文にある当該コメントが削除されたコミット。

外部リンク

[編集]
{{bottomLinkPreText}} {{bottomLinkText}}
PL/I
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?