*[http://itpro.nikkeibp.co.jp/article/OPINION/20060324/233229/ 「プログラミングをしない人が考えていること」を聞いてみた(ITpro)] [#oa365336] なかなか興味深い記事である. で,思ったあたりとしては ** プログラミング,とは? [#deb868da] C や perl のようにテキストファイルに文字の羅列のコードを記述すること「だけ」がプログラミングではない,わたしは思う. 例えば,excel のセルにマクロを埋め込んで出張旅費を計算するワークシートを作る,これもプログラミングの一形態だと言えるだろう. 昔,DynaCalc という表計算ソフトのデモにあった hangman を見てそう思ったものである. ** コマンドラインとシェル [#h9feedd8] UNIX のコマンドライン環境というのは,ユーザインターフェースとしてうまく完成されたものではないだろうか. 例えば,ある URL(例えば http://www.example.jp/foo.cgi )から HTML を読み込んで,その中から「Tokyo」で始まる行を探したい,とする. Linux 上ならば,コマンドラインから $ wget -O foo.html http://www.example.jp/foo.cgi $ grep '^Tokyo' foo.html と打ち込めば良い. が,その URL を何度もチェックする必要があることに気がついた,とする. で,いちいちこれらの行をキーボードから入力するのも面倒だ. そういうときは, wget -O foo.html http://www.example.jp/foo.cgi grep '^Tokyo' foo.html という内容のファイルを作成し(chktko という名前のファイルに保存したとしよう), $ sh chktko と打つだけで,wget ... と grep ... 2行と同じ処理を行ってくれる. これは楽チン. で,chktko というファイルだが,これはリッパなプログラムである. 今までたくさん手で入力していた内容をそのままファイルに書く,これだけでプログラムが書けてしまう. とても単純である. 同様のことを Window 環境でやろうとすると… + web ブラウザを開いて + http://www.example.com/foo.cgi と URL を入力して,web ページを読み込ませて + 編集 - このページの検索でダイアログを開いて + Tokyo と入力 この操作を自動的にやろうとしたら… > マウスカーソルの移動とか,マウスボタンのクリックとか,そんなのテキストファイルに手で書き込めないぞ ということに気が付く. 確かに世の中にはキーロガーなんてプログラムがあるので,マウスカーソルの移動・ボタンクリック・キー入力なんかは記録できるし,同様のイベントも再生できるはずである. が,ブラウザのウィンドウはどこに開くかは不定である. つまり,「前回と同じイベント」を再生したとしても壁紙をクリックしてたりするだけで思った通りの操作をしてくれない,ということは十分ありうる(というか大体はそうなるだろう). Window 環境では,「操作の自動化」というのは難しいのである. ** プログラミングと自身のニーズ [#mbdb03b5] おそらく,プログラミングする大きな動機の1つとして「自分自身のニーズを満たす」というものがあるだろう. プログラミング言語のテキストにはよく「1から100までの和を求める」とか「摂氏から華氏への変換」とかあるけど,これらの例から「自分のやりたいこと」まで持っていけるようになるまでは,とても大変なトレーニングが必要である. ** まとめ [#wd4b2af0] …うまく話がまとまらないので,まとまらないままにしておこう. *本日のツッコミ [#kf2e9de4] #comment