2009年06月22日

論理力を身につけることは簡単なのか?

どうやったらプログラムを作れるようになりますか?というような質問があります。
プログラミング言語を覚えれば当然作れるようになりますが、プログラミング言語とは結局のところコンピュータに何をやらせたいかを表現する言葉でしかありません。
コンピュータは人間がやってほしいと思うことを想像したり、先読みすることはできません。逆に言えば、人間が考えたことをその通りやることしかできないものとも言えます。
プログラミング言語は自然言語と同じで、文法が違ったり、単語が違ったり、その程度です。程度の差こそあれたいてい1つの言語を知れば、コンピュータでやらせられることに限界がある以上、他の言語も意外に簡単なレベルなら容易に習得できるものです。

私はプログラムを組むという観点においては、一番重要なのはそのコンピュータに何をやらせるかの手順をどうやって考えて、生み出すかだと思います。これを語弊はあるかもしれませんが、私は論理力と読んでいます。
コンピュータはあくまで論理的に動作しています。人間がその手順を論理的に矛盾が無いように考えられない限り、プログラムにまで落とし込むことは難しいと考えます。その手順を論理的に考えられるのであれば、その順序どおりにコンピュータへの命令を記述するだけだと思います。多くのプログラムができないという方は、その手順が考えられないケースが多いです。
そして、そこが一番難しいところでもあります。

ちなみに、当然昨今のシステム開発においては、ことプログラムだけ出来ればよいなんてことはありません。その部分は除いて、あくまでプログラムを作成するというところに注目しています。


私は論理力を習得する道は、書道と同じだと思います。
書道は、まずお手本と呼ばれるとても美しい字をまねるところから始まると勝手に思っています。どんな達筆と呼ばれる方(たいていは素人には何がよいのか分からないけれども)も、最初はきれいな字をまねて書き、きれいな字を書けるようになっていると思います。その上で、オリジナリティを出していると思っています。逆に、オリジナリティの前に前提となるきれいな字が書けないのであれば、書道の評価は下せないのだろうと思うのです。
書道では、何度もきれいな字を書くことによって、初めてきれいな字が書けるようになります。生れて初めて字を書くという人で、最初からきれいな字を書ける人はいません。
同様に論理力も何度もきれいなロジックを見習うことで初めてしっかりとしたロジックが分かり、考えることができるようになります。生れて初めてしっかりとしたロジックを考えようという人で、最初からきれいなロジックを考えられる人はいません。
センスは才能という面よりも、どれだけ後天的に人のセンスを見たかにもよると思うのです。

論理力も、アルゴリズム教本のような書籍を何度も何度も読み、その内容を何度も書き写すことで、手順はどんなものか分かり、習得できるようになると思います。
私自身も、本などから人のプログラムを何度も200本以上、フローチャートを手書きで描いたり、直接プログラムを入力し、どうなっているんだろうかと考えたり、変更してみたりしました。私は今思えば、最初は方眼用紙にいろんなことを書き写したり、アイディアを書いていました。
それをずっと続けていれば、新しいことを考えることができるようになると思うのです。だからこそ、今何も紙に書いたりせずに直接プログラムをきれいに作れます。

論理力と言っても、コンピュータでいえばアルゴリズム教本があります。
コンピュータ以外では、新聞の論理的矛盾を見つけてみるとか、論理力の本を読んでみる、普段の生活で、どういう順序で動けば最も効率的なのか、この行動はどういう意味があり、今後どう発展することかを考えると、身につくのではないかと思います。

当然、人のコピーでは本質的なオリジナリティではないと言われそうですが、そこに関しては私は否定できません。その純粋な意味でのオリジナリティはきっと、今まで一度もアルゴリズムを見たことも聞いたこともない人が、ある日突然閃いたときにのみ言えることでしょうし、そんなことが出来る人が天才と呼ばれると思います。
偉大な音楽家は、きっと過去の偉大な音楽家の曲を聞いて育ったと思います。が、最初の偉大な音楽家は前例がないので、本当にすごかったのかもしれません。
ですが、私はそこまでの天才ではなく、通常は過去から学ぶものだとも思います。


もし、プログラムを作れるようになりたいと言うのであれば、論理力を見につけるべきだと思います。
もし、論理力を身につけたいのであれば、一生懸命人の論理的思考の結果を学ぶべきだと私は思います。
何事もそういった努力をしてからではないでしょうか?
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/29996636
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック