1

Alan J. Perlis によるEpigrams in Programmingから:

22. 優れたシステムに弱いコマンド言語を使用することはできません。

これは何を意味するのでしょうか?この原則の良い例は何ですか?

この基準を満たすコマンド言語を実装する方法について、どこで詳しく知ることができますか?

4

1 に答える 1

6

それが定式化された文脈の一部を知っておく必要があります。リンクされた記事は 1982 年に公開されたばかりであり、これらのエピグラムのいずれかが数十年前のものである可能性があります。しかし、1982 年も私の時代よりも前のことであり、当時の私の関連する印象は次のとおりです。

  • コンピューター システムは、特定のタスクに対してより高度に特化されていました。
  • システムには、特定のシステムについて訓練を受けた専任のオペレーター (プログラマーではない) がいます。
  • あるシステムの知識は、別のシステムに簡単に移行できませんでした。(今日、特定のプログラムについてオペレータをトレーニングしますが、特定のハードウェアと OS の組み合わせについてトレーニングすることはめったにありません。つまり、システムはより似たものになり、標準と慣習を採用しています。)

「コマンド言語」は、今日のシェル スクリプトを意味します。シェル プロンプトで「コマンド」を入力することに注意してください。

これらの基本はさておき、これは The Unix Way™ について私に語っています。

Windows プログラムが自動化にはるかに苦労し、多くのプログラム (さらには OS) がいくつかの設定を変更するために GUI を必要とする方法と比較してください。(それに対する態度は、Microsoft PowerShell では多少変化していますが、他のオペレーティング システムが持っているこの原則に従う数十年の経験がまだ欠けています。)

さらに、任意のユーザーの操作の基本モードがシステムのコマンド言語である場合 (1982 年の Unix の場合のように)、コマンド言語は別の意味で強力です: すべてのユーザーはその使用方法を知っており、学習する必要はありません。別々のツール。そのような状況では、コマンド言語は事実上システムであるため、コマンド言語達成できないことでシステムができることは何もありません。

これらのアイデアをすべて説明し、独自のコマンド言語を実装するためのロードマップとして使用できる単一のリソースを私は知りません。他のエピグラムも一般的にそうであるように、この概念は石で書かれたものよりもより幻想的です。Unix 全般、シェル (たとえば、sh に対する POSIX の標準、bash など)、その他のシェル スクリプト言語 (Perl や Python などのシバン行のあるもの) などについて読むことをお勧めします。

于 2010-02-26T03:41:18.450 に答える