mishimaの日記: コマンドについて
コマンドについて考察。
コマンドは次の種類に分かれる:
1.データソース。データを環境から抽出する。例えば ls、find。tar cf - などもそう。
2.データシンク。データを環境に埋め込む。tar xf - などがそう。
3.フィルタ。データを変形する。grep, gzcat など。
4.処理。データソースかつフィルタかつデータシンクとみなされる。rm など。
5.環境。環境を変えてしまう。sh, csh, su, sg など。
で、これらのコマンドの連携は、
基本的にはストリームのやり取りで実現されるわけだ。
使用するストリームは標準入力と標準出力、エラー出力。
エラー出力は例外として扱うことにしよう(エラー出力が一行でもあったら、例外が発生)。
ふー。
どうしてわざわざ言語を作るかと言えば、スクリプト言語の各モジュール、あれが気に入らないからなのだ。
効率を上げるためのモジュール化はともかく、
あるモジュールを使いたいがために全体で使用する言語が決まるなんて事態は馬鹿げてる。
自分は部品としての Perl は好きだが、
だからといって Perl でシステムを構成するという考え方には反対なのだ。
まあ、実際には実行効率を考えて、
Perl だか Python あたりのスクリプト言語を
組み込みで使用できるようにしたい、と考えてはいるけどね。
言語間で部品を結合するものとしては、Corba (DCOMだっていいけどさ)がある。
しかし、自分としてはむしろ「コマンド」を強く推し進めたい。
なぜって、Corba の使い勝手は Shell ほどには良くないからだ。
まあ、コマンドラインで Corba を使った呼び出しができるようなら、
考えんでもない。
結局、Unix 的なプログラムとは、
A. 使い捨ての実験的なコードをいかにかんたんに書くことができるか
B. 使い捨てのコードをいかにかんたんに繰り返し使うコードに変換できるか
が重要なんじゃないか?
sh などは A. をコマンドラインで実現して、
B. をシェルスクリプトで実現した。
そしてこの点については Corba はそれほど適していない、ということだ。
さらに補足すると、
C. プログラムを 0 から簡単に書き始められるかどうか
(つまり、既にあるソースを書き換えることによってしか
新たなものを作れない言語はダメ)
D. ソースを手書きのテキストファイルだけで構成できるかどうか
(専用のエディタを必要としないかどうか)
という点も言語としてはかなり重要で、Corba が採用されている既存の言語では
この項目も十分ではないと思うが、どうか。
#Xlib を使った C のプログラムなんて、絶対に 0 から書き始められないのでダメ。
#Java Applet などは、ウィンドウプログラムとしてはいいほう。
#VB もコード量で言えばいい線行ってるとは思うが、
#ソースをテキストファイルで作れないところがダメ。
#Makefile (make)もダメ。
#同じ観点で、TeX はかなりダメ。HTML も 4.01 になって書かなきゃいけないことが増えたのでダメ。
#その点、Wiki はかなり良い。
コマンドについて More ログイン