HOME >> 書籍・人物 >> 山崎はるかのメモ


プログラミング参考書

Programmer's guide book

△メモエリアにもどる


なぜプログラムができないのか

PC雑誌のインタビューなどで、たまに たずねられるのが、
「プログラムの参考書で なにかいいのありますか?」
という質問。

インタビューに限らず、私のまわりで けっこうその質問は多いのだけど、
出版社は それを記事にするためだが、
一般の人が その質問をするには、いくつかのパターンがあって

  1. プログラミングに興味はあるのだが、なにから どうしていいのか よくわからない
  2. 特定の言語を 多少 理解しており、他人の作ったソースを部分的にいじることはできるが、最初からはつくれない
  3. 言語の構文と処理をある程度理解し、いざ オリジナルソフトも作り はじめてはいるが、なぜか完成しない
  4. プログラミングというより「ソフトを作りたい」のだが、設計の基本概念が浮かばない

つまり、「いい参考書ありますか?」という人は、そんな自分をリセットしたいから、聞いていることが多いのだと思う。

1はともかく、2〜4は、「すでに必要な知識はあるのに」、なんらかの理由で 先に進めなくなっているわけである。
こういった現象が 独学に多いのも確かだが、ちゃんとした先生に習って 学校で単位がとれた人でも、結構 いる。

なにが いけないのか

 こうなる原因は、プログラミングの習熟の過程で必要な「あるポイント」を欠いていることによるものだが、詳細は ちょっと長くなるので、別の機会に 書かせてもらうとして。 今回は そのひとつ。

 現在、多くの開発環境で 統合環境(IDE)が採用されている。
統合環境とは、
・エディタ・コンパイラ(インタプリタ)・デバッガ
が一体になっている開発環境のことであるが・・・
 苦手を克服したいという人に ぴっちりついて、「いったいどのように苦手なのか?」と診ていたら、だいたい 次のような兆候があった。

・エディタを使い切っていない (→ ソース入力の時点で未熟)

・コンパイラの表示がよくわからない(→エラー原因を見ようともしない→ コーディング技術・推理力が未熟なまま)

・デバッガの使い方がよくわからない
(→バグやエラー発生時に カンや思い付きでトライアンドエラーを繰り返すため、全体構造をイメージする技術が未熟なまま。→結果オーライのクセがつき、そのため「思いつき」が尽きた時点で、デバッグ不能となり、プログラムが未完成になる。)


つまり、統合環境であるがゆえに。
それぞれの機能をアンバランスに使っていて、そのことに本人がきづいていないか、気づいていても 苦手意識が先行して、まともに使っていない、あるいは自己流の使い方がしみついているなどして、結果、行き詰まっていることが多いわけだな。
 

「入門書」とは

 つまずいている人の多くが、統合環境の各要素(エディタ・コンパイラ・デバッガ)における、独習の失敗・あるいは 誤った自己流に陥っていることが原因であるなら!
そうなりにくくするのが 入門書 の役割であり、それならば いくつかおすすめすることができる。

 プログラミング参考書には あらゆるジャンルがある。「技術書」「リファレンス」「文例集」「試験対策」などなど。
今回は、つまずかないための条件を ある程度満たした書籍を「入門書」と呼ぶ。

「覚書本」と共に持つ

 多くの場合、プログラミングは まず

 を学び、次に言語としては、次のような大分類で学習してゆく

ここから再び、IDEに戻り、

次に

という手順で学習するのが無難だ。
あなたが手に取った「入門書」が、おおむね この内容であるならば 失敗はない。

-

 ただし、ここで強調しておきたいのは、
これらの手順は けっして「覚える」ものではなく、「経験して・慣れておく」ものである!
ということだ。

 人間の脳は、思考と記憶を 同時に行うには非効率な構造になっている。
プログラミングとは「思考」であって、記憶ではない。(記憶は コンピューター側がする)
なので、あなたの脳は 「思考」に特化すべきである。
つまり プログラミング入門とは、「おぼえないための訓練」ということになる。
(入門時に ここをかん違いしている人は多い)

 覚えないために、プロは みな、どうしているかというと。
入門書の内容を 、より詳細に 目的別・取扱別に解説した書籍を一冊持っておき、必要に応じて
「あれって どうやるんだっけ」
と引いているわけである。

これが「覚書本」である。

覚書本も三種類あり、
・言語性の事典(リファレンス) → PHPなど スクリプト系の場合
・操作性の事典(マニュアル) → Windows系のIDE・コントロール言語系
・技術解説書(逆引き等) → 必要に応じて

覚えないために、覚書本を使うといってもよい。
「Perl・PHP・Ruby・Java なんでも おっけーですっ!」
っていう プログラマがいるのは、この覚えない技術を習得した結果である。

-

したがって、入門書は 2〜3日・長くても1週間で読みきれる本でなくてはならない。
ページにして、だいたい 200〜300ページぐらいか。
一方、覚書本は、その言語を使う間、恒久的に持ち続ける可能性のある本である。

だいたい、このようなスタンスで選べば 自分の現在と未来に合った書籍が選べるのではないかと思う。

 

ランゲージリファレンスについて

 昔のPCに標準でついてきたBASICのマニュアルは、「チュートリアル+覚書本」として、200ページぐらいのものだった。
これが C言語あたりから、基本関数だけで300語程度になり、1冊ではおさまらなくなりはじめる。MS-Cだと、ランゲージリファレンスとプログラミングガイドが分冊されるようになった。
これが C for Windows あたりから、リソースマニュアルだの関数マニュアルだので、6分冊ぐらいになってきて、ペーパーとしての臨界点を迎える。
オブジェクト指向(クラス特性)のある言語では、ランゲージリファレンスは もう成立しないと思う。

なお、たいしてオブジェクトしていない PHP でも700以上の関数があるが、このあたりが1冊の限界かもしれない。

言語別おすすめ参考書

それぞれの言語で「単体でよくがんばってる本」はけっこうあるのだが、 入門書と覚書本の組合せでは 私は 以下をおすすめする。
※さらに 良い組合せを発見した場合は、差し替えることがあるので ご了承いただきたい。
 

書籍/言語 Visual C#
入門書  Microsoft Visual C# 2005 Express Edition入門

〔トレーニング順〕
IDE→レイアウト→ソース入力→定数変数→コントロール→コーディング→ファイル→コンパイル(EXE)

〔所感〕
プログラム経験者なら2〜3日・初心者でも1週間でクリアできる内容。
VB6.0/.NETからの移行組の人も、いきなり覚書本から入らず、この本をひととおり やっておくと、あとで かなり違ってくる。
なお Try〜Catch (エラートラップ)がないのは惜しいが、覚書本でフォローできる。
覚書本 Visual C# 2005 基礎 300の技

〔掲載順〕
IDE→変数・定数→ファイルシステム→コントロール→コーディング→デバッグ→テクニック集

〔所感〕
覚書本としては、完全。
Amazonでは、どうも この本の立ち位置を かんちがいしたフシの評価もついているが、サンプルコードは いろんな書き方をしてくれたほうが、ピンチにおいて都合がよい。
教科書を求めるなら入門書で。覚書本は バラエティさのほうが要求される。

 



 
書籍/言語 Visual Basic .NET
入門書 世界でいちばん簡単なVisualBasicのe本

〔トレーニング順〕
概説→IDE→レイアウト→ソース入力→デバッグ→クラス定数変数→コーディング→配列/構造体→オブジェクト(クラス)

〔所感〕
VBの歴史的背景により、初心者から超上級者まで対応すべく、ぎゅうぎゅうに詰め込んでいる感がある。(漢字も多い・ページも多い)
 なので、もし超!初心者が書店で他の本と見比べたら他の本をとってしまう可能性がある。
だが、プログラミング参考書は読むのではなく使う本である。使ってみるとわかるが、各ページが 非常によく練られていて、ポイントを マルや 線で示しており、要所がきわめてわかりやすい。
Try〜Catch (エラートラップ)がないことや、コントロールまわりが ばっさり切られているのが残念であるが、それらは次項の覚書本で がっちり足りる。
覚書本 VB.NET基礎学習Bible―270例題で学ぶプログラミングの散歩道

〔掲載順〕
概説→ステートメント→レイアウト→クラス/定数変数/スコープ→コントロール→オブジェクト→グラフィック→ファイル処理→アルゴリズム

〔所感〕
VB.NETの言語特性そのものの弊害に「ちょっと おぼえただけで サクサク使えるから」「いい気になって、その勢いでつまずく」という問題があるんだが。
 本書は それを待ち構えていたかのような部分を バッチリ掲載している。
たとえばプロシージャのオーバーロードや、ポリモーフィズムなど。
入門書と本書が互いの補完関係になっている。

なおVB6.0から上がってきた人は、どちらか一方でもよい。
 


 


以下はIDE環境ではないが、今でも私が手元に残している書籍である。
 
書籍/言語 C言語
入門書 Quick Cプログラミング500題

〔トレーニング順〕
定数/変数/型/演算子・くり返し/条件分岐・構造体/配列・アドレスとポインタ ほか

〔所感〕
MS QuickC用とはなっているが、グラフィックと漢字の取り扱いに関する数ページのみで、全体としては ほぼ C言語用の「課題形式」の入門書。
言語(ランゲージ)リファレンスも兼ねている。
書籍/言語 C++
入門書 C++プログラミング300題

〔トレーニング順〕
C言語(基礎ひととおり)→ オーバーロード →  ストリーム →  ファイル → オブジェクト指向

〔所感〕
UNIXで GCC を使う人には、こちらがおすすめ。
なお 後に、C++オブジェクト指向プログラミングとして再刊されるが、あまり変わってないらしいので、入手できるほうを。
書籍/言語 Windows C++
覚書本 C/C++プログラマのためのWindows95プログラミング

〔トレーニング順〕
概要→メッセージ→メニュー→ダイアログボックス→コントロール/クライア
ント領域→スレッド処理→グラフィック

〔所感〕MFCを「使わない本」というのは、ほとんど これだけじゃなかっただろうか。
それで300ページに、これだけの内容を、ちょうどに・見事に まとめた手腕・バランス、ともに秀逸だと思う。
 

入門書・覚書本の組合せのメリット/デメリット

Windowsなどのクライアントアプリケーション、UNIX上のサーバーアプリケーション、SQLの各種クエリーなど、現代の言語環境は ひとつおぼえてりゃすむという時代ではない。
VBだけでも VB6.0、.NET2003、2005と 3種類の大きなクセがある。

定期的なメンテナンス・小規模なデバッグ程度であれば、たとえ1〜2年 その言語から離れていても、ソースコードのツラを見てれば 少しは思い出して、いじりなおす程度のことはできるかもしれない。
しかし、あらたな機能の追加となると、ソースを眺め倒したところで おいそれと浮かんでくるものではない。

そうゆうとき、入門書・覚書本のどちらから手にすることが多いかというと、私の場合、圧倒的に「入門書」のほうが先なのだ。
それで 「あー そういえば こうだったわ」 と イメージが戻り始め、で、「覚書本」をめくるうちにカンが戻り始める。

すなわち、入門書は ブランクに対する「スターター」の役割を持ち、「覚書本」で確かな手ごたえに代わってくる。
この間、数分〜30分ぐらいの集中儀式みたいなものだが、このウォームアップ効果の違いは 後になればなるほど大きい。

逆に、もし 一分冊だけのリファレンス本しかない場合、仕事への着手はできても、アンバランスな状態を数日 引きずってしまうこともある。


入門書/覚書本の組合せのデメリットとしては、「書店で 中を見なければ判らない→通販では判断できない」ことである。
ただ入門書については、おおむね 売上(人気)と中味が比例しているので、Amazonでランキングを見て、いくつかピックアップしたものを、大き目の書店で 見比べてみるのも テ だろうと思う。
 

(2007/08/30・山崎はるか)


メモエリアに戻る