26.2 プログラミングの概念

プログラム(program)とは,何らの問題を解決する,あるいは答えを求めるために必要な手順,内容や性質が明確にわかっているやり方の組合せで記述したものです…

と言われてもよくわかりませんね.「問題」「解決」「内容」「性質」「明確」「組合せ」などの言葉が,定義なしで使われているからです.この種の言はとても広い意味をもっていますから,使う人によって中味が異なるのは日常茶飯事です.政治の世界では,ある人にとっての「明確な解決策」が他の人にとっては「不明確な愚策」であったりすることがよくあります.これでは困りますから,共通に議論できるような努力をしてみましょう.

まず「問題」です.「問題」と言うからには,何か求めたい解や実現したい状態があって,「何もしないとそれらが得られない」ことが本質です.「ピザを食べたい」にしても「xy-x-y+1を因数分解したい」にしても,すでにピザが目の前にあったり,解(x-1)(y-1)が与えられたりしていれば,「問題」としては成り立ちません.そのような「まだ達成されていない」状態から「得られた」状態に移ることが「問題解決(problem solving)」なのです.

26.2.1 問題の分割

問題解決のための一般的な手法があるわけではありませんが,いくつかの指導原理は知られています.これは我々が常日頃無意識にやっていることをきちんと表現しただけのものですが,問題解決を行うに当って意識しておくと非常に有益です.その第一が問題分割です.

26.2.2 分割の考え方

問題は分割していけば,際限なく分割できます.どこで分割をやめるのか, ということを決めるためにはいくつか知っておくべきことがあるがあります.

26.2.3 プログラム言語

プログラミングをする上でプログラムの実行者に関する知識が必須です. 特に「コンピュータにどのように命令する」と「コンピュータがどのように動作する」かという知識は重要になります. このうち,「コンピュータにどのように命令する」かを決めたのがプログラミング言語です.

26.2.4 プログラム処理

プログラミング言語の分類の方法にはいくつもありますが, プログラムをどのように実行するか,というものがあります.

26.2.5 中間言語方式

教育用計算機システム では Mac OS X,Microsoft Windows など複数の環境を利用できます. Java は中間言語方式を採用することで複数の環境でも同じように実行することができます.