プログラムを書けない人や書いた事の無い人達には「プログラムを書ける人は凄い」という思い込みがあるようです。はっきり言いましてこれはただの幻想です! 本当に凄いプログラムを書く人はほんの一握りで大部分はただの翻訳家であり、さらに一部の人間は「別の意味で凄いプログラムを書く人達」なのです(あろん殿の”凄いプログラム”の頁参照)。それぞれのタイプについて少し述べると、
- 本当に凄いプログラムを書く人
- 超効率的なプログラムを創り出し、マシンのパワーを120%引き出す事が出来る。
- 人間と言うよりもマシンに近い存在である。
- 多くの場合コンピュータ以外にも趣味を持つ。特に音楽関係に興味を持つものが比率として高い(演奏する側、聴く側両方)
- (非常に高い確率で)ピザが好き
- (非常に高い確率で)中華料理も好き
- お礼に上記のどちらかをごちそうすると凄く喜ぶ
- ビール または ペプシ好きが多い
- このタイプの人は多くの場合「天才」と呼ばれている。
- ただの翻訳家
- 最も一般的な位置付け。大多数はここに分類される
- 処理する事柄をコンピュータが分かる形に翻訳する事ができる。(仕様を作る、プログラムを組む等)
- 少し練習すれば誰でもこのレベルになる事が出来る
- 「旅行の時に不自由なく英会話ができる」程度のものと考えて下さい。その程度です。
- 別の意味で凄いプログラムを書く人
- 非常に効率の悪いプログラムを意識する事無く創り出す
- そのプログラムは人間に理解される事を拒絶する
- 多くの場合、会話もまともに出来ない場合がある
- 多くの場合、「バカ」と呼ばれている
プログラムと言うと固く考えてしまいますが、一言で言えば「やって欲しい事をマシンに説明する事」です。ただし、現在のコンピュータは賢くないので「お茶」と言ってもお茶を出してくれません。細かく正確に教えてあげる必要があります。では、「コンピュータにお茶を持ってきてもらう事」を例にして説明しましょう。これでお茶を飲む事ができます。しかし!!上の説明でもコンピュータにとっては大雑把な説明でしかありません。なぜなら、それぞれの動作の説明がないからです。”やかんを持つ”という動作を細かく教える必要があります、他の動作に着いても同様です。プログラムを組むという作業はこのように「物事の動作を細分化してコンピュータに分かる形に再構築する事」です。再構築した手順に従ってマシンに分かる言葉でプログラムを書けばプログラムを組んだ事になります。 ほら、思ったよりも簡単な事でしょ。レシピを書くのと同じ事ですよ。
- やかんを持つ
- やかんのフタを開けて 水道の蛇口の下に持って行く
- 蛇口をひねり水を出す
- 必要な量(事前に決めておきます)をやかんにいれたら、蛇口を閉める
- やかんにフタを置く
- コンロの上にやかんを置く
- コンロ点火
- お湯が沸くまで待つ(お湯が沸くとは、やかん内の水が100度になる事)
- 急須にお茶っ葉を必要な量入れる
- 急須の中にお湯を必要な量入れる
- しばし待つ
- 湯飲みの中にお茶を必要な量入れる
- 湯飲みを届ける
ちなみに、”天才”は「より細かく分解し、より短い手順に再構築できる」人たちであり ”バカ”は「より粗く分解し、より長い手順に再構築できる(場合によっては新たに不要な手順を創り出す)」人たちです。
「分解と再構築」という作業はなれていないと分かり難いかもしれません。少し複雑な事柄を例にして考えてみましょう。お題は「公衆電話で電話をかける」です。条件として 緑の公衆電話で電話番号は覚えている場合です(手帳から電話番号を探すと、それだけでかなり複雑な動作になってしまいます)STEP1: 最初に大体の流れを考える
STEP2: 各動作を もう少し細かく考える
- 受話器を持つ
- カードを入れる
- 電話番号を押す
上の各動作をもう1・2段階程度分解すればプログラムを書けるでしょう。
- ”受話器を持つ”という動作について
- 受話器の場所を確認する
- 受話器まで腕を伸ばす
- 手を開け受話器を指で包み固定する。
- 腕を曲げ、受話器の受話口が耳に当たるようにする
- カードを入れる
- テレホンカードを手で持つ
- スリットの場所を確認する
- スリット目掛けてテレホンカードを突き刺す
- テレホンカードが引っ張られたら 手を放す
- 電話番号を押す
- 電話番号を思い出す
- 思い出した番号に対応するボタンを押す
- 正確に押した事を確認する
- 番号の最後まで 上記2動作を繰り返す
身近な事を題材にして分解と再構築を行なって見て下さい。この動作は仕事上でも色々と役に立ちますよ。例えば人に物事を説明する時、何か予定を立てる時、誰かに仕事を頼む時 etc etc 。
Xeyes(マウスカーソルを目で追いかける目玉)を作りながら 説明を行なう予定です。(つまり、今作っている最中って事です (^^;;; )