なぜいくつかのC++の名前は短く、時には理解しにくい場合があります。strcmp
、 cout
、cin
などです。しかし、Javaのような他の言語では短くはありません。それは時間、記憶、または何を節約しますか?なぜ標準C++ライブラリのいくつかの識別子が短いのですか?
答えて
これは、主にCから継承された標準C++ライブラリの部分に適用されます。C言語のC89より前の標準では、外部識別子の重要な部分は6文字に制限されていました。リンカーは残りの文字を無視することができました。そのため、標準Cライブラリでは、識別子の長さを6文字に制限しています。 C++は、そのライブラリを "卸売り"という形で組み込みました。
coutとcinについては、coutをエコーしてcinを読むことができませんでした。 –
@Motubet私はCライブラリの "悪影響"としてそれらを書きます:Cでは、標準のファイル記述子は 'stdin'、' stdout'、 'stderr'と呼ばれます。 C++のデザイナー(Stroustrup自身)は 'std'("標準 ")を' c'( "character")に置き換え、古いサフィックスを保持していました。 – dasblinkenlight
C++はアセンブラで作業していたプログラマによって長い間前に構築されたCから継承しています。
しかし、私はそれがプログラマーの数学的背景に深く関わっていると思います。英語の用語を使用することで言語を理解しやすくする初期の試みがありましたが、COBOLとSQLはおそらく唯一の生存者です。しかし、プログラミング言語の言葉は非常に正確な意味を持っているので、コロンではなく「SELECT」を使用することは少量にしか役立たず、クエリの残りの部分を書くためにSQLの詳細をすべて知る必要があります。
短い識別子は、経験豊富なプログラマーがコードを理解しやすくするために、構造の詳細を一目で把握し解析することができます。 C17-C18から科学論文を読んで、単一の方程式で何を書くかを説明するために散文のページを使用する必要がある場合は、理解するでしょう。
古いC標準ライブラリから派生したC++標準ライブラリの一部があります。古いC言語の標準ライブラリは、他の言語でInput/Outputなどの言語に組み込まれている機能を使って基本機能の一部を提供していた古いK & Rライブラリから派生しました。
Rationale for the ANSI C Programming Languageのこのセクションでは、C識別子の命名規則について説明しています。
C言語がコンパイルされ、コンパイラのマシンコード出力が実際のアプリケーションにリンクされています。リンクを行うソフトウェアは、通常、オペレーティングシステムベンダが提供する標準ツールの一部です。さまざまなベンダーが提供している利用可能なリンカーアプリケーションを調査した結果、最も基本的なものは、リンカーによって処理可能な外部IDに対して6文字で提供されていました。ただし、6文字の制限を指定すると、Cコンパイラで使用できるターゲットコンピュータのリストが大幅に増えました。
リンカの限界にとどまり、Cプログラマは他の言語で書かれたソフトウェアでも使用できるCプログラムと関数ライブラリを書くことができました。また、他の言語で書かれたライブラリの使用はCプログラマー。
- 1. なぜlibstdC++が必要なのですか? C++標準ライブラリの
- 2. Haskellの標準ライブラリに<<がないのはなぜですか?
- 3. C++の標準ライブラリにハッシュテーブルの実装が含まれていないのはなぜですか?
- 4. CPythonが標準ライブラリに `sphinx.autodoc`を使用しないのはなぜですか?
- 5. Haskell標準ライブラリにscanl '関数がないのはなぜですか?
- 6. NDKで標準のC++ライブラリが見つかりません
- 7. 識別子が識別子ではない場合、識別子は見つかりませんでしたか?
- 8. Android:Spinnerに標準のデザインがないのはなぜですか?
- 9. C++標準ライブラリがconstexprバージョンのcmath関数を提供しないのはなぜですか?
- 10. 標準ライブラリの一部を認識しないpylint
- 11. 異なるC++標準とリンクするC++標準ライブラリ
- 12. mingW内の標準Cライブラリ
- 13. Cの成熟標準ライブラリ
- 14. Visual C++標準ライブラリのキーワード
- 15. Cで、あなたが持つことができる識別子の最大量はいくらですか?
- 16. C++の移植可能な標準構文原子操作ライブラリ
- 17. C標準ライブラリの完全なオンラインリファレンス?
- 18. 標準ライブラリの "取得済み"識別子のリストはどこにありますか?
- 19. Go標準ライブラリのいくつかのビットマジックの意味を作る
- 20. Xcode:2つの異なるC++標準ライブラリが必要な2つのフレームワーク
- 21. なぜjQueryはW3C標準ではないのですか?
- 22. なぜデータフロープログラミングは標準ではないのですか?
- 23. 標準のメールクライアントといくつかのエキストラで電子メールを送信
- 24. c#識別子が必要ですか?
- 25. Java標準ライブラリがtoStringメソッドを実装していないのはなぜですか?
- 26. Node.jsの標準出力child_process execが短くなっています
- 27. レガシーC++ IOライブラリと標準化IOライブラリの違い
- 28. SaveFileDialogの標準でないファイル拡張子CLI/CLR/C#
- 29. jedi-vim omni標準ライブラリではない
- 30. なぜ識別子は数字で始まらないのですか?
人々は怠け者であり、怠け者は世界を動かすからです。 (: – Rubens
しかし、読みやすさは重要ではありません。 –
C89より前の標準では、外部識別子の重要な部分は6文字でしたので、リンカーは残りの文字を無視することができました。 – dasblinkenlight