プログラミング言語と文学 Programming language and literature→プログラミング言語と言語のプログラミングについて →C, INTERCAL, Befung, →マラルメ、ジョイス、メルヴィル、 →文芸的プログラミングは全然文芸的ではない。 Literate Programming is not literary at all. |
C,最初の文学的プログラミング言語 the first literary programming language→命令の一固まりを、{ } (curly brace)で囲み、 それを字下げ(indent)することによって視覚的にわかりやすくする。 このような「文体」の誕生が、プログラミングに表現の自由をもたらした。 Ken Thompson「ソフトウェア作法」(Software Tools) という書籍が その誕生の経緯を伝えている。 当時主流であったFORTRANとの対比で考えるとその意味がわかる。 →マラルメのように空白に意味を持たせた文体の誕生に比較しうる。 →具体例: hello.c |
邪悪なCコードコンテスト The International Obfuscated C Code Contest→C言語を使って、あえてわかりにくいプログラミングを書くコンテスト。 →汚なく書けるということは、きれいに書くこともできるということ。 言語としての自由度の高さが、表現力の高さにつながる。 →非常に奇妙な見た目のプログラミングが、コンピュータにとっては 普通に動くプログラムであるという不思議。 →実行例: 1985/shapiro.c, 迷路を生成する。 1988/westley.c, 円周率をプリントアウトする。 1996/eldby.c, 3D空間で球が飛んでくる。 2000/natori.c, 月齢を表示。 |
邪悪なPostScriptコードコンテスト The Obfuscated PostScript Contest→そのPostScriptコード版もある。 →実行例: Tiny_RayTracing.ps, レイトレーシングを実行する。 Tiny_RayTracing.pdf, その結果。 |
INTERCAL,邪悪なプログラミング言語 the obfuscated programming language→意図的にプログラミング言語そのものをわかりにくくした。 どんなに普通に書こうとしても、必ずわかりにくくなってしまう。 わかりづらい言語のパロディーでもある。 →"hello, world!"を画面に出力するだけでも一苦労である。 →具体例: hello.i, 基本形のHello worldを出力するプログラム。 pi.i, πを計算するプログラム。(同じアルゴリズム pi.c) life.i, ライフゲームのプログラム。 |
Befunge,四角的プログラミング言語 Squarish Programming language→空白に意味を持たせることをさらに徹底した言語。プログラムの文中に おける空間的な配置が、実行における本質的な意味を規定する。 →実行例: hello.bf, 基本形の、Hello world!を出力するプログラム。 v < > ^ という記号によって、動作方向が変更される。 life.bf, プログラム内で実行されるLife Game。 befbef.bf, Befungeで作られたBegungeインタープリタ。 その内部に置かれたBefungeプログラムを実行させる。 |
Programming Language can be Art.→言語とは独立した存在ではありえない。FORTRANに対するCのように、 他の様々なものとの関係性から成り立っている。 →INTERCALやBefungは、主流となった言語への批判として存在している。 |