ケン・トンプソンは、「クリエイトを「e」で綴る」と言ったとき、何を意味しましたか?


59

1
実は、彼は最も可能性の高い彼が言ったことを意味するものではありませんでした:彼はおそらく彼が呪文だろうことを意味creatして2「E年代-結局、1はすでに存在しています。もちろん、暗黙のメッセージは、この[1]タイプミスを修正するだけで大​​きな変更をせずにUNIXが意図された方法になったということです。
ディートマールクー

回答:



33

彼はman 2 creatシステムコールに言及するだけではありません。彼はまた、可能であればすべての小さなキャラクターを節約する時代遅れの傾向について言及しています。これは、特に今では別のキャラクターを入力して保存することがほとんど障害にならないときに混乱するだけです。


15
私は彼がcreat()のみに言及していたという質問の文脈で考えています。彼が言っていたのは、ファイルを作成するためのシステムコールでのこの小さなスペルエラーを除いて、Unixについてこれまでとは違うことは何もなかったということです。

15
@jmucchiello、スペルミスではありません。これは意図的な(非標準ではありますが)略語です。それはのような略語を多用してフィットしfcntllsmv一般的には、など。
マシューフラシェン

6
同意しますが、TBを保存する場合でもこれらのabbrvtnsが大好きです:)
tgkprog

2
テレタイプキーは押すのが困難です。いくつかの手紙を保存することは有益でした。除去できる最初のものは母音と冗長な子音でした。
エルキンアルプGüney17年

24

新しいファイルを作成するためのUNIXシステムコールを指します。一部のマシンのリンカーは、最大6文字の識別子に制限されていました。どうやら、ケンはそのようなリンカを使用する必要があったため、この制限に合わせてcreateシステムコールがcreatに短縮されました。皮肉なことに、作成者も同じです。

関連項目:第9戒はどういう意味ですか?


15
6文字の制限は、コンパイラとして(コンパイラ生成されたものと衝突、ユーザシンボルを避けるために)先頭に追加、5に翻訳'_'ユーザー変数/関数名の前に、と使用しないように注意した'_'シンボルを生成するとき。
フォンブランド

3
@vonbrand:それは、どのように、unlinkまたはumount存在する可能性があるのかを説明していないようですcreat
Dolda2000

@ Dolda2000まあ、リンカにはこの制限がありますが、コンパイラにはありませんでした。だから、umountと衝突でしょうumounumounxまたは何が、名前が許可されます。しかし、それは純粋な憶測です:)
ルアン

23

私は答えるのに6年遅れていますが、現存の答えはすべてトンプソンの引用のポイントを見逃していると思います。

私は「e」でcreatを綴ります。

ケントンプソンは、ファイルを開いたり、場合によっては作成したりするために使用される関数の名前を嘆いていません。むしろ、彼はUnixが適切に行われたことを表明しています。つまり、別の方法で行われるべき主要なものは何もありません。

微妙な点は、Unixのアーキテクチャは健全であるということである、と実装は大丈夫です。Unixで改善するものを見つけるには自転車に乗る必要があります。したがって、一般的なシステムコールの名前についての明らかな問題です。


3
そうですね、彼は、UNIXアーキテクチャを非常に小さな面で改善できることを伝えたいと思っています。しかし、基本的にUNIXはそれを正しく行いました。ところで。creatCLIコマンドではなくシステムコールです。
ikrabbe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.