| パラダイム | 構造化された |
|---|---|
| デザイン: | ボーゲ・R・クリステンセン、ベネディクト・ロフステット |
| 初登場 | 1975 |
| タイピングの規律 | 強い |
| 影響を受けた | |
| BASIC、パスカル | |
COMAL ( Common Algorithmic Language ) は、デンマークの Børge R. Christensen と Benedict Løfstedt によって開発され、1975 年に最初にリリースされたコンピュータプログラミング言語です。これはBASICプログラミング言語をベースにしており、複数行のステートメントや明確に定義されたサブルーチンなどが追加されています。
COMAL はもともとミニコンピュータ用に書かれましたが、初期のマイクロコンピュータでも実行できるほど小さいものでした。8ビットの家庭用コンピュータで利用でき、快適に使用できる数少ない構造化プログラミング言語の 1 つです。
「COMALカーネル構文とセマンティクス」には言語の正式な定義が含まれています。[1]さらなる拡張は多くの実装に共通しています。[2] [3] [4]
歴史
ミニコンピュータのバージョン
COMALはもともとデンマークの数学教師ボーグ・R・クリステンセンによって開発されました。彼が教えていた学校は1972年にデータジェネラル社のNova 1200ミニコンピュータを導入し、学校でコンピュータサイエンスを教え始める予定でした。大学でこの分野の短期コースを受講していたクリステンセンは、プログラムを主導し、コンピュータシステムを維持することが期待されていました。[5]
NOVAにはData General Extended BASICが付属していたが、構造化されていない言語のせいで学生が読みにくく採点も難しい低品質のコードを書くことになり、クリステンセンはすぐに不満を抱くようになった。[5]コンピュータ科学者のベネディクト・レフステットにこれらの問題について不満を訴えていたレフステットは、クリステンセンに、当時新刊だったプログラミング言語設計に関するPascalの作者であるニクラウス・ヴィルトによるSystematic Programmingを読むように勧めた。クリステンセンは感銘を受けたが、 BASICを学生にとって開発しやすいものにした対話型シェルがないため、Pascalを直接使用できないことに気付いた。 [6]
その後6ヶ月間、クリステンセンとロフステットはメールでやり取りし、対話型要素はそのままに、パスカルの構造化要素を加えたBASICの代替案を設計した。[6] 1974年までに言語の定義は完了したが、クリステンセンは実装の開発にソフトウェア会社からの関心を引くことができなかった。その後6ヶ月間、彼はNOVA 1200マシン言語を教えていた2人の学生と協力して、自分たちで実装を書いた。最初に追加された機能の1つは、通常の1文字か2文字ではなく、8文字の変数名を使用できる機能だった。[6]その後、最初のバージョンに複数行のIF...THEN...ELSE...ENDIFステートメントと、そのPROC...ENDPROC定義とEXECUTE呼び出しステートメントが追加された。[7]
最初の概念実証実装(5行のループを実行)は1974年8月5日に準備が整い、最初のリリース(紙テープ)は1975年2月に準備が整いました。開発コストは約300米ドルでした。このときになって初めて、システム(以前はデンマーク語の内部名を使用していました)は、クリステンセンが実験していたALGOLに触発されて、 Common Algorithmic Language(共通アルゴリズム言語)の略であるCOMALと名付けられました。 [7]そのため、最初のリリースはCOMAL 75と名付けられました。クリステンセンはその後、この言語に関する教科書を執筆し、それがBeginning COMALに発展しました。[8]
マイクロコンピュータのバージョン
1978年、クリステンセンはCOMALをマイクロコンピュータで動作するように改造し始めた。マイクロコンピュータは普及しつつあったが、そのような実装がなければデンマークの学校が新しいマシンを導入したときに再びBASICを教えたり使用したりしなければならないのではないかと心配していた。1980年までに、大学のグループと共同で開発されたCOMALのバージョンはZilog Z80で動作できるようになり、COMAL 80がリリースされた。[7]
同じ頃、デンマークの企業が、当時としては非常に高性能なマイクロコンピュータである Comet を発表しました。これは、後の COMAL リリースに似たバージョンを実行する最初のマシンでした。その後、Christensen は 1980 年から 1981 年頃に COMAL 開発から手を引き、開発は Mogens Kjaer が設立した UniComal [9]などのグループに引き継がれました。Kjaer は Christensen に COMAL の批判の手紙を書き、その後リリース 0.14 でCommodore PETに移植しました。このとき、デンマークの学校は、購入するどのマイクロコンピュータでも COMAL が利用できることを強く主張しました。[8]
1980年代初頭、アップルコンピュータはアイルランドの中等学校にCP/MとCOMALを搭載したApple IIコンピュータを供給する契約を獲得した。 [10]これは教育用として人気があり[11]、いくつかの教科書はアイルランドで書かれた。[12] [13]
1984年、エイコーンソフトは、デビッド・クリステンセン、ジム・ワーウィック、デビッド・エヴァースによるCOMAL実装を、8ビットBBCマイクロおよびエイコーンエレクトロンコンピュータ向けにリリースした(ポール・クリステンセンとロイ・ソーントンによるマニュアル付き[14])。
1984 年から 1987 年にかけて、スウェーデンのテレコム システムの産業部門の子会社である TeleNova は、教育分野向けに「Compis 」と呼ばれるデスクトップ PC を製造しました。COMAL の拡張バージョンがこの PC の標準プログラミング言語として提供されました。CP /M-86とMS-DOSの両方のバージョンが作成されました。後者のバージョンはWindows XPで使用できます。(スウェーデン語の) リファレンス マニュアルはISBN 91-24-40022-Xです。
1990年、トーマス・ランディとロリー・オサリバンはCOMALプログラミングに関する決定的なテキストを出版しました。[13]彼らはCOMALとBBC Structured Basicを比較しました。
2016年現在、COMALは教育用プログラミング言語として積極的に使用されており、英国の一部の高校ではコンピューティングの科目を教えるために引き続き使用されています。[15]
説明
COMAL は、当時普及していた教育用プログラミング言語であるBASIC、Pascal、そして少なくともCommodoreおよびCompisバージョンではLogoのタートル グラフィックスを組み合わせて作成されました。この言語は、通常は BASIC が使用される環境に 構造化プログラミング要素を導入することを目的としていました。
初期のバージョンでは、言語に追加された主な機能は、IF...THEN のブロック バージョンと PROC 構造でした。BASIC の以前のバージョンのほとんどでは、ブロック構造は FOR...NEXT ループのみでした。たとえば、次のようになります。
10(I=1から10まで) 20 印刷物 I 30 J=J+1 40 次へ
この例では、ループを 10 回実行し、ループごとに 2 つの命令を実行します。対照的に、BASIC のその他のほとんどすべての命令、つまりステートメントは、1 行で実行する必要があります。このため、複数行のステートメントをすべてまたはまったく実行することが困難になる場合があります。たとえば、特定の値が 10 より大きい場合に 3 つの命令を実行するプログラムの場合、一般的な解決策は次のようになります。
10 A<=10 なら 50 20 「A は 10 より大きい」と印刷する 30 A=A+10 40 印刷 "A は現在 ";A 50 印刷物「通常番組に戻ります」
この種の構造はプログラムの真の意図を隠します。決定はプログラマーが実際に達成したいことの反対のロジックに基づいています。さらに、この場合に何が起こるかを理解するために、読者は 50 行目を見つける必要がありますが、実際のプログラムでは、これはソース コードのさらに奥にある可能性があります。これが、BASIC プログラムが「スパゲッティ コード」と呼ばれる主な理由の 1 つです。つまり、ロジックに従うと、一連のランダムなスパゲッティ ヌードルをたどるかのようにプログラム内を移動するからです。
COMAL はブロックを使用することでこの問題に対処します。同じ一連の命令を実行するには、COMAL で次のように記述します。
10 A>10の場合 20 「A は 10 より大きい」と印刷する 30 A=A+10 40 印刷 "A は現在 ";A 50 終了 60 印刷物「通常番組に戻ります」
この場合、著者は実際に達成しようとしている決定を書き、読者は を探すだけでロジックを追うことができますENDIF。これは、COMAL が先頭のスペースを使用してブロックを視覚的に示すことでサポートされています。
例
- "こんにちは世界!"
「HELLO, WORLD!」を印刷します。
- 条件
IF条件THEN命令ENDIF
- ループ
FOR number := 1 TO 1000 DO PRINT number ENDFOR
- 変数を含む文を印刷する
INPUT "あなたの好きな数字は何ですか?" : nmr# PAGE PRINT "あなたの好きな数字は" ; nmr#
可用性
COMAL は次の場合に使用可能です:
- BBCマイクロ
- Commodore PET (パブリック ドメイン ソフトウェア)
- Commodore 64 (パブリック ドメイン ソフトウェア)
- コモドール 128
- アミーガ
- コンピス/スカンディス
- CP/M
- IBMパソコン[9]
- ティキ100
- ZXスペクトラム
- グランディ・ニューブレイン
- ウィンドウズ
参照
参考文献
- ^ ライアン、ケビン。 「COMAL カーネル構文とセマンティクス」(PDF)。 Dansk Datahistorisk Forening 。2017 年11 月 8 日に取得。
- ^ Bain, Richard; Lindsay, Len. 「Common COMAL Definition and Tests」. COMAL Today (24): 21–46 . 2020年1月20日閲覧。
- ^ 「Common COMAL -- 互換キーワード」。COMAL Today (25): 28 。 2020年1月20日閲覧。
- ^ 「Common COMAL -- キーワード構文と例」。COMAL Today (25): 29–33 。 2020年1月20日閲覧。
- ^ ab Christensen 1985、p. 1を参照。
- ^ abc クリステンセン1985年、2ページ。
- ^ abc クリステンセン1985年、4ページ。
- ^ ab Christensen, Børge (1985年3月). 「COMALの物語」. COMAL Today (25): 1–10 . 2020年9月4日閲覧。
- ^ ab "UniComal 3.11 IBM PC". インターネットアーカイブ。1992年1月。 2021年4月1日閲覧。
- ^ Moynihan, Michael D. (1983年8月8日). 「COMALのアイルランドでの報道範囲」InfoWorld . 5 (32): 30 . 2017年11月15日閲覧。
- ^ Brady, Michael P. (1986年5月). The Design of a First Course in Programming (thesis). Loughborough, Leicester, UK: Loughborough University of Technology. hdl :2134/10392 . 2017年11月15日閲覧。
- ^ Kelly, John (1984). Foundations in Computer Studies with COMAL (Second ed.). Dublin, Ireland: The Educational Company . 2020年1月20日閲覧。
- ^ ab Lundy, Thomas; O'Sullivan, Rory (1990). BASIC と COMAL による構造化プログラミング入門. ダブリン、アイルランド: Gill and Macmillan. ISBN 978-0717116676。
- ^ Thornton, Roy; Christensen, Paul (1984). COMAL on the BBC Microcomputer and Acorn Electron SBD 19. Acornsoft. ISBN 978-0907876908。
- ^ Laine, Heather (2015年2月12日). 「Gracemount High School」. LiveCode . 2024年3月29日時点のオリジナルよりアーカイブ。2024年3月29日閲覧。
さらに読む
- Thomas Lundy & Rory O'Sullivan: BASIC と COMAL による構造化プログラミング入門、1990 年
- Roy Atherton: COMAL による構造化プログラミング。Horwood、Chichester 1982、ISBN 0-85312-416-7。
- Bramer, MA (1982). 「COMAL 80 - BASIC への構造の追加」. Computers & Education . 6 (2): 179–192. doi :10.1016/0360-1315(82)90031-8. ISSN 0360-1315.
- ボーゲ・R・クリステンセン:コーマルの始まり。ホーウッド、チチェスター、1982 年、ISBN 0-85312-435-3。
- Børge R. Christensen: COMAL リファレンス ガイド。トロント PET ユーザー グループ、オンタリオ州トロント、ISBN 0-920607-00-4。
- ロイシュナー、ブルクハルト (1987)。 「コーマルのことだ」。システム。15 (3): 373–376。土井:10.1016/0346-251X(87)90011-X。ISSN 0346-251X。
- Len Lindsay: COMAL ハンドブック。Reston Publishing、Reston、VA、1983 年、ISBN 0-8359-0878-X。
- Gordon Shigley: COMAL ワークブック。Comalユーザー グループ、米国、1985 年、ISBN 0-928411-05-2。
外部リンク
- Unix、MS-DOS、Win32用の OpenCOMAL
- 上記の標準準拠のUnix、主にLinuxとMac OS X用のフォーク
- UniComal 3.11 はDOSBoxで実行できるようにパッケージ化されています
- COMAL の説明、バージョン、および特徴 (1984)
