プログラミング言語:最初の冗談

プログラミング言語には、ジョーカーとジョークがあります。 実際、ほとんどの難解なプログラミング言語は、ジョーク(もちろん、F * ckf * ckのような一般市民への挑戦として、またはBrainfuckのような心の運動としてではないにしても)として考えられていました。 しかし、最初のジョークの名誉称号を正当に獲得した言語が1つあります。 1972年、既存のすべてのプログラミング言語が非常に有用で致命的だった頃、5月26日の早朝、いたずらのカップルが存在するものの境界を押し広げ、根本的に新しい言語を思いつきました。 彼らはそれを発音可能な頭字語のないコンパイラ言語と呼びました。これは明白な理由からINTERCAL 短縮されました。



それから約40年が経過しました。 INTERCALは、開発者が望んでいたように、 主流の言語とは何の関係もありませんでした 。 名前付き変数、配列、5つの演算子、および欠落している算術演算を実装する標準ライブラリがある通常の命令型言語は、2次元の非決定性言語はもちろん、Brainfuck自体よりも通常の言語とはるかに共通していることを認めなければなりません言語、妄想言語、単一の命令を備えた言語、およびその他の飼育室の展示。 しかし、彼はこのジャンルの先駆者であり続け、多くの点でユニークです。



まず、リファレンスガイド。 後の難解な言語は、言語の本質にその異常性を集中させ、それらのマニュアルは、コマンドと機能の乾いた事実の説明に限定されています。 INTERCALプログラミング言語リファレンスマニュアルは、プログラミング言語のユニークな説明であり、「不思議の国のアリス」のエピグラフと皮肉なコメントが完全に深刻な口調で発せられています。 さらに、特にこの言語のために、著者は使用されたサービスシンボルのup曲表現システムを開発しました: '-spark、'-rabbit ears ..-spot ,:-double spot ,,-tail ,;-hybrid(「spotted tail」はより論理的ですが)、$-大金、〜-ザゴグリンなど(完全なリストはマニュアルに添付されています) ウサギの耳ウサギを得るためのスポットを組み合わせることは禁止されています!



次に、エラーメッセージ。 適切な言語では、エラーメッセージは情報を提供し、何が起こったのかを正確に示します。 それどころか、不名誉なものでは、メッセージは普遍的であるか、エラーの間違った理由を投げかけます。 INTERCALエラーはマニュアルと同じくらい悪意があり、参照なしでは原則的に解読されません。 実際、E252「言いたいことを忘れてしまった」はI / O操作中のメモリオーバーフローエラーであり、E182「このラベルが本当に好きだと思われる」は同じラベルを数回使用するエラーです。 しかし、E405「プログラムは精神的健康上の理由で拒否されました」という考えを思いついた人は、対応するコンパイラオプションなしでロールバックを伴うマルチスレッドコマンドまたは計算の使用を通知します。E017「これ、本当に対処する必要がありますか?」間違った範囲の定数を使用し、E127「言う」アブラカダブラ「魔法の杖なしでは完全に役に立たない」-標準ライブラリが接続されていないこと?



一部のエラーには、他の言語の類似物がありません。 そのため、E079「プログラマーは丁寧ではありません」とE099「プログラマーは丁寧すぎます」のペアは、プログラム内のPLEASEコマンドの識別子の数を指します(ところで、PLEASE識別子は他の意味的な負荷を運びません)。 エラーE774「ランダムコンパイラのバグ」はその名前と完全に一致しています。偶然に発生し、通常は再コンパイルすると消えます。 E995「なに、これを本当に実装しなければならなかったのですか?」まだ書かれていないコードを実行しようとすると発生します(どうすればいいのか聞かないでください!)



最後に、言語自体。 これについては長い間話すことができますが、元のマニュアルのスタイルは保持しますが、最新の言語実装を使用する改訂リファレンスマニュアルを読むことをお勧めします。 私のお気に入りの場所をいくつかご紹介します。







そして今日、INTERCALに忠実でテクノマゾヒストのランクを誇りに思っている人々が残っています-この素晴らしい言語でオペレーティングシステムのソースコードを投げ出す人もいれ 、INTERCALがPerlより優れていること証明する人もいます:






All Articles