適当に気持ちの赴くままに書きなぐってみます(いつもだけど)。おかげで多少読みにくいのは勘弁してください(いつもだけど)。
http://d.hatena.ne.jp/nowokay/20090317#1237285539
ちなみに、Cでプログラムを教える場合に「ポインタが難しすぎる」ということ以外に、書籍の問題があると思う。
「Cの入門書」というとき、「Cの文法を解説する本」であることがほとんどで、「プログラムの勉強をCで行う」という本はなかなか見当たらない。
だから、プログラムの勉強をCで始めたつもりが、Cの文法の勉強をしてしまって、Cの文法の難しい部分で「プログラムって難しい」と思ったり、Cの標準ライブラリの貧弱さから「プログラムって何かができるわけじゃないんだな」と思ったりしてしまう。
「プログラムって難しいよね。ヘッダファイルとかコンパイルとリンクとかポインタとか」って言われたら、「それはCの難しさです!」と言い返したくなると思う。
で、結局「何をしてるのかすらよくわからなかった」という感想になる。おそらく、学校の授業でプログラムを習った人でこういう感想になった人は多いんじゃなかろうか
今の時代ネットで検索すればかなりの情報が無料で手に入りますし、便利な世の中になったとは思いますけど、それがプログラミングを覚えるのによい時代になったとは到底思えず。
言語やライブラリそのものをきっちり覚える書籍はこの15年ですごい増えた。一方で、目的はソフトを作ること、音楽を鳴らすこと、お絵かきをすること、そしてその手段としてプログラミングがあるといった場合はこの15年で一気に敷居は上がったような気がする。だってそういう書籍は絶滅したもの。
ほんの20年くらい前まではこういったやりたいことがまずありきでそれをもって言語を少しずつ覚えていくという本はかなりあった。また、HelloWorldを表示するというプログラムを教える本はほとんどなかった。というか当時手にとって見たことないや。
一気に世界が変わってしまったのはC言語の書籍が出てきたあたりから。それまで環境依存だった部分をライブラリにして外だしするという画期的な方法で(今の人だとこのすごさというか、あまりの世界の変貌さはわからないだろうなぁ)おかげで勉強するものはstdio.hとかそんな程度。
つまり、ただのテキスト入力とファイルの入出力。
ものすごーく地味でつまらないんですよ。
「おいおい、おいらがやりたいのはスプライト表示してラスタースクロールさせて多重スクロールバリバリで効果音を出したいというところなんだが?」
あまりのギャップで倒れそうになったものでした。
そして、勉強してC言語を多少触れるようになったものの、
「さて、これから望みのものをだすのにどうしよう」
という感じで途方にくれてしまった。言語だけあってもだめなんですね。これは後にC言語でゲームを作成するという書籍とめぐり合い、なんとかなりました。ラスタースクロールとか垂直帰線期間割り込みとかほかにも必須の基礎的知識がたくさんあったかな。
BASICやマシン語の時代は大量にあった資料がC言語になるとぷっつりと資料が途切れてしまったのです。情報も大幅に減りました。そして現在、ここがどんどん悪化してきています。言語やライブラリそのものの書籍は大量に、そして充実しましたけど。
ふと思ったけど、こんな状況じゃ新しくプログラミングをしようなんて人が増えると思えないんだよね。今のほうがPCは一般的になり、誰もが知ってるアイテムだけれどもプログラミングを好きになりそうな人が増えそうな気がしない。どう考えてもマイコン時代のほうがPCはものすごく高かったし、持ってるだけで根暗とか悪いイメージのレッテルはられたり、そもそもPCが珍しくてしごとに使う人はほとんどいなかったし敷居は高かった。言語だって無料で高機能なやつがたくさんある。好きなのを選べるはずなのに!
C言語にしたって16bitでやっと使えるようになったし(C言語はマシン語に比べて遅くてメモリを大量に食う富豪的プログラミング前提の言語なので8bit時代はきついどころの話ではない)、X68というハードのおかげである意味普及したといえる言語だったりする(X68では異常なほどCコンパイラが売れたそうだ。おいらもバイトして7万くらいかせいで買ったし、GCCの普及率もすさまじかったはず。おかげでおいらのgnuのツールは15年前ですでにとまってる)。
それでも夢のある目的のためにプログラミングを勉強したもの。ゲームのルールやバランス調整、音楽、グラフィックなんでも創造することができる。ゲームに限らずだけど。一からすべて創造主となれる、つまり自分が神になれる瞬間なんだよね、プログラミングって。
逆にその楽しさを教えてあげればサルのように勉強し続けるんですよ。本人は勉強してるつもりはないけど、ひたすらプログラムを組むうちにどんどん慣れてくる。
少なくともおいらが20歳若かったらプログラマとして飯食う道を選ぶとはとても思えませんなぁ。
例えば、BASICであれだけ大量に技術者を生んだわけですから、例えば取っ掛かりはとにかくグローバル変数のみとかコレクション使わないで配列のみとかでいいわけですよ。おまじないがいっぱいあってもいいわけですよ。効率よくプログラミングしようとしていけばどんどん言語自体の勉強も進んでいってさらに深遠に入り込む。
たぶん、今30代以上の職業プログラマのほとんどはそんな人たちで構成されてると思う。ゲーム業界だとちょっと割合が高めだとは思うけど、おいらの見立てではあんまり大きな差はないと思う。
そういう目的を大事にする書籍って必要だと思う。
おいらが知る限り今の時代に真っ当にそれを実現しつづけているのは「大槻 有一郎」さんだけだと思う。まじで。
さすがに今回は飛ばしてる気がするので異論は認める。(^-^;