階層構造

posted on 2008年11月5日 in PC

酔ったついでにとりとめのないことを書く。

僕の書く文の文体は、いかにも生硬でいけない。書いた次の日に自分で読んで自分で頭痛することすらある。多分理由は三つほどあって、
1.)「いかにも生硬でいけない」などといういかにも生硬な言い回しが多い
2.)コンピュータのプログラムを書くせいか、文の整合性を求め過ぎる余り、読点の位置が不自然だったり、括弧が多かったりし過ぎる
3.)とか言いつつ、文や段落同士の意味の繋がりにおいて、さしたる整合性がないこともしばしばである
といったところだ。

1.)は好きでやってるから放っといて欲しい。3.)は済みません。精進します。色んな意味で。もしこれがクリアされるときが来たら、この「生硬さ」はむしろ持ち味とすらなり、「いけない」ということにはならないだろう。と、希望的観測を抱きたい。

で、差し当たり2.)が問題だ。知らないけど、プログラマなら一度はこんなこと考えた経験はあるんじゃないか。即ち、「一般の文章で表現し得る階層構造は、コンピュータ言語におけるそれに較べて、著しく脆弱である」。そりゃそうだ。ネストだのXMLだのカプセル化だの、階層構造をその本質とするイディオムには、コンピュータ言語は事欠かない。論理的で自明的でなければ何の値打ちもない「コンピュータ言語による作文」=「コーディング」は、どこからどこまでが一要素で、それらの要素はどう系統立てられるのかを、何の解釈の余地もノイズも残さず、はっきりと「これこれこう」と指し示す必要がある。
人間の僕らが「言いたいこと」というのは、大概それを言うのに階層構造を要する。しかし、僕らは「解釈の余地」や「ノイズ」を活用することによって、「自明的に階層構造を表現すること」を避けた。変な話、WORDで「○○の○○の○○の…」とやると、「あなたは階層構造の表現は自明的過ぎます」と、赤い波線が付けられる。もっと「解釈の余地」や「ノイズ」を活用しなさい、ということだ。
その理由は何か。「美」であるとしたら、いささか引っかかるところもあって、コンピュータ言語の世界にも「美しいコーディング」なるものは存在する。じゃあ何だとなると、「恥」、だ。「○○の○○の○○の…」だとか、読点がいやらしい位置にあったりだとか、適切な指示代名詞を振れない余り括弧を連発するだとか、それはそれで簡潔この上ない「美しいコーディング」を成り立たせる要素になることもあるだろうけど、やっぱり、人間様の世界の方がよっぽど知性的であるらしく、「解釈の余地」や「ノイズ」を駆使できない程度の知性しか持ち合わせていない書き手は、「恥」を感ずるべきなのだ。もうすでにこの文面がそんな事態に陥っていることは百も承知だが。

人間様の世界に「解釈の余地」や「ノイズ」を避けるべき文、というのが無いのかというと、もちろんそんなことはない。法の条文を頂点とする、いわゆる「ビジネス文書」は代表的な例だ。そうでなくとも、例えば弁解めいたことを書いて送らなければならなくなったとき、問題の構造を自明にしたいが故に心のうちで推敲したものと、先方に感じて欲しい己のあるべき態度故のそれとの狭間で、苦悶した経験はないだろうか。文面が「正し」ければ「正し」いほど、伝えるべきものが伝わらない矛盾みたいなものが、何故か人間様の内にある。
これまた変な話、法律の条文や正確を期すべき言葉と国民に分かりやすい言葉の狭間で苦悶する政治家は、結構大変だ。いや、別にここで政治家を擁護するつもりは毛頭ないのだが、多かれ少なかれ、我々はそんな苦悶を強いられていることは確かだ。受け手が「これは正確さを要求されるからこその表現だ」と気付けばそう問題にならないような場面は、意外とあるのではないか、という想いは、拭い難い。

「解釈の余地」や「ノイズ」をテクストから極力追放する試みは、ジャック・デリダがやってたんじゃなかったか。無造作なほどに注釈を付けまくるという方法で。それは、何となくだけど、コンピュータでいうところの、「外部ファイル(例えばdll)を参照する」という行為になぞらえることが出来るような気がする。ある種の(少なくともWindowsの)プログラミングは、dllの集積でしかなかったりもするから。

C言語事始

posted on 2008年10月22日 in PC

今さらながら、いわゆるC言語なるものに挑戦し始めた。
僕はDelphiユーザー、いわゆるデルフィアン、さらにいえばDel厨なのだが、例えばアルゴリズムの解説本なんかの類はCで書かれていることが多いし、何より業界の常識ともいえる言語だから知らないのも難だということで、渋々始めてみた次第である。もっとも、現在はWebアプリケーションの需要の方が多いだろうから、実際に今でもCが業界の常識、プロのプログラマがマスターしておかねばならない言語として君臨しているかどうかは、プロじゃない僕は知らない。

参考書の最初のほうを読んでみての感想だが、トークン名において大文字と小文字を区別するのはちょっと苦労しそうだ。単純に、覚えるべきトークン名の可能性が倍になる。僕の好みでいうと、コンパイラは区別をしない、不整合があったらIDEが定義に従って勝手に修正してくれる、といのが理想である。