Javaのブールプリミティブ型名が 'bool'ではないのはなぜですか?


28

Javaには

  • int そして Integer
  • boolean そして Boolean

これは少し矛盾しているようです、なぜ

  • boolvs Booleanプリミティブ型に確立された短い名前を使用するのですか?

または

  • integervs Integer型名の一貫性を保つために?

私が考えて C ++を使用することを決めたboolJavaが使用することに決めたよりもかなり早くboolean、そしておそらくまた、いくつかの(一度に非標準?)Cの拡張もそうするために歴史的な順位があっただろうbool。私はしばしばbool最初に本能的に使用しようとすることに気づきました(現代の編集者は余分なコンパイルラウンドなしですぐにこれを見つけます)。

誰かがそのストーリー(の一部)を覚えているか、ネットで関連する歴史的な議論を見つけてリンクすることさえできれば、それは素晴らしいことです。


8
booleanは、間違いなく、より明示的ですbool。なぜint呼ばれないのか聞いてみたいinteger。私の推測:intcharどこすぎに変更する染み付いintegercharacter、しかしboolまだ完全には確立されませんでした。
ヨアヒムザウアー

「C ++は、Javaがブール値を使用することを決定するよりもかなり早くboolを使用することを決定したと思います。」なぜだと思いますか?
ジョンバーソロミュー

6
よるにし、現実の世界の言語の進化:C ++ 1991から2006までbool型はJavaが含まれ、1993年にC ++に導入されたboolean1995年の最初のリリースではなく、Javaプロジェクト自体がの更なる情報源を見つけることなく、1991年に開始されました情報、それが最初に来たもの、または彼らがお互いにどのような影響を与えたのか(もしあれば)明確ではありません。
ジョンバーソロミュー

3
オーク言語仕様(バージョン0.2、1994著作権で保護さ)も含むbooleanタイプ。(Oakは後にJavaに名前が変更されました)。どちらの方向にも優先順位や影響力を示す明確な証拠はまだありませんが、それにより日付がさらに近くなります。
ジョンバーソロミュー

それはありますが、矛盾しないdoubleDouble同様。
vortexwolf

回答:


20

これらの設計決定に実際に関与していた人々と連絡を取らない限り、決定的な答えを見つけることはまずないと思います。しかし、JavaとC ++の両方の開発のスケジュールに基づいて、私は、Javaのは、と推測うboolean前に選ばれた、または同時、、導入boolC ++に、そして確かに前にbool広く用いられていました。boolean(ブール代数のように)使用履歴が長いために選択された、または既にboolean型を持っている他の言語(Pascalなど)に一致する可能性があります。

歴史的背景

よるにし、現実の世界の言語の進化:C ++ 1991から2006までbool型は1993年にC ++に導入されました。

Java booleanは1995年の最初のリリースに含まれていました(Java Language Specification 1.0)。私が見つけることができる最初の言語仕様は、Oak 0.2仕様ですOakは後にJavaに名前が変更されました)。そのOak仕様は「Copyright 1994」とマークされていますが、プロジェクト自体は1991年に開始され、1992年の夏までに動作デモが行われたようです。


12

実際、ここでのJavaは歴史に対してより正確です。真および偽の値の理論は、ジョージブールによって発明され、一般にブール代数と呼ばれます。

boolは実際には長い名前を避けるための単なるショートカットですが、現代のIDEの自動補完サポートを考えると、これはもはや正当な理由ではありません(Javaが採用を決定した時代には戻っていませんでしたboolean)。

私はJavaの決定プロセスには参加していませんが、誰かが歴史を気にかけるなら、「ブール代数」が関連する歴史的優先順位です。e


5
同じ理由で、ファイルを作成するPOSIX呼び出しが呼び出されcreat()ます。
Blrfl

5
だからあなたはそうあるintべきだと言っているinteger

4
あなたが歴史的に正確になりたい場合は、私が思うにBoolean、それは(3つの値を持つことができます考慮、一種悪いのですBoolean.FALSEBoolean.TRUEnull)...ポイントは、という言語記号をプログラミングし、予約語は、いくつかの要因の妥協、そして歴史的な精度が常にありますおそらくそのリストではかなり低いでしょう。
ハイド

2
歴史的に正確であるつもりはありませんが、忘れないでください。すべての言語が、と呼ばれる10億ドルの間違いを許していないことを忘れないでくださいnull
フランク

2
ねえ@Frank、私はちょうどよりよいエラー報告に特定のNullPointerExceptionが状況を変換し、ハンドリング、そして積極的に忘れてしようとしているLALALAAをあなたが言うことを聞いていないLALALAAを ;-)
ハイド

-2

一貫性の問題に対処することはできませんが、ここには長い歴史があります。

私が思い出す限り、Algol 60はその論理型を「ブール」と呼ぶ最初の言語でした。Algol 60には、「整数」、「手順」などのタイプもありました。

Algol 68が登場し、「bool」、「int」、「proc」などの略語が流行しているようでした。

そのため、言語デザイナーは好みのスタイルを選択でき、その先例があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.