プログラミング言語と文学 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は、主流となった言語への批判として存在している。



コンピュータ・アートはどこに生まれるか

→コンピュータに対する批判的精神が表現されたもの、
それがコンピュータ・アートである。それはデザインではない。
当たり前の、常識となった環境に違った角度から光を当てる。

→JODIは、ネットの世界で当たり前になってしまった表現を、
かたっぱしから裏返して見せた。
例えばHTMLのコードがページに侵入してしまう。

→そしてデスクトップや、ゲームも裏返していった。
そのように違った角度から見ていったときに表れる構造の美しさが、
コンピュータ・アートの本質である。