自動ニュース作成G
なぜsortコマンドはuniq機能を含んでいるのか?(Unix哲学はどこ行った!?)
https://qiita.com/ko1nksm/items/1f418d3509105dc626fa
2024-05-19 02:31:21
>Unix 哲学的に考えれば、行を並び替える sort コマンドと重複行を取り除く uniq コマンドは別のコマンドであるべきなように思えます。しかし sort コマンドには -u オプションとして uniq コマンドに相当する機能が組み込まれています。
知らなかった。ずっとuniq|sortしてたわ。それはともかく、
>「Unix 哲学を間違って理解しているものは、機能をバラバラにして単機能のコマンドを作ることこそが Unix 哲学であり唯一の正しい設計方法だと勘違いしている」ということです。なんでも極端に考えてはいけません。世界はそんなにシンプルではないのです。
・やりたい事は重複要素を取り出したいだけなのに、並び替えコマンドを使う時点で前提が破綻してるだろ。それは手段であって目的ではない。
・#1 目的はUNIXの哲学を貫徹する事ではなく、手間とリソースを最小に処理を行う事だろう。
・ソートせずに重複を排除するとメモリを大量に消費(2n)し、処理量は(n^2)のオーダーで増える。ソートを内部で持つとソートしてあるデータの処理時に二重にソートする事になり、しかも処理を外に出す事により自動的に(ソート専用のコマンドの最適化に伴い)より効率的なアルゴリズムを適用出来るし全体のコード量もバグも減らせる。
・sort | uniq とするよりメモリやCPUの使用を効率化出来そうだしね
・ユニークにするにはソートが要ります。なので使用頻度の高いsort文にユニークオプションを設計しました。
・#0だけどuniq|sortと書いたけど逆順やね。勘違い。
・ソフトウェア作法 懐かしい。勧められて全部読んだけど、すっかり忘れてるな。あの本のせい/おかげで、文書データはプレーンテキストで残すべきって考えになって、いまだ昔の「読める」データが手元に残ってるわ。独自形式のデータはクソ