【プリンシプルオブプログラミング】UNIX哲学

 

目次

はじめに

この記事は「プリンシプルオブプログラミング」を読んで自分なりにまとめた学習メモです。 

思想 〜プログラミングのイデオロギー

UNIX哲学

UNIX哲学とは、UNIXの背後にある設計の哲学のことで、いわば「UNIXという考え方」。

  

9個の定理

  • 小は美なり
  • 一つ1仕事
  • 即行プロトタイプ
  • 効率性より移植性
  • データはテキスト
  • レバレッジ・ソフトウェア
  • シェルスクリプト活用
  • 対話インタフェース回避
  • フィルタ化 

 

小は美なり

小さいものは扱いやすい。

コードを書く時は、小さなものから始めて、それを小さなままに保つ。

 

一つ1仕事

ソフトウェアがピュアになる。

一つのソフトウェアには、一つの仕事を担当させるようにする。

問題が大きかった場合は、まず、問題を分割する。そして、その小さな問題に対応する、小さなソフトウェアを作る。

 

即行プロトタイプ

試行錯誤なしでよいものは作れない。

 

早いプロトタイプ作成によって、リリースを早める。

 

【メリット】

  • 前提の誤りを早期に発見できる
  • 要件不備によって手戻りを減らせる
  • 早いうちから誤りを取り除く作業を始められる

 

効率性より移植性

ソフトウェアの価値を持続。

移植性を重視した設計を行う。

ハードウェアに依存する部分と、依存しない部分を切り離した設計を行う。

 

データはテキスト

テキストファイルは万能型。

ソフトウェアは、各々テキストファイルを入出力するように設計して、ソフトウェア同士の連携を容易にする。

 

レバレッジ・ソフトウェア

少ない労力で巨大な成果を得る。

機能満載の大きなソフトウェアを書くのではなく、それぞれが単機能で単価値に集中した小さなソフトウェアを作る。

 

シェルスクリプト活用

梃子(てこ)の効果を増幅する。

シェルスクリプトをグルー言語として使用する。

小さなソフトウェアをシェルスクリプトでつなげて、大きな仕事を成し遂げる。

 

対話インタフェース回避 

ユーザーもマシンもソフトウェアも束縛される。

1つの仕事をして、それを終えたら、コマンドインタプリタに制御を返すようなソフトウェアを作成する。

対話型のインタフェースを初心者向け、慣れている人向け、両方のインタフェースを用意する。

 

フィルタ化

ソフトウェアとは入出力である。

ソフトウェアは、データを処理するフィルタとして設計する。