| 開発者 | Stephen Bourne、Michael Guy、Andrew D. Birrell、Ian Walker、Chris Cheney 他 |
|---|---|
| 初回リリース | 1970年頃 |
| 安定版リリース | 1.3039 / 2013年3月3日 |
| 書かれた | アルゴル68 |
| オペレーティング·システム | IBM 360、370など、MVTまたはMVSを実行するメインフレーム(またはエミュレーション) |
| タイプ | 編集者、翻訳者 |
| Webサイト | 出典: bitbucket.org |
ALGOL 68Cは命令型 コンピュータプログラミング 言語であり、 ALGOL 68の方言で、 Cambridge Algebra System (CAMAL)をプログラムするためにStephen R. BourneとMichael Guyによって開発されました。最初のコンパイラは、ケンブリッジの JH Mathewman によって実装された Princeton Syntax Compiler (PSYCO、Edgar T. Irons 作) で書かれました。
ALGOL 68Cは、1971年にケンブリッジ大学の能力ベースセキュリティ CAPコンピュータのCHAOS OSに使用されました。他の初期の貢献者には、Andrew D. Birrell [1]とIan Walkerがいました。
その後の作業は、1975年にBourneがケンブリッジ大学を去った後にコンパイラに対して行われました。ガベージコレクションが追加され、コードベースはHerculesを使用してエミュレートされたOS/MVT上で現在も実行されています[説明が必要]。
ALGOL 68C コンパイラは、レジスタベースの中間言語であるZCODEで出力を生成し、それをネイティブ実行ファイルに解釈またはコンパイルすることができました。ZCODE を解釈またはコンパイルするこの機能により、ALGOL 68C はさまざまなコンピューティング プラットフォームに移植されました。CAPコンピュータ以外にも、このコンパイラは会話型モニター システム(CMS)、TOPS-10、Zilog Z80などのシステムに移植されました。
大衆文化
このコンパイラの非常に初期の前身は、ガイとボーンがDEC 340ディスプレイを搭載したPDP-7上で最初のライフゲームプログラムを書くために使用されました。 [2] [3]
Liverpool Software Gazette のさまざまな号に、Z80 の実装の詳細が記されています。コンパイラを実行するには約 120 KB のメモリが必要でした。そのため、Z80 の 64 KB のメモリは、コンパイラを実行するには実際には小さすぎます。そのため、Z80 用の ALGOL 68C プログラムは、より大型のCAP コンピュータ、またはIBM System/370メインフレーム コンピュータからクロスコンパイルする必要がありました。
Algol 68C と Unix
その後、Stephen Bourne はALGOL 68の、および句を一般的なUnix Bourne シェルで再利用しましたが、の構文は変更され、削除され、に置き換えられました( odユーティリティとの競合を避けるため)。
if ~ then ~ else ~ ficase ~ in ~ out ~ esacfor ~ while ~ do ~ od inoutoddone
ケンブリッジ大学卒業後、ボーン氏はベル研究所でバージョン 7 Unix (第 7 版 Unix) チームに9 年間在籍しました。ボーン シェルの開発に加え、ALGOL 68C を DEC PDP-11-45上の Unix に移植し、ALGOL 68C で書かれたプログラムのスタック バックトレースを取得するために、Unixデバッガ Advanced Debugger (adb)に特別なオプションを追加しました。以下は、Unix 第 7 版のマニュアル ページからの抜粋です。[4]
名前
adb - デバッガー
概要
adb [-w] [objfil [corfil] ]
[...]
コマンド
[...]
$修飾子
その他のコマンド。使用可能な修飾子
は:
[...]
ALGOL 68スタックバックトレース。アドレスが
与えられた場合、それは次の住所とみなされます
現在のフレーム(r4ではなく)カウント
指定された場合は最初のcountフレームのみ
印刷されます。
ALGOL 68C の ALGOL 68 への拡張
以下は注目すべき拡張機能の例です: [5]
- 任意の演算子に対して自動op
*:=:= を実行します。例: and+:= UPTO、DOWNTOおよびUNTILループ節内。- 変位演算子 (
:=:=) ANDF、ORFおよびTHEF構文要素。- 別個のコンパイル -
ENVIRON節とUSING節 - スコープはチェックされていません
- 形式宣言子の境界
CODE...EDOC句 - ZCODEを埋め込むための
および節ENVIRONUSING
ENVIRONALGOL 68C での個別コンパイルは、および節を使用して行われますUSING。はENVIRON、それが出現した時点で完全な環境を保存します。USING節で始まる個別のモジュールは、 節が出現した時点で最初のモジュールに効果的に挿入されますENVIRON。
ENVIRON従来のライブラリ メカニズムが暗示する
ボトムアップスタイルとは対照的に、トップダウン スタイルのプログラミングに役立ちUSINGます。
これらの句は、C プログラミング言語の#includeやPythonのimportの逆のようなものです。このメカニズムの目的は、プログラム ソースを管理しやすいサイズの断片に分割できるようにすることです。Cプログラミング言語の#includeでは、インクルードファイルをそれを含むソース ファイルごとに解析する必要がありますが、これとは異なり、共有ソース ファイルを解析する必要があるのは 1 回だけです。
ENVIRON
ENVIRON条項の例
mylib.a68というファイル:
始める INT dim = 3; # 定数 # INT 数値 := 120; # 変数 # 環境例1; MODE MATRIX = [dim, dim]REAL; # 型定義 # マトリックスm1; 数値 := ENVIRON Examples2; print((数値)) 終わり
USING条項の例
usemylib.a68というファイル:
「mylib」からの例2を使用する 始める MATRIX m2; # 例のみ # print((a number)); # mylib.a68 で宣言 # print((2 UPB m1)); # mylib.a68 でも宣言されています # ENVIRON の例3; # ENVIRON はネストできます # 666 終わり
標準ALGOL 68からの言語の制限
- ALGOL 68 FLEXと可変長配列なし
MODE STRINGFLEXなしで実装- PAR並列句は実装されていません
- 非標準トランスプット
- その他...
ALGOL 68C のトランスレータ コンパイラは、PDP-10、IBM System/360、およびその他のいくつかのコンピュータで使用できました。
参考文献
- ^ Birrell, Andrew D. (1977 年 12 月)。「高水準言語によるシステムプログラミング」(PDF)。哲学博士号取得のために提出された論文。ケンブリッジ大学。2007年 4 月 22 日閲覧。
- ^ 「アイテムの詳細: Digital Equipment Corporation モデル 340」。オーストラリアコンピュータ博物館協会 (ACMS)。AceWare Web ホスティング。2020年 4 月 17 日閲覧。[永久リンク切れ ]
- ^ Gardner, Martin (1970 年 10 月)。「ジョン・コンウェイの新しいソリティアゲーム「ライフ」の素晴らしい組み合わせ」(PDF)。数学ゲーム。サイエンティフィック・アメリカン。第 223 号。120 ~ 123 ページ。
このような長寿の集団の場合、コンウェイは変化を観察できる画面付きの PDP-7 コンピューターを使用することがあります [...] このプログラムは MJT Guy と SR Bourne によって作成されました。このプログラムの助けがなければ、このゲームに関するいくつかの発見は困難だったでしょう。
- ^ 「モジュラー マニュアル ブラウザー: Adb」。UnixDev.net。2016年 3 月 3 日時点のオリジナルよりアーカイブ。2020 年 4 月 17 日閲覧。
- ^ Bourne, Stephen R. ; Birrell, Andrew D.; Walker, Ian (1975). ALGOL 68C リファレンスマニュアル. Cambridge University Computer Laboratory.
外部リンク
- 公式サイト
- Cambridge ALGOL 68: コンピュータ言語の歴史的一覧 – 10 件以上の出版物の参考文献が含まれています。
- ALGOL 68C の移行 – PJ Gardner、エセックス大学 – 1977 年 3 月 (370 から DECsystem-10 へ)
- MVS 上で ALGOL 68C を実行する - エミュレートされた MVS システムに ALGOL 68C をインストールする方法
