UNIXという考え方―その設計思想と哲学

https://www.amazon.co.jp/dp/4274064069

読書の目的

  • Unixの思想を取り入れることでプログラミング能力や設計を向上する
  • シンプルな実装を行うためのバックグラウンドを理解する
  • ミニマムな設計思想を身につける

評価

  • 👍

書評(まとめ)

良書、間違いなく良書。だがしかし非常にエモい文章でもある。
序文でも書かれているが第7章以降からはそれ以前までの思想哲学の補足的領分であるところが大きい。
第7章以前の内容に対して批判的であるのであればその後の内容に同意することは難しいと思う。

読んだのが図書館で借りた初版本だったので時代の変化を感じるところもままあるが
UNIXにおける哲学や思想が大部分を占めているが、現代でも通じる普遍の思想や哲学が端的にまとまっている。
この思想や哲学はUNIXやプログラミングに限らない汎用性の高いため、読み手次第なところはあるものの色々なことに応用が出来そうではある。

個人的に特に気に入ったのは

  • 「定理1 スモール イズ ビューティフル」
  • 「定理3 できるだけ早く試作を作成する」
  • 「定理6 ソフトウェアの梃子を有効に活用する」

が特に気に入っている。
プログラムなどで小さくまとめろ!というのは往々にしてよく聞くので元々目次を見たときから注目していたが
他2点はさほど注意を払っていなかったことと思っていたよりも有用な知見を得られたように思う。

特に梃子の話は気に入っている、もし気になった方は是非とも読んで欲しい。
(梃子という表現も実に的確な表現でいいね!)

手元においておきたい、あるいは会社の本棚に置いておいて欲しい書籍だし、新人プログラマに読んで欲しい書籍の1つとしてあげておきたい。
まだ読んだことがない人は決して分厚い書籍でもないので読んでもらいたい。

事前に気になった

  • 8ページ:UNIXの考え方:簡単なまとめ
  • 23ページ:1つのプログラムには1つのことをうまくやらせる
  • 31ページ:出来るだけ早く試作を作成する
  • 49ページ:効率より移植性
  • 77ページ:シェルスクリプトを使うことで梃子の効果と移植性を高める
  • 90ページ:過度の対話的インターフェイスを避ける
  • 98ページ:すべてのプログラムをフィルタにする
  • 118ページ:90パーセントの解を目指す

重要なフレーズ

  • 6ページ: 偉大なプログラムは追いつめられた人間が書く
  • 14ページ:問題を完璧に理解していないから巨大な解決策を実装してしまう
  • 28ページ:ソフトウェアのエンジニアという職業には、継続的な改訂作業がつきものだ
  • 30ページ:「ソフトウェア開発に終わりはない、あるのはリリースだけだ」
  • 32ページ:人間の作るシステムは人間に似る
  • 68ページ:ものすごく成功したいのなら、世界に働きかける力を何倍にもしなくちゃならない(中略)1時間働いたら、5時間分、100時間分、いや1000時間分の結果を生み出すようにしなさい
  • 69ページ:よいプログラマはよいコードを書く、偉大なプログラマはよいコードを借りてくる
  • 102ページ:プログラマにできる最善のことはインターフェースを出来るだけ柔軟にし、現在わかっている範囲内で出来るだけ多くの事態に備えておくことだ

反論/異論

98ページ:すべてのプログラムをフィルタにする

反論というか疑問なのだけどフィルターという考え方が体感的に理解するのはスッキリしなかった。
とはいえ例題として挙げられている内容は至極もっともな内容なのだけども自分の中の理解と言葉がスッキリと折り合いをつけることが出来ていない感じがしてちょっと気持ち悪い。
何度か読んだりしているうちに折り合いが取れるようになるのかもしれない、とは思うが。

102ページ:小文字を使い、短く

唯一、不満というか反論したかった内容。 小文字であることが優しいと表現されているがこの感覚は英語ネイティブでないからそう感じないのかもしれない。
だけどぼくはそうではなくて、大文字に敢えてする必要性や非効率さを嫌ったプログラマの怠惰からではないかなと思う。