February 17, 2009

ifとelseの思考術 プログラマ脳育成講座

ifとelseの思考術 プログラマ脳育成講座
ifとelseの思考術 プログラマ脳育成講座

キーワード:
 矢沢久雄、入門書、プログラマ脳、教育担当、ベンチマーク
プログラミング時の思考法について示されている入門書。以下のような目次となっている。
  1. 第1章 プログラマとはこんな人
  2. 第2章 コンピュータとプログラムに対するイメージをつかむ
  3. 第3章 プログラミング教材で学習する方法
  4. 第4章 プログラミング入門講座で指導する方法
  5. 第5章 サンプルプログラムを真似るときのポイント
  6. 第6章 覚えておくべき基本的なアルゴリズム
  7. 第7章 プログラマなら一度は夢中になるテクニック
  8. 第8章 ここまでできれば一人前のプログラマ
(目次から抜粋)
プログラミング初心者にとっては、プログラミング時の考え方というものがよくわからなかったりする。この本では、プログラミングする際の思考方法をプログラマ脳と捉え、そのプログラマ脳を身に付けるための方法が示されている。

この本は、プログラミング初心者が読めばなるほどと思うことが多いだろう。しかし、ある程度プログラミングを経験しており、それなりにコーディングをガリガリ書ける人にとっては、この本はつっ込みどころが多いのではないかと思う。細かいつっ込みやこの本の網羅性は、以下の方のブログの書評が参考になる。自分もそれなりにそれはどうかなぁとか、微妙だなぁと思うところがあった。しかし、基本的に自分の書評スタイルはなるべく内容をポジティブに受け取るというものなので、共感できた部分、なるほどと思った部分を以下に恣意的に示しておく。
  • プログラミングは、指と目で覚える
  • 自分が作ったプログラムが、社会の役に立った達成感が、これまでに経験したことのない喜び
  • はじめてプログラミングを本格的に学ぶ人にはC言語の方がよい
  • 「どうしたらプログラムが作れるようになるのか」という疑問に対する回答は、多くのサンプルプログラムを経験して真似ること
  • 統一性がることを美しいと感じることも、プログラマ脳を持つ人ならではの感覚の1つ
  • 自分の中にプログラマ脳を芽生えさせるためには、一緒にプログラミングする仲間をつくるとよい
こんなものか。自分もプログラミング言を習得するとき、C言語が本格的に学んだ最初の言語だった(正確にはSchemeを最初に触れたが括弧が多すぎて意味不明すぎて挫折・・・)。だから、C言語でポインタまで理解してメモリ空間の使い方を把握し、さらにアルゴリズムとデータ構造まで習得しておくと、大体他のプログラミング言語もすんなり習得できると思う。これは経験的に自信を持って言える。

次に、どうしてもこれはつっ込んでおきたいという部分がある。それはフローチャートについての部分。
 新人研修の講師をしていると「どうにかプログラムは作れますが、フローチャートを描くことが苦手です」と言う新人さんをよく見かけます。このような新人さんは、考えがまとまらないうちにプログラムを打ち込み始め、その実行結果(正しくない実行結果)を見てからプログラムを修正するという作り方をしています。趣味でプログラミングするなら、このスタイルでもかまいませんが、プロを目指すならいけません。フローチャートを描いて考えをきちんと整理しないと、品質の高いプログラムを作れないからです。
(pp.52)
プログラミングを学び始めるときに、プログラミング前に分岐やループ処理を整理するためにフローチャートに一度落とし込む、というのは有効だとは思う。しかし、『フローチャートを描いて考えをきちんと整理しないと、品質の高いプログラムを作れないからです。』は本当だろうか?と少し疑問に思った。まず、オブジェクト指向とかWeb系の言語ではフローチャートで表現できないような処理が出てくる。そのときに、フローチャートはまず使えない。

そして、ここでいう『品質の高いプログラム』が何を指しているのかにもよるが、それはならずしもフローチャートよる効用ではないと思う。高品質であるとは、バグが出ないものであるとか、メモリを無駄に使用しておらず処理速度が速いとか、メンテナンス性に優れているとか定義できるが、フローチャートが担保できそうなものは、バグが出ないもの(論理エラーがないとか)ということのみだろう。確かにフローチャート的に思考して論理エラーを回避するというのは、プログラミング前に脳内でイメージする。けれど毎回フローチャートを描く必要があるかと言うと、それはいらないと思った。少なくとも、フローチャートが有用なのはケースバイケースで、必ずしも必要なものではないというのが自分の考え。

フローチャート不要論、有用論はググッたらいろいろ出てくるので、興味がある人は自分で調べたらいいと思う。

あともう一箇所つっ込んでおきたいのは、プログラミング書籍の購入方法について。以下その部分を抜粋。
プログラミング教材には、以下に示したような種類があります。書店に並んだ本がどれに該当するかは、書名と表紙のデザインから判断してください。もちろん、手にとって内容も確認してください。
  1. プログラミングを楽しむ入門書
  2. 言語構文の概要を網羅した入門書
  3. 言語構文を詳細に網羅した解説書
  4. アルゴリズムのサンプル集
  5. プログラミングのTips集
  6. データベースプログラミングの解説書
  7. インターネットプログラミングの解説書
  8. その他
(pp.63-64)
このように示されているが、この本は『プログラミングを楽しむ入門書』だろう。しかし、『書名と表紙のデザインから判断しろ』と示している割に、この本の書名と表紙は全然入門書っぽくない。そして自分は書店で思わず本書をジャケ買いし、実際に読んでみると内容が入門書で、微妙に騙された気がした・・・。書名とデザインから、もっとコアな内容かと思っていたら、完全にプログラミング初心者向けの内容で、プログラミング歴が10年近くの人やIT教育をみっちりやった人にとっては、復習にしかならない内容。まぁ、よい復習にはなったよ。この教訓から、技術本はジャケ買いせずに、Amazonのレビューを一度見て、さらに絶対内容を確認してから買え!!と言える。技術本は2000円以上のものが普通で、しかも読了までかなり時間がかかるから投資工数が普通の本より大きい。それではずれ本を買ってしまったときの失望感といったら・・・。しかも口座残高が残り少なくて危ないというときに買ったものであればなおさら・・・。

この本は、本当にプログラミングをこれから1から学ぼうと思っている人向けの本で、ある程度のレベルのプログラマが読んでも得られるものがあまりないと思う。もちろんよい復習にはなる。けれど、それ以上の能力開発にはならないと思う。また、新人教育担当の人が読めばいいのではないかと思う。

ある程度のレベルのプログラマであるかどうかを確認するためにこの本を読む、というのもひとつの手だと思う。これを1時間以内で読了して、それなりにつっ込みを入れられる人は、間違いなく初級プログラマの域をはるかに超えているだろう。そういう人は、こういう入門書は早く卒業したほうがいい。

ということで、自分も入門書レベルの技術書を読んで勉強した気になるのはもう止めようと思った。もっとコアな技術書を読まなければね。



ifとelseの思考術 プログラマ脳育成講座
ifとelseの思考術 プログラマ脳育成講座

読むべき人:
  • プログラミング初心者の人
  • 基本情報処理技術者を受験する人
  • 自分が初級プログラマかどうかを確認したい人
Amazon.co.jpで『矢沢久雄』の他の本を見る

bana1 役に立ったらクリック☆  にほんブログ村 本ブログへ



トラックバックURL

トラックバック一覧

1. [etc]TB への反応  [ 予定は未定Blog版 ]   February 18, 2009 00:52

コメントが弾かれたのでこっちで返信します。 C言語でポインタまで理解してメモリ空間の使い方を把握し、さらにアルゴリズムとデータ構造まで習得しておくと、大体他のプログラミング言語もすんなり習得できると思う。これは経験的に自信を持って言える。 ifとelseの思考術

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星