著作一覧 |
ハードコアプログラマのためのハードコアプログラミング入門書の続き、ちょっとだけ。
まず、間違いの指摘。
P.62 本文1行目「文(§4.4.1.1)を使用することで」
→「if文(§4.4.1.1)を使用することで」
昼の本業のほうでいろいろ考えることがあって、それはつまりいかにユーザーストーリーをテクニカルタスクに落とすか、つまりは手続きをシステム的に構成可能なものとするかについての、人による極端な差というものについてだ。
『C++によるプログラミングの原則と実践』は、そうとうに(考え方が)古典的な書籍だと思うのだが、結局のところは、本書の1章(前ふりのパートの最後)と2章(プログラミングの初歩の最初)でストラウストラップが書いていることこそが、重要なのだ。
1章は、次から次へと、身の回りのどこにコンピュータがあり、どこにソフトウェアがあり、どう役に立っているかについて、ちょっと幼児向けの乗り物図鑑を彷彿させるところがある、いわゆる「気づき」のための章となっている。
2章は、Hello worldなのだが、章末の練習問題2が端的だ。
本章で学んだことを応用し、コンピューターが2階のトイレを探し出すための命令からなるプログラム(§2.1)を記述する。(略)
もちろん、これを額面通りに受け取って、まだC++でそんなものは書けないよ! と読者に言わせるための問題ではない。
2階のトイレを探すという処理を、命令に分解しろという問題なのだ。(関数型プログラミングの世界ではないことはわかる)
ちゃんとした先生について練習問題を解けば、一連の箇条書きがまず作成され、そこから共通部分がくくりだされ、あるいはループが見つかり、もし古典的なプログラムがお好みであれば構造化されたプログラムとなり、もしロボット目線で書くのであれば、比較的古典的なオブジェクト指向プログラムとなる。
この訓練が全然ない開発者がいることに驚くわけだが、少なくとも本書は、まずそこから入っている。コンピュータのように考えて、コンピュータのための命令を作る。
ちなみに変数は箱型モデルでの説明だが、C(C++)の変数は確保されたメモリ領域(として説明してあるから、抽象的な箱というわけではない)(とはいえ最適化で消え失せることもあるが、それは本書のレベルでは知ったことではない)に名前をつけたものとして説明しているので、このプログラミング言語では正しい。
・というわけで抽象度は低いわけだが、なんか安心して読めるんだな、これが。
ジェズイットを見習え |