次: , 上: Legal Issues


2.1 独占的プログラムの参照

どんなところでも、GNUに関する作業のためや、作業中に、Unixのソースコー ドを参照してはいけない! (他の独占的プログラムについても。)

もしUnixプログラムの内部の曖昧な記憶を持っているなら、このことは、その イミテーションを書くことができない、とは言っていないが、そのイミテー ションを内部的に違った行で構成するようにしなさい。なぜなら、こうするこ とで、Unixバージョンの細部とあなたの結果とを、無関係で似ていないものに する傾向があるからだ。

例えば、Unixユーティリティは普通、メモリ使用量を最小化するように最適化 されている。もしあなたが代わりにスピードを追い求めれば、あなたのプログ ラムはかなり異なるものになるだろう。stdioを使わずに、入力ファイル全体 をコアに置き、それを検査してよい。Unixプログラムより最近に見付かった、 より賢いアルゴリズムを使いなさい。一時ファイルの利用を省きなさい。 二度やらず一回のパスでやりなさい (我々はこれをアセンブラで行った)。

あるいは、逆に、スピードではなく単純さを強めなさい。アプリケーションに よっては、今日のコンピュータのスピードでは、より単純なアルゴリズムが適 切である。

あるいは一般性を求めなさい。例えば、Unixプログラムはよく静的なテーブル や固定長の文字列を使っているが、それは制限を課していることになる。代わ りに動的な確保を行いなさい。あなたのプログラムを入力ファイルのNULや他 の変な文字を扱えるようにしなさい。拡張性のためにプログラミング言語を加 え、その言語でプログラムの一部を記述しなさい。

あるいは、プログラムのいくらかを独立して利用できるライブラリにしなさい。 あるいは、いつメモリを解放するか正確にトラッキングせずに、簡単なガーベ ージ・コレクタを使うか、obstacksのような新しいGNUの機能を利用しなさい。