|
INTERCALはプログラム言語。それ自身がプログラミング言語のパロディにもなっており、実用言語ではない。いわゆる難解プログラミング言語の典型例として知られている。 INTERCALは、FORTRANやCOBOLはもちろん、1960年代に提案された数々のプログラミング言語の構造や表記法も皮肉の対象としている。そのため、CやJavaに慣れ親しんだ今日の観点からすると、そのユーモアは少々時代遅れに感じられる部分もある。 == 概要 == INTERCALは1972年、プリンストン大学の学生であったドナルド・ウッズとジェイムズ・リヨンによって作成された〔The Original INTERCAL Manual 〕。現行バージョンであるC-INTERCALは、エリック・レイモンドによって保守されている〔INTERCAL Resources on the Web 〕。INTERCALという名前は、製作者らによれば "Compiler Language With No Pronounceable Acronym" (発音できる頭字語のないコンパイラ言語)からつけられたものだという。 INTERCALは意図的に、他のあらゆる主だったコンピュータ言語とは異なるように設計されている〔。他のプログラム言語におけるごく普通の処理も、INTERCALでは不可解で無駄の多い文法で表現される。例として、INTERCALのリファレンスマニュアルの一部を以下に示す。 INTERCALのマニュアルにはこの他にも、逆説的で馬鹿げた、あるいはユーモラスな説明が数多く書かれている。 INTERCALにはこの他にも、プログラマ的美的感覚とは決して相容れない数々の特徴がある。例えば、ステートメントに"READ OUT"、"IGNORE"、"FORGET"、"PLEASE"といったキーワードが用いられている。マニュアルでは、アルファベット以外のASCII文字が独特の名称で呼ばれている。例えば、シングルクォート(')とダブルクォート(")はそれぞれ「火花(sparks)」「ウサギの耳(rabbit ears)」、等価記号(=)は「半メッシュ(half mesh)」といった具合である。他のプログラム言語では代入に等価記号が使用されるが、INTERCALでは"<-"を用いる。この記号はそれぞれ「アングル(angle)」と「ワーム(worm)」と呼ばれている。 オリジナルのプリンストン大学版ではパンチカードとEBCDICの文字セットが使用されていた。そのため、ASCIIのコード体系を採用しているコンピュータ上でINTERCALを実行する場合、2種類の文字を別の文字に置き換える必要がある。ミングル演算子は"ハードウェアに対応して増加するソフトウェアのコストを表現する"「¢」の代わりに「$」を、単項排他的論理和演算子として"排他的論理和(XOR)を初めて目にした人々の平均的反応を正確に表現した"「∀」の代わりに「?」を用いる。 Usenetのニューズグループ alt.lang.intercal は、INTERCALやその他の難解プログラム言語の研究と鑑賞のために作られたものである。 意図的に鈍重かつ冗漫な言語であるべく作成されたにもかかわらず、INTERCALはチューリング完全である。つまり、十分なメモリさえあれば、万能チューリングマシンが計算可能なあらゆる問題を処理することができる。ただし、実行速度はきわめて遅い。ベンチマークとしてSUN SPARCStation-1上でエラトステネスの篩を実行してみた場合、65536以下の素数を全て計算するのにかかった時間は、Cでは0.5秒以下であるが、INTERCALでは17時間以上であった〔INTERCAL — the Language from Hell (チャールズ・ストロス、''Computer Shopper'' , 1992年9月)〕。 International Obfuscated C Code Contest(国際醜いCプログラムコンテストの意)のようなコンテストを見てもわかるとおり、INTERCAL以外の言語であってもINTERCALと同等あるいはそれ以上の理解しづらいプログラムを書くことは可能である。しかし、これらの読みにくいコードは、通常なんらかの意図を持って記述されたものである。これに対して、INTERCALの読みにくさは言語仕様によるものである。 INTERCALのマニュアルには「INTERCALの設計上の目標は、前例のないものを作ることだ」と記載されている。これはおそらく制御構造とデータの操作演算子の両方を対象にしていると思われるが、確かに設計者は部分的にこの試みに成功している。唯一知られている例外は1967年にリリースされたソビエトのメインフレームBESM-6のある命令で、これは事実上INTERCALのセレクト演算子とほぼ同様である。 後発の言語には一部にINTERCALと同様の設計が見られるものもある。たとえば代入記号では、1988年に誕生したS言語でも <- を用いている。(論理学で代入や定義を表す記号 ← を模したものであるので、代入に等号を用いるより自然と考える立場もある。)なお、代入に = を使うことには問題がある、という意見はFORTRANの昔からあり := (など)を使う言語も(探せば)多い(C言語では、設計者らの簡単な調査によればコード中には代入のほうが比較より多く現れるので、代入のほうを短い = にしたという話がある)。一部の言語では ∈ の代用として <- を使う。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「INTERCAL」の詳細全文を読む スポンサード リンク
|