言語にとって美しさとは
ところで,諸君.これまでプログラミング言語とか,プログラミング方法については
何も話したことがないと思う.
それは講義とは直接に関係ないからと思っているのと,SASプログラミングをするとしても
それほど長いプログラムを書くわけではないからだ.
しかしながら,時々,気になることはある.書かれたプログラムが美しくないからである.
この頃の学生諸君は,ちょっとしたプログラミング
なぞするらしい.どんな言語を使うのかは知らないけれど,恐らく現在でも,学んでおいて損はし
ない言語は,Cであろう.VCでもよい,もちろんVBが広く使われているかも知れない.
インターネット時代でPerlなどを使うことが多いかも知れないが,そんな時でもCを学習して
いることは損にならない.
私はCを使えるわけではない.プログラマーになろうとしたこともない.また,データ解析にとっては
SAS言語でなんでも,できてしまったせいもあり,新しい言語の学習に保守的になっているせいもある.
現在利用される言語は,おおむね第三世代言語か,第四世代言語である.そのどちらであっても言語の美しさ,プログラミングの美しさというものがある.諸君,美しいプログラムを書けるようになりなさい.
どうせ,プログラミングをするのなら.私は美しいプログラムを書く人が好きだし,そのようなプログラムが好きだ.美しいプログラムは正しいプログラムであることが多い.
プログラミングをするのなら,誰でもが読んでおいたほうがいい,という本がある.もしプログラミングをするになら,ぜひ読んでおくべきである.それは,ダイクストラとか,クヌースとか,カーニハンの本だ.
彼らは,TEXの著者であり,Cの著者である.その本には,強い思想を感じる.そして忍耐強さとか,
見通そう,正確さを維持しようとする意思を感じる.
amazonで検索すると,ダイクストラの本は絶版が多い.クヌースやカーニハンは大丈夫だ.
彼らは構造化プログラミングとか,文芸的プログラミングとか,プログラミング書法とか−−そういう
ことを言った人々だ.
いくつか大切なことがある.美しくあるために大切なことだ.本質的に重要なことは構造化すること
である.現象的に大切なことは,他人が見て分かりやすいこと,将来の自分がみて分かりやすいこと,である.
長いプログラムになるほどそうである.ちょっとまとまった仕事をすれば,すぐに数千行のプログラムになる.
全体をよく見通せるプログラムでなければいけない.そこには確固たる世界が存在する.破綻したプログラムは破綻した世界をもたらす.
プログラムというのは,書いている時は没頭しているので細部まで記憶しているけれど,ちょっと離れると,自分の書いたプログラムでさえ,何をやっているのか分かりにくいものになる.
変数名をどうつけるべきか.空白はどう使うのか.コメントの書き方と書く量は?.インデントを使え.
GOTO文を使わない.など形式的なことかも知れないが,プログラムとは,人に伝えるつもりで書くことがよい.
いまプログラミングで実現しようとしている,ある全体は,そのままでは混沌である.プログラマーはそこに世界を創造する.
混沌に対面して,ここから世界を構造化していく.ここにデカルトが登場する.分割するのだ.分割の過程で
いくつか共通性・一般性が出現する.分割は順序性をともなう.そして分割のあとには,一般性と特殊性の分離
がある.一般性は関数化されるべきである.特殊性は引数化されるべきである.変数名は規則性をもつべきである.
これがプログラミングの基本的な思想だ.西欧の伝統的な思想である.統計的データ解析も,その思想の一部分に含まれる.回帰分析モデルは構造と差異を,モデルと残差に,シグナルとノイズに分離する.因子分析モデルは共通性と独自性に分離する.世界の何が構造の系であり,何が差異の系であるかを定式化するための営み.自然と人間,即自と対自,使用価値と交換価値,意味するものと意味されるもの,意識と無意識,本質と現象,対立と調和.漱石の文学論では,Fとf.
少し大きなプログラムを書くとき,何の見通しもなくはじめるわけにはいかない.たとえ,全体が決定していなくても,枠組みを設定することはできる.とても美しいプログラムを書け.いつも美しく言語を使わんと意図せよ.
|