『なぜプログラミングができないのか』
羽山 博(著)
2006年
オーム社
☆☆☆
プログラミング言語の文法は覚えたのに一向にプログラムが書けるようにならない、というプログラミング初心者を対象としたプログラミング入門書。サブタイトルは「イメージとパターンで学ぶJavaプログラミング」。この場合の「パターン」とは「デザインパターン」のことではなく、「定石」とでもいった意味。
「変数のイメージ」「代入と演算のイメージ」「条件分岐のイメージ」「繰り返しのイメージ」「配列のイメージ」「クラスのイメージ」の全6章構成。各章末に2〜4問の練習問題が付されており、巻末に解答例が掲載されている。
私の経験では、偏差値60程度の文系大学生に、配列変数に納められた数値の合計やら平均値やらを(forループを使って)求めさせるだけでも、そりゃもう大騒ぎになる。
sum = sum + data[i];
を(iの値を機械的に変えながら)繰り返すという発想は、機械の側に立った発想であって、人間の自然な発想ではない。こういうのって、(文系学生でも)何故かすんなり納得出来ちゃう人と出来ない人がおり、出来ない人はこの段階で脱落していく。入門書では「配列は比較的理解しやすい概念」とされていることが多いが、私に言わせればプログラミングの最初の壁は(ポインタどころか)配列だ。
本書の狙いは凄く良いと思う。「文法はわかるのに、プログラムが書けない」というのは、要するに「(プログラムで)やりたいことを(プログラミング言語の制約の元で)どのように表現すればいいかわからない」ということであり、本書では、変数の使い方や条件分岐・繰り返し処理の組み合わせ方について、非常に基礎的な定石パターンを懇切丁寧に解説している。
著者自身は、NHK教育番組で大西泰斗氏(認知言語学)が英語教育として展開していたような「イメージで理解する」方法と同じ方向性を考えていたようで、確かに出だしは良い感じなのだが…、最後の方は案外ただのプログラミング入門書に終わってしまっている。特に最終章の「クラスのイメージ」が尻すぼみ的に非常に中途半端に終わっているのが残念。私としてはむしろ本書に示されていた、「(処理の)結果として欲しいデータは何か」(それが戻り値になる)、「そのために利用できるデータは何があるか」(それが引数になる)からプログラムを考える、というプログラミングの指針の方が印象に残った。
どういうコンセプトなのかよくわからないが、本書における著者の口調はやや冷笑的・嘲笑的で、妙に偉そう。本人はそういうつもりではないのかもしれないが、読んでいて素朴に反感を感じた。巷に溢れる「プログラミング入門書」の多くを罵倒するなど、わりと攻撃的でもある(著者の意見には同意できるのだが)。読者としては、他の入門書(の著者)に対する皮肉と、著者が読者に本当に伝えたいと思っている(だろう)「プログラミングの際にもつべきイメージ」とを分けて書いて欲しかった(前者は不要である)。そうした方がもっと簡潔でかつ内容も豊かな本になっていたと思う。『
基礎Visual Basic 2008』(羽山博(著) 2008年 インプレスジャパン)はそのように書かれた良書だったので、この本を手に取ってみたのだが…。
一応Javaの入門書も兼ねているが、プログラミング自体が全く初めてという読者が本書を読んでJava文法とプログラミングの定石の両方を一挙に学ぶのは難しいだろうと思う。本書の前に最初級のJava入門書に目を通しておく必要はあるだろう。本書の後に、より本格的な「入門書」に進めば、単なるプログラム例もまた違って見えるかもしれない。
本文215ページ程度。

0