導入
INTERCALはプログラミング言語のパロディであり、難解なプログラミング言語の正規リファレンスです。この言語は、1972 年にプリンストン大学の 2 人の学生、ドン ウッズとジェームス M. ライアンによって作成されました。この言語は、当時のプログラミング言語の側面だけでなく、1960 年代に言語と表記法を構築するための提案が急増したことを嘲笑しています。その結果、C や Java で育った現代の読者にとって、そのユーモアはかなり時代遅れに見えるかもしれません。

原作者のマニュアルによると、
「コンパイラの正式名は「Compiled Language with No Pronounceable Acronym」ですが、明らかな理由により、これを「INTERCAL」と省略します。 »
現在、INTERCAL には 2 つの保守バージョンがあります。C-INTERCAL (以前は Eric S. Raymond によって保守されていました)、および CLC-INTERCAL (Claudio Calvelli によって保守されていました) です。
導入
INTERCAL は、他のコンピュータ言語とは完全に異なることを目指しています。他の言語の一般的な操作は、INTERCAL では不可解で冗長な構文を持ちます。 INTERCAL リファレンス マニュアルによると、次のようになります。
「理解できない仕事をする人が高く評価されることは、よく知られており、十分に証明されている事実です。たとえば、INTERCAL の 32 ビット変数に値 65536 を格納する最も簡単な方法は次のとおりであると誰かが主張したとします。»
DO :1 <- #0¢#256
知的なプログラマーなら誰でも、これはばかげていると言うでしょう。これは確かに最も単純な方法であるため、このプログラマーはマネージャーの前ですぐに当惑したように見えますが、マネージャーはよくそうするように、その瞬間に良いアイデアを思いついたはずです。もしプログラマーが正しかったなら、その影響はさらに根本的なものになっていただろう。
INTERCAL リファレンス マニュアルには、多くの逆説的、無意味な、またはユーモラスな指示 (カムロックスのゲーム風) が含まれています。
この脚注で説明されているように、マニュアルには「扁桃体」も含まれています。「4) 他のすべての参考マニュアルには付録があるため、INTERCAL マニュアルには別のタイプの取り外し可能な器官が含まれる必要があると決定されました。」
INTERCAL には、プログラマーにとって見た目がさらに不快になるように設計された他の多くの機能があります。「READ OUT」、 「 IGNORE」、「FORGET 」などの命令文や、「 PLEASE」などの修飾子が使用されます。この最後のキーワードは、コンパイラーがプログラムを拒否する 2 つの理由を提供します。「PLEASE」が十分な頻度で出現しない場合、プログラムは丁寧さが不十分であるとみなされ、エラーメッセージがこれを示します。あまりにも頻繁に表示されると、卑劣であるとしてプログラムが拒否される可能性があります。この機能は元の INTERCAL コンパイラに存在していましたが、文書化されていませんでした。
INTERCAL マニュアルでは、すべての非英数字 ASCII 文字に珍しい名前が付けられています。アポストロフィと引用符は、それぞれ「輝き」と「ウサギの耳」です (アンパサンドは例外です。用語ファイルに記載されているように、「これ以上愚かなものはありますか?」)。 。他の多くのプログラミング言語では等号 (INTERCAL によれば「ハーフグリッド」) で表される代入演算子は、INTERCAL では左矢印「<-」であり、これは「receives」という名前で呼ばれます。 「アングル」と「ワーム」で作りました。
オリジナルのプリンストン実装では、パンチ カードと EBCDIC 文字セットが使用されていました。 ASCII を使用するコンピュータで INTERCAL が動作できるようにするには、次の 2 つの文字を置換する必要がありました。$ はMINGLE演算子として ¢ に置き換えられました。これは、「ハードウェアと比較してソフトウェアのコストが増加していることを表します」。 「初めて単項排他的論理和に遭遇したときの平均的な個人の反応を正しく表現する」ために、単項排他的論理和演算子として ∀ を置き換えました。 C-INTERCAL の最新バージョンでは、古い演算子が代替演算子としてサポートされています。および INTERCAL プログラムを ASCII、Latin-1、またはUTF-8でエンコードできるようになりました。
Usenet ニュースグループ alt.lang.intercal は、他の難解な言語とともに INTERCAL の研究と評価に特化しています。
言語が意図的に鈍く冗長であるという事実にもかかわらず、INTERCAL はチューリング完全です。十分なメモリがあれば、INTERCAL は汎用チューリング マシンが解決できるあらゆる問題を解決できます。ただし、INTERCAL のほとんどの実装では、これが非常に遅く行われます。 65536 未満のすべての素数を計算するエラトステネスのふるいに基づくベンチマークは、 Sun SPARCStation-1コンピューターでテストされました。 C では、0.5 秒もかかりませんでした。 INTERCAL での同じプログラムには 17時間強かかりました。
国際難読化 C コード コンテストなどのコンテストで実証されているように、ほぼすべてのプログラミング言語で、INTERCAL と同等かそれよりもひどい表記が許可されているということは注目に値します。ただし、これらは一般的に、事実上すべてのコードを強制的に判読不能にするINTERCAL 自体の設計とは対照的に、判読不能なコードを作成するための意図的な取り組みです。
INTERCAL マニュアルによると、「INTERCAL の設計における目標は、フロー制御機能もデータ操作演算子も想定していないため、背景を持たないことです」とのことです。デザイナーたちはほぼ成功しました。唯一知られている前身は、1967 年にリリースされたソ連のBESM-6中央コンピュータの機械語命令であり、事実上 INTERCAL SELECT 演算子と同等です。
