プログラム

コンピュータは、簡単に言ってしまえば単なる計算機に過ぎない。 だが、普通の電卓のような計算機とは大きく異なる点がある。 それはプログラムによって動作するということだ。 電卓は四則計算(+−×÷)を行うだけのシンプルな機械で、何桁もある計算を瞬時にこなすことができるが、その機能は機械的に作り込まれていて、他の機能を追加することはできない。 一方コンピュータは、与えられるプログラムによって様々な処理を行うことができる。

プログラムはアルゴリズムを記述したものだ。 アルゴリズムとは、問題を解決するための手順、とでも言うべきものである。 その手順とは、「○と×を掛け合わせる」といった単純な計算や、「計算結果を保存する」のような操作、「○○の結果が△△だったら、□□を実行する」のような条件判断、「キーボードから入力を受け付ける」「■■と画面に表示する」「ドレミレドと音を出す」のような複雑な処理を並べて作られる。 「複雑な処理」というのは、単純な処理を積み重ねて作られたもので、それを成している単純な処理は、すべて数値の計算と操作という処理に還元される。 コンピュータの本質はあくまでも計算機であって、それ以上のことはできないからだ。 しかし、単純な計算処理しかできないコンピュータでも、実に様々な仕事に使うことができる。 少なくとも今これを読んでいる読者は、コンピュータを使って文書データにアクセスし、それを画面に表示するだけの処理を目の当たりにしているはずだ。 これらの処理もすべて数値の計算と操作という処理から成り立っていて、その手順のすべてがプログラムによって与えられているのである。

このようなプログラム方式の機械に、どのようなメリットがあるのだろうか。 たとえば現代の電卓は、実はすべてプログラム方式で作られている。 昔の電卓は、ハードウェアのすべてが電卓として作られた、文字通り計算専用の機械だった。 このような作り上げられた機械に対して、すでに作られた機能を変更したり、新たな機能を追加するのは、非常に困難な作業である。 しかしプログラム方式の電卓ならば、機能の変更や追加はプログラムの変更だけで済み、多くの部品は改造することなく使うことができる。 プログラムの変更は、機械の改造に比べれば非常に簡単で手早く済む。 この結果部品を大量に生産することができるようになり、また小型化も大いに進んで、現在のような電卓になったのである。

プログラムはアルゴリズムを記述したものだ。 先ほどは日本語による簡単な例を示したが、実際のプログラムは専用のプログラミング言語によって書かれる。 プログラミング言語には、例えば BASIC、Pascal、C、C++、Lisp、COBOL、Fortran などがある。 近年もっとも注目を集めているのが Java で、これもまた他と同様プログラミング言語なのだ。 これらの言語は、ふつう我々が使っている日本語や英語といった自然言語とは異なり、すべて専用の目的のために作られた人工の言語である。 文法はすべて厳密に定められていて、曖昧さがないようになっている(時には、曖昧さについて厳密な定義が与えられることもある)。

プログラムを作成するということは、2つの技術に精通する必要がある。 ひとつは問題を解決するアルゴリズムを作成する技術、もうひとつはアルゴリズムを正確にプログラムに記述する技術である。 プログラミング言語にいくら詳しくても、問題の要点を理解するだけの素養と、解決方法をあみだす能力がなければ、プログラムは作れないのである。 このような能力は、そう簡単に身につくものではない。 特に近年のコンピュータは非常に複雑で、その勉強だけで手一杯になってしまうため、プログラミング言語には明るいが対象となる問題の方にはあまり詳しくないというプログラマが増えてきている。 またコンピュータに期待される問題の質も非常に高度化していて、プログラマが仕事のために聞きかじる程度では太刀打ちできないほどになっている。 そこで、プログラミング言語をもっと簡易化して、コンピュータの専門家でなくともプログラムが作成できるようにしようという努力がされてきている(まったく成功していないが)。 またプログラマをさらに教育して、問題に対処できるようにしようとする動きもある(さらに専門性を高めるばかりで、格差は埋まらない)。

コンピュータそのものの複雑さを減らすことはできないのだろうか。

Sep-12-1997


[prev] / [next]
[back to index]