よしばノート

出遅れたコンサルタントの焦燥の日々

書評:達人プログラマー

かねてよりのバイブル、達人プログラマーを読んだので気になる言葉を列挙してみた!

 

日々の意思決定に継続的かつ批判的な評価をする。IBMのモットーであるTHINK!は達人プログラマが唱えるべきマントラ。

ソフトウェアのエントロピーは増大する。
ほぼ全ての物理法則を超越するソフトウェア開発もエントロピー増大の法則からは強く縛られる。
ソフトウェアがある限界を超えるまで無秩序さが増大した状態をプログラマは腐ったプログラムと呼ぶ。
どんなに注意を払っても「割れ窓理論」により破壊が進んでしまう。

聞き手を理解するための合言葉 WISDOM →つまり相手に話を聞いてもらいたいときの合言葉
W 何(what)      聞き手に何を知ってほしいのか
I 興味(interest)   言いたいことの中にある彼らの興味とは何か
S 洗練(sophisticate) それらはどれくらい洗練されているか
D 詳細(detail)    彼らはどの程度詳細を知りたがっているか
O 誰の情報(own)    誰にその情報を知ってもらいたいのか
M 動機づけ(motivate) 話を聞いてもらえるにはどうするのか

良い聞き手になる
良い聞き手になってもらいたいなら、まず自分が良い聞き手になる。
自分が彼らの言うことに耳を貸さないなら彼らも自分の言うことには耳を貸さないのだから。

プログラマは常にメンテナンスモードなのです。
我々の理解は日々変わり、設計やコーディング中にも新たな要求は現れ、環境すら変わるからです。


開発やメンテナンスを簡単にかつ信頼性の高いものにするには「DRY原則」に従うのが唯一の方法です。
DRY-don't repeat yourself (同じことを2度するな)
全ての知識はシステム内において、単一かつ明確な、そして信頼できる表現になっていなければならない。
これはつまり知識の二重化を避けるということ。知識の二重化とは同じ知識を二か所以上に記述することです。

「良いコードには多くのコメントがある」というのは重要だが、
「見苦しいコードには多くのコメントが必要となる」という点には注意が必要である。
低水準の知識はコードに任せ、高水準な解説をコメントで記述する。
そうすれば変更発生のたびにコードとコメントの双方を修正する必要はなくなり、知識の二重化が発生しにくくなるからです。

最終決定などというものは存在しない。
シュレディンガーの猫は箱を開けるまでは「生きている状態と死んでいる状態が重なり合っている」というもの。
2つの宇宙があり、猫が生きている宇宙か死んでいる宇宙かは箱を開けるまで分からない。
コードの中にもシュレディンガーの猫がいっぱい詰まった箱が入っているという観点でコードの将来を考える。

書評:実践コンピュータビジョン

この本は、コンピュータビジョンを勉強する上でこの本はPythonを用いて解説している。
自分のような初心者には敷居の高い面もあるのでここで備忘録を残しながら進めていきたい。

まず、Pythonのインストールはバージョンが2015/11/01現在では2.7.10と3.4.3が出ているが
ネットでの情報を参考にすると3.4.3はまだ互換性で不便な面が残っており学習には2.7.10が適切だと判断した。

Python2.7.10をインストールした後はPIL(Python Imaging Library)をインストールする。
(インストール方法に関しては他のネット情報が有益なのでここでは省略)
これはネットで検索したのちPythonのバージョンにあったものをインストールすれば問題ないだろう。

本の順番では次にMatplotlibを扱っているがこれはNumPyに依存しているらしい。(正確には不明)
なので先にNumPyをいれてみる。
また、インストールが正常終了しているかを確認するのはコマンドプロンプト
python -m pip list」と打てば確認できる。
インストールにあたってはzip版をダウンロードしてコマンドからインストールする方法も紹介されているが、
自分は得てしてうまくいかなかったので、その代りexe形式のものでインストールする方が簡単だろう。

あとは、SciPyとデバック用のIPythonをインストールすれば1章で使うモジュールはすべて用意できるはず。

ちなみに、使用する画像データはもちろん「標準画像データベース(SIDBA)」を用いる。
(慣れたら自分で撮った写真でも実験してみたいが)

続く。

書評:幸せな未来はゲームが創る

世の中、大ぴらに世界を変えるだの言っている人は少ない。
誰でも心の中ではデカいことをやりたいとか、業界を変えるんだとかぼんやり思っていたとしても、
それを周りに堂々と公言している人は少ないと思う。

ネットでの発言とかを見てもあんまりいなくて、
この本の著者はゲームが世界を幸せな場所にできると言い切っていて面白い。

結構分厚い本だけれど、まずは第1章を読み終えたのでその覚書でも残しておこうかな。
(カッコ内は自分の意見)

ゲームによって現実を改善していく。現実とは自分のストレスや気持ち。
ソーシャルゲームによって離れた人とも一緒に”遊ぶ”ことができる。(単純にメールで連絡を取り続けるのは難しいと思うし、この遊びが継続的なコミュニケーションに必要なのかな)
からかい合うことがお互いの好意的な気持ちを高める。
1400兆バイト=1.4クアデリリオンバイト=1.4ペタバイト
ゲーム固有の4つの特徴:ゴール、ルール、フィードバック、自発的な参加
優れたデザインのゲームはゲーマーを「フロー」状態にし、「フィエロ」を呼び起こす。
どうすればゲーマーは現実生活を損なわずにもっとプレイできるかというジレンマ
ゲーマーの後悔:一週間に20時間を超えると疑問を抱き始める。
実はアメリカンドリーム的なお金・名声などの外発的報酬よりも、自己研鑽や社会的な関係構築などの内発的報酬を得た方が幸福度が高い。
ゲームは外発的な報酬ではなく、内発的報酬を豊かにする自己目的活動である。
楽しい失敗によるフィードバックが次は成功できるという楽観を生む。さらに自身の能力や影響を与えらえる範囲への過大な評価を抑える柔軟な楽観性…ゲームはそれらを実践するのに完璧な環境。

取り留めなく書いたけど、結局はゲームによる現実の改善はできると確信しつつも課題やジレンマを感じる部分は残っているという論旨だろうか。

非常に面白い本だと思うのでゲーマーでなくても読んでみる価値はあると思う。