time
とcreat
の代わりにgetCurrentTimeSecs
とcreateFile
のようなわかりにくいシステムコール名を使用する理由は何ですか。あるいは、Unixでより適切かもしれませんget_current_time_secs
およびcreate_file
。これは私を次のポイントに連れて行きます:誰かがキャメルケースまたは少なくともアンダースコアなしでcfsetospeed
のようなものを読みやすくする必要があるのはなぜですか?もちろん、呼び出しにはより多くの文字がありますが、コードの可読性がより重要であることは誰もが知っていますよね?
それは当時の技術的な制約によるものです。 POSIX標準は1980年代に作成され、1970年に生まれたUNIXを参照していました。当時のいくつかのCコンパイラーは、6文字または8文字の長さの識別子に制限されていたため、変数と関数の長さの標準を決定しました名前。
関連する質問:
dr01は正しいですが、別の理由もあります-使いやすさ。昔は、キーボードを打つほど快適なものはありませんでした。運が良ければ、昔ながらのタイプライターのようなものがありました。運が悪ければ、実際の物理的な操作を必要とするシステム( "キー"を押すのに多大な力を要した)に対処するか、カードに手動で穴を開けました。
つまり、6〜8文字の制限内でも、コマンドをできるだけ短くしようとしました。そのため、ls
ではなくlist
を使用し、creat
の代わりにcreate
を使用します。その時代のコードは、a
、x
、i
などの変数でいっぱいです-もちろん、x2
と友達。タイピングは大変な作業でした-今日では、タイピングによるlistIndex
の使用は、以前の「タイピング」i
によるものよりも少なくて済みます。オートコンプリートなどの追加のテクノロジーを使用)。
本当の質問は-どうしてそんなに多くのUnixのイディオムがもはや望ましくないのに存続するのか?
他の回答に加えて、UnixはMultics、CTSS、およびその他の現代的なオペレーティングシステムへの反応として開発されたことを指摘したいと思います。 http://www.multicians.org/devdoc.html でこれらのOSの感触をつかむことができます。たとえば、 http://www.multicians.org/mspm-bx-1-00.html はchange_name
ファイルの名前を変更するコマンドとして。 Unix mv
と比較してください。
また、非常に短いシステムコール名persistが使用される主な理由は、下位互換性です。新しいAPIはより明確になる傾向があることに気づくでしょう。例えばgettimeofday
およびclock_gettime
だけではなくtime
。
(今日でも、ループインデックスにwhateverIndex
の代わりにi
を使用すると、myで自動コードレビューエラーが発生します。本 ;-)
デニス・リッチーは自分自身にCの制約を設定しました。これは、Fortranでも必要とされなかったリンカー機能に依存しないというものです。したがって、外部名の6文字の制限。