ある程度まであなたはそれを言うことができます。しかし、それは必ずしも真実ではありません。単純な設計アプローチで「もっと達成する能力」としてそれを読むべきだと思います。そして、シンプルにするためには、タスクを理解しやすく組み立てやすい部品に分割する必要があります。率直に言うUNIXの哲学は、次の例で説明できます。
すべてのプログラミングは、何らかのデータ操作です!また、場合によっては、プログラミングはプログラム操作そのもの(メタプログラミング)でもあります。UNIXの哲学は、テキストを処理することを想像してください。テキストとは何ですか?結局のところ、テキストは何らかのデータです。組織化された定義にアセンブルすると、テキストはXMLおよびJSONにもなります。テキストは数字のリストにすることもできます。テキストはcsv、tsv、その他にもできます。他のテキストまたは文字列は、コンテキストがねじれ、私たちが望むものに変わる可能性があるという理由だけで、プログラミングデータの本当に巨大な領域を表すことができます!
すべてのプログラミングには、何らかのデータ編成が必要です。整理するには検索が必要です...
a。そこには、「grep」、「fgrep」、およびそのファミリーがあります。
検索したら、いくつかのソートを行う必要があります。
b。これを行うための「ソート」コマンドがあります。
2つのファイルを並べ替えたので、それらを比較します。
c。これで、「diff」、「cmp」などができました。
ファイル間に違いがないことがわかりました。より多くの整理されたデータが必要になりました。
d。ファイルに書き込むための「cat」、パイプ、およびリダイレクト演算子があります。
より具体的な解析が必要です。
e。あなたはそれを行うために、頭、尾、より多く、より少ない、カットなどを持っています...
このすべては、「|」を使用して縫い合わせます コードをまったく作成せずに、いつか本当の強力なものを生成します。より多くの検索と縫製については、..
f。awk、shell、sed。
awk、shell、sedを使用すると、切り取りよりもテキストをより詳細に制御できます。diffなどを使用すると便利です。あなたは今までそのcommand1 | command2 | command3 ...シリーズは、一種のワークフローメカニズムです。Ifと組み合わせると、これはより強力になります。
今、もっと楽しくなります。
「Perl」と呼ばれるユーティリティを聞いたことがありますか?このことは非常に強力で、想像できるほどの少ない作業で、手元のタスクを事実上実行できます。DBMのようなユーティリティと一緒に縫製することで、ご使用のアプリケーションにわずかな時間の持続要求を行うことができます。私たちはテキストの世界から一歩も下がっていませんが、プログラミング環境のほとんどの側面をカバーできていることを忘れないでください。
したがって、UNIXはオペレーティングシステム以上のものだと思います。最も簡単な方法で問題を解決するために設計されたツールと環境のコレクション。単純な方法は、必ずしもソリューションの実装の単純さを意味するものではありません。しかし、シンプルさ自体はそれほど大きなものではありません。
私はこれをredditのどこかで読みました。
「あなたの唯一の設計目標がシンプルである場合、Plan9と同じ数のユーザーを獲得できます」