1989年1月1日日曜日

プログラミングとは

コンピュータに向かってプログラムを組むというのは、世界を記述しようとする行為である。そして組上げられたプログラムを使用するということは、その記述された世界に新たな要素をおいてどのように振る舞うかを観察しようという行為である。つまり、本質的、実際的にいってコンピュータの仕事とは「シミュレーション」にほかならない。
実用的な意味でコンピュータの初めての仕事は弾道の計算であったとのことである。弾道の計算をするためにはコンピュータ上に主には力学的な物理世界を記述する必要がある。弾の持つエネルギーと重力や摩擦などによって成り立つ世界である。ENIACはこのコンピュータ上のあるいはソフトウェア上に仮想的に描かれた物理世界にミサイルなどを飛ばし、着弾点などを計算した。
また、オフィスワークにおけるスプレッドシート(表計算)のアプリケーションプログラムはまさしく集計用紙の世界をシミュレートしたものである。ワードプロセッサは原稿用紙と筆記具の世界をシミュレートしている。
ただし、ここでいう「世界」とは、現実の世界のこともあるし、もう少し、拡張された世界のこともある。むしろ開発者のなかの頭の中にある理想的な世界のシミュレーションといったほうが正しいかもしれない。
当然のことであるが、例えばスプレッドシートプログラムのシートと集計用紙、ワードプロセッサ上の画面と普通の原稿用紙はまったく同じではない。まったく同じだったら何も特別な機械に大金を出しはしない。ワードプロセッサで実現しようとしている用紙は、正確にいえば、ものを書くのに理想的なメディアとしての原稿用紙である。もちろん現在のワードプロセッサが理想的な原稿用紙を実現しているとは思えないが、そういった路線で着実に(?)進歩してきていると思える。最近出始めているアイデアプロセッサなどは、完全に従来の原稿用紙を超えた別のものである。むしろ、KJ 法的な世界をシミュレートしているのかもしれない。
いずれにしても、コンピュータ・プログラムの行っている作業がシミュレーションであることには変わりがない。

シミュレーションという言葉に抵抗があるかも知れない。この抵抗には二つの側面があると思う。一つには弾道計算ならまだしもワードプロセッサをシミュレーションとは感覚的に呼びにくいということがあろうし、二つにはコンピュータの行っている創造的な仕事を単なるシミュレーションの結果とは呼びにくいということがあるかも知れない。
今、ここで述べているのは、プログラムを作り上げるという立場からの議論であって、そういった見方からはシミュレーターの作成というやや視点を下げてシンプルに捉えようという意図がある。

●プログラミング能力
現在、プログラミングに必要とされている能力にはどういったものあるだろうか。コンピュータそのものに対する興味と知識、論理的な思考能力、そして体力だといわれている。しかし、もっと大切なものは世界の記述能力である。
世界の記述能力とは
1. 現状を正しく認識する能力、すなわち現状の種々雑多な局面の中から何が重要で本質的なパラメータかを把握する能力。
2. 表現力、本質的なパラメータ同士の関係を正しく位置付けること。

●将来のプログラミングのイメージ
...

(89年頃)

0 件のコメント: