GEORGE(プログラミング言語)

GEORGE(General Order Generator)は、1957年にチャールズ・レナード・ハンブリンによって発明されたプログラミング言語です。[1] [2] [3] [4]算術演算用にプッシュダウンポップアップスタックを中心に設計され、逆ポーランド記法を採用していました。[5]この言語には、ループサブルーチン条件文ベクトル行列が含まれていました。

説明

代数式は逆ポーランド記法で書かれました。つまり、は と書かれ、減算、乗算、除算などの他の算術演算についても同様でした。a b +

代数式は と記述され、ここで ' ' は「値を複製する」ことを意味します。a x dup × × b x × + c +dup

逆ポーランド語形式に従って、式を評価する割り当てステートメントはと記述されますa x dup × × b x × + c + (y)

コンピュータは式を次のように評価しました。 の値がアキュムレータ スタックの先頭にプッシュされ、 ' 'aにより最上位の値 ( ) のコピーがアキュムレータ スタックの先頭にプッシュされました。 乗算 ( ) により、上位 2 つの値、つまり、およびが削除 (ポップ) されて乗算され、積がアキュムレータ スタックの先頭に戻されます。2 回目の乗算 ( ) により、スタックの上位 2 つの値 (つまり、および) がポップされて乗算され、積 ( ) がアキュムレータ スタックの先頭にプッシュされました。式の残りのコンポーネントについても同様の処理が行われます。最後の操作 ( ) により、アキュムレータ スタックの状態を変更せずに式の値がストレージに返されました。xdupx×xx×ax**2a×x**2y

アキュムレータ スタックの一番上の値がすぐに必要ではないと仮定すると、その値は演算子 ( ;) を使用して削除 (クリア) されます。

次のプログラムは 8 つの値を読み取り、その合計を計算します。

0,1、8回繰り返し(j) R +](P)
最初の行は、値ゼロをアキュムレータ スタックの先頭にプッシュして合計を初期化します。
2 行目はループを導入し、「for 1 to 8 repeat for j」と発音され、角括弧で終了します。
3 行目では、R によって 1 つの数値が読み込まれ、アキュムレータ スタックの先頭にプッシュされます。プラス記号 (+) によってその値が (部分的な) 合計に加算され、アキュムレータ スタックの先頭には部分的な合計だけが残ります。
ループが終了した後、(P) によって最終的な合計がカードに打ち込まれます。

ベクトルと行列の操作には添字表記が必要です。GEORGEでは、添字はベクトルまたは行列の名前の前に付きます。したがって、A(j)は と表記されます。次のプログラムは、10個の値を持つベクトルaj | Aを読み込み、それらの値の平方を計算し、最後にそれらの値を出力します。

1、10 R1(a)1、10回繰り返し(j) j | a 重複 * j | (a) ;]1、10 P1(a)
プログラムの最初の行は、10個の値をa(1)からa(10)に読み込むベクトル読み取りです。
2 行目では、j の 10 個の値を実行するループが導入されています。
3行目はa(j)を取り出し、それを複製し、その2つの値を掛け合わせて平方根を求め、その結果をa(j)に格納します。セミコロン(;)は、アキュムレータスタックの先頭エントリをクリア(キャンセル)することに注意してください。これを行わないと、アキュムレータは徐々に値の平方根でいっぱいになってしまいます。
最後の行は、10 個の正方形を書き出すためのベクトル パンチ (つまり、印刷) です。
GEORGEコーディング表[6]
1234567815
0/0161つのq(ア)(問)ログR
1//117br(イ)(右)経験(P)
2;218cs(ハ)(秒)捕虜
3*319dt(エ)(トン)レム
4420eあなた(ホ)(う)平方根
5+]521fv(女性)(動詞)
6-622グラム(グ)(わ)コス
7×723h×(h)(×)
8÷担当者824y(私)(ヤ)R1
9否定925jz(じゅ)(z)P1
10モッド1026α(ク)(α)R11
11最大1127lβ(左)(β)P11
12重複1228メートルγ(メートル)(γ)
13回転1329nλ(名詞)(λ)
141430Θμ(Θ)(μ)
15>1531pω(p)(ω)

上記の GEORGE コーディング テーブルは、プログラムをパンチ カードに転記する際に役立ちました。

条件付き操作は、次のようにジャンプとして記述されます。if a > 0 go to 5(aが0より大きい場合はラベル5に転送)は次のように記述されます。

0 a > 5 ↑

ラベル5はプログラムの他の場所に*5を含めることで示されました。無条件転送は5↑と記述されました。

サブルーチンの呼び出しは下矢印で行われました。たとえば、ラベル 17 のサブルーチンを呼び出すには、17↓ と記述します。ここで、ラベル 17 は上記の表の列 3 を使用してエンコードされています。

歴史的注記

1957 年 5 月までにEnglish Electric DEUCEで実行された最初のバージョンでは、すべての値が 16 の 2 進数の位置を持つ 32 ビット ワードの 2 進固定小数点形式で保存されていました。

1958 年に導入された 2 番目のバージョンでは、値は浮動小数点形式で保持され、ワー​​ドごとに 1 つの値 (仮数部に 22 ビット、指数部に 10 ビット) が割り当てられました。

当時の印刷機器ではアルファベット 26 文字、小数点、プラス記号、マイナス記号、スラッシュしか印刷できなかったため、何らかの形式のコード表が必要でした。

参考文献

  1. ^ ハンブリン、チャールズ・レナード(1957年5月) 「数学表記法(Typescript)に基づくアドレスレスコーディング方式」ニューサウスウェールズ工科大学{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
  2. ^ ハンブリン、チャールズ・レナード(1957年6月)。「数学的表記法に基づくアドレスレス符号化方式」。第1回オーストラリアコンピューティングおよびデータ処理会議議事録。南オーストラリア州ソールズベリー:兵器研究施設
  3. ^ ハンブリン、チャールズ・レナード(1957). 「コンピュータ言語」.オーストラリア科学ジャーナル(20?): 135–139 ; ハンブリン、チャールズ・レナード(1985年11月)「コンピュータ言語」オーストラリアコンピュータジャーナル(再版)17(4):195-198
  4. ^ Hamblin, Charles Leonard (1958). GEORGE IA and II: A semi-translation programming scheme for DEUCE: Programming and Operation Manual (PDF) . School of Humanities, University of New South Wales, Kensington, New South Wales. 2020年4月4日時点のオリジナルよりアーカイブ(PDF) . 2020年7月27日閲覧
  5. ^ Beard, Bob (1997年秋) [1996年10月1日]. 「KDF9コンピュータ — 30年後」(PDF) . Resurrection - The Bulletin of the Computer Conservation Society . No. 18. Computer Conservation Society (CCS). pp.  7– 15. ISSN 0958-7403. 2020年7月27日時点のオリジナルより アーカイブ(PDF) . 2020年7月27日閲覧[…] KDF9は、1960年に発表された最初のゼロアドレス命令形式のコンピュータであると考えられているため注目に値します。これは、アメリカのもう一つの有名なゼロアドレスコンピュータであるBurroughs B5000とほぼ同時期 (1963年初頭) に初めて出荷されました。多くの現代のポケット電卓と同様に、ゼロアドレスマシンでは逆ポーランド演算を使用できます。これはコンパイラ作成者に一定の利点をもたらす。イングリッシュ・エレクトリック社のチームがゼロアドレス概念に初めて注目したのは、1950年代後半、オーストラリアのニューサウスウェールズ工科大学のデュースコンピュータ用に書かれたオートコードプログラミングシステム、ジョージ(General Order Generator)との接触がきっかけだったと考えられている。ジョージは逆ポーランド語を使用しており、KDF9チームはメインストアへのアクセスを最小限に抑えることでパフォーマンスを向上させたいという実用的な理由からこの規則に惹かれた。これは、バロウズが独自に採用したより「理論的な」考え方とは対照的かもしれない。ゼロアドレスコンピュータの基本メカニズムであるハードウェアネストストアまたはスタックの他に、KDF9にはパフォーマンスを向上させるための他の中央レジスタ群があり、興味深い内部構造を与えていた。[…][1] (注:これは1996年10月1日に英国マンチェスターの科学産業博物館で行われた協会の北西グループ向けの講演を編集したものです。)
  6. ^ プログラミングコース.ニューサウスウェールズ大学電気工学部. ndp 24.
「https://en.wikipedia.org/w/index.php?title=GEORGE_(programming_language)&oldid=1321195437」より取得