| インプ | |
|---|---|
| パラダイム | マルチパラダイム:手続き型、命令型、構造化、拡張可能 |
| 家族 | アルゴル |
| デザイン: | エドガー・T・アイアンズ |
| 開発者 | 国家安全保障局 |
| 初登場 | 1965 (1965年) |
| 安定版リリース | IMP72 / 1972 (1972年) |
| タイピングの規律 | 静的、強い |
| 範囲 | 語彙 |
| 実装言語 | アルゴル60 |
| プラットフォーム | CDC 6600、クレイ、PDP-10、PDP-11 |
| OS | COS、SCOPE、TOPS-10、Unix、その他 |
| ライセンス | 独自の |
| 主要な実装 | |
| IMP65、IMP70、IMP72 | |
| 影響を受けた | |
| アルゴル60 | |
IMPは、1960年代後半から1970年代初頭にかけて、国家安全保障局(NSA)でエドガー・T・アイアンズによって開発された初期のシステムプログラミング言語です。他の多くのシステム言語とは異なり、IMPは構文拡張可能なプログラミングをサポートしています。
設計者はこの言語を「 ALGOLベース」と呼んでいますが、IMP では ALGOL 言語の特徴の多くを除外し、 ALGOL とはまったく異なる機能である構文拡張性をサポートしています。
IMP 用のコンパイラは1965 年にはすでに存在し、 1967 年から国防分析研究所で使用されていたCDC 6600タイムシェアリング システムのプログラミングに使用されていました。このコンパイラは、拡張不可能な言語用の同等のコンパイラよりも遅いものの、実用的な製品開発に使用されてきました。
IMPコンパイラは、CDC 6600、Cray、PDP-10、PDP-11コンピュータ用に開発されました。重要なIMPバージョンはIMP65、IMP70、IMP72です。
IMP72の拡張可能な構文
IMPは拡張可能な構文プログラミング言語であるため、プログラマーが構文を拡張することができますが、新しいデータ型や構造を追加するための具体的な手段は提供されていません。構文拡張性を実現するために、IMPは構文グラフと複数の接続行列に基づく強力な解析アルゴリズムを使用しています。プログラマーは、新しいバッカス・ナウア記法(BNF)構文を構文グラフに追加することができます。
IMP72の構文は、ソースコードプログラムに含まれる拡張BNF構文文によって拡張されます。このメカニズムは非常に強力であるため、言語自体の実装、つまり構文文のみで構成されたIMP72ソースファイルを単純なコンパイラに入力することで、最も単純な構文文を翻訳することが可能です。また、一般ユーザーには マクロのように見える単純な構文文も存在します。
基本的に、構文ステートメントは、右側に 関連するセマンティクスが追加された拡張 BNF 生成物です。
<クラス> :: =構文部分:: =意味部分たとえば、次の BNF で記述された構造を追加するには:
< EXP > :: = INCREMENT < VBL > INCREMENT Vを に変換するセマンティクスを使用する場合V ← V + 1、プログラマは次のIMP ステートメントを挿入するだけで済みます。
< EXP > :: = INCREMENT < VBL , A > :: = "A←A+1"セマンティック部分には、次の構文ステートメントのように、 セマンティック ルーチンへの呼び出しを含めることもできます。
< ATOM > :: = ABS ( < ATOM , A > ) :: = DEWOP ( 214 B , AREG1 ( 1 , 13 ) , A )この文のセマンティック部分は、セマンティックルーチン の呼び出しから構成されますDEWOP。引数は、8進定数214B、セマンティックルーチン呼び出しAREG1(1,13)、および でA、これは、この生成物が呼び出された時点でスタックの先頭にあるオブジェクトです。DEWOPは、それぞれ PDP-10 マシン言語オペコード、レジスタオブジェクト、およびその他のオブジェクトを引数として受け取り、最後の引数であるオブジェクト をアドレスフィールドとして使用して指定されたマシン命令を実行した結果を値とするオブジェクトを生成するセマンティックルーチンです。この例では、オペコード が命令214Bを指定しているLoad Magnitudeため、上記の構文文の結果は の絶対値を計算するコードをコンパイルすることとなりますA。
フォークロアオペレーティングシステム
IMPは、NSAが独自に開発したタイムシェアリングオペレーティングシステム「Folklore」で使用されていた言語である。[ 1 ]
参照
- エディンバラIMP言語(コントラスト)
参考文献
- ^コッター、ジョージ. 「国家安全保障局における高性能コンピューティング」 .スーパーコンピューティングの最前線 II . カリフォルニア大学出版局. 2012年5月25日閲覧。
- Irons, Edgar T. (1970年1月). 「拡張可能な言語の経験」 . Communications of the ACM . 13 (1). Association for Computing Machinery : 31–40 . doi : 10.1145/361953.361966 . S2CID 17635545 .
- Bilofsky, Walter (1974年5月). 「構文拡張とIMP72プログラミング言語」. SIGPLAN Notices . 9 (5). Association for Computing Machinery : 13–30 . doi : 10.1145/987413.987416 . S2CID 2170981 – Yale University経由.
外部リンク
- PDP-10 IMP72 リファレンスマニュアル
- IMP72 ソース(dcus:[43,50306]*.*)