Mengapa nama tipe primitif Java boolean bukan 'bool'?

28

Jawa memiliki

  • int dan Integer
  • boolean dan Boolean

Ini sepertinya agak tidak konsisten, mengapa juga tidak

  • boolvs Booleanmenggunakan nama pendek yang dibuat untuk tipe primitif?

atau

  • integervs Integeragar nama jenis tetap konsisten?

Saya pikir C + + telah memutuskan untuk menggunakan boolsedikit lebih awal daripada Java memutuskan untuk menggunakan boolean, dan mungkin juga beberapa (non-standar pada saat itu?) Ekstensi C juga, jadi akan ada presedensi historis untuk bool. Saya telah memperhatikan bahwa saya sering secara naluriah mencoba menggunakan boolpada awalnya (hal yang baik editor modern segera melihat ini tanpa putaran kompilasi tambahan), jadi akan menyenangkan untuk mengetahui alasan di balik keadaan saat ini.

Jika seseorang mengingat (bagian dari) cerita itu, atau bahkan dapat menemukan dan menautkannya dengan diskusi sejarah yang relevan di internet, itu akan bagus.

Hyde
sumber
8
booleanjelas lebih eksplisit daripada bool. Saya lebih suka bertanya mengapa inttidak dipanggil integer. Dugaan saya: intdan di charmana terlalu tertanam untuk diubah ke integerdan character, tetapi boolbelum sepenuhnya mapan.
Joachim Sauer
"Saya pikir C ++ telah memutuskan untuk menggunakan bool sedikit lebih awal dari Java memutuskan untuk menggunakan boolean" Mengapa Anda berpikir begitu?
John Bartholomew
6
Menurut Evolving sebuah bahasa di dan untuk dunia nyata: C ++ 1991-2006 , booljenis ini diperkenalkan ke C ++ pada tahun 1993. Java termasuk booleandalam rilis pertamanya pada tahun 1995, tetapi proyek Java sendiri dimulai pada tahun 1991. Tanpa menemukan sumber lebih lanjut dari informasi, tidak jelas bagi saya yang datang pertama, atau apa (jika ada) pengaruh mereka terhadap satu sama lain.
John Bartholomew
3
The Oak spesifikasi bahasa (versi 0.2, hak cipta 1994) juga termasuk booleanjenis. (Oak kemudian berganti nama menjadi Java). Itu mendorong tanggal semakin dekat, meskipun saya masih melihat tidak ada bukti yang pasti untuk menunjukkan prioritas, atau pengaruh, di kedua arah.
John Bartholomew
Itu tidak konsisten, ada doubledan Doublejuga.
vortexwolf

Jawaban:

20

Tanpa berhubungan dengan orang-orang yang benar-benar terlibat dalam keputusan desain ini, saya pikir kita tidak mungkin menemukan jawaban yang pasti. Namun, berdasarkan jadwal pengembangan Java dan C ++, saya akan menduga bahwa Java booleantelah dipilih sebelumnya, atau bersamaan dengan, pengenalan boolke C ++, dan tentunya sebelum booldigunakan secara luas. Mungkin saja booleandipilih karena sejarah penggunaannya yang lebih lama (seperti dalam Aljabar Boolean), atau untuk mencocokkan bahasa lain (seperti Pascal) yang sudah memiliki booleanjenis.

Konteks sejarah

Menurut Evolving sebuah bahasa di dan untuk dunia nyata: C ++ 1991-2006 , booljenis ini diperkenalkan ke C ++ pada tahun 1993.

Java termasuk booleandalam rilis pertamanya pada tahun 1995 ( Spesifikasi Bahasa Java 1.0 ). Spesifikasi bahasa yang paling awal yang dapat saya temukan adalah spesifikasi Oak 0.2 ( Oak kemudian diubah namanya menjadi Java ). Spesifikasi Oak itu ditandai "Hak Cipta 1994", tetapi proyek itu sendiri dimulai pada tahun 1991, dan tampaknya memiliki demo kerja pada musim panas 1992 .

John Bartholomew
sumber
12

Sebenarnya, Jawa lebih akurat untuk sejarah di sini. Teori nilai-nilai benar dan salah ditemukan oleh George Boole dan umumnya disebut sebagai Aljabar Boolean untuk menghormatinya.

boolbenar-benar hanya jalan pintas untuk menghindari nama yang lebih panjang, namun, mengingat dukungan penyelesaian otomatis dari IDE modern, ini bukan lagi alasan yang sah (dan bahkan tidak kembali pada hari-hari ketika Jawa memutuskan untuk menggunakan boolean).

Saya belum menjadi bagian dari proses pengambilan keputusan untuk Jawa, tetapi jika seseorang peduli pada sejarah, maka "aljabar Boolean" adalah prioritas sejarah yang relevan, dan orang mungkin juga mempertanyakan keputusan C / C ++ tentang mengapa mereka memutilasi nama Boole dengan memotong itu e.

jujur
sumber
5
Alasan yang sama panggilan POSIX untuk membuat file dipanggil creat().
Blrfl
5
Jadi maksudmu intseharusnya integer?
4
Jika Anda ingin menjadi historis akurat, maka saya pikir Booleanadalah jenis buruk, mengingat itu dapat memiliki 3 nilai ( Boolean.FALSE, Boolean.TRUE, null) ... Point ini, pemrograman simbol bahasa dan kata-kata reserved selalu kompromi dari beberapa faktor, dan akurasi sejarah adalah mungkin cukup rendah dalam daftar itu.
hyde
2
Saya tidak berniat akurat secara historis, tetapi jangan lupa, bahwa tidak semua bahasa mengizinkan kesalahan miliaran dolar yang disebut null.
Frank
2
@Jujur Hei, saya hanya mengonversi situasi NullPointerException tertentu ke pelaporan dan penanganan kesalahan yang lebih baik, dan mencoba untuk secara aktif melupakan LALALAA tidak mendengar apa yang Anda katakan LALALAA ;-)
hyde
-2

Saya tidak bisa mengatasi masalah konsistensi, tetapi ada sejarah panjang di sini.

Seingat saya, Algol 60 adalah bahasa pertama yang menyebut tipe logisnya sebagai 'Boolean'. Algol 60 juga memiliki tipe seperti 'integer', 'procedure', dll.

Tiba-tiba datang Algol 68, dan singkatan-singkatan tampaknya sedang populer: 'bool', 'int', 'proc', dll.

Jadi, perancang bahasa dapat memilih gaya mana yang mereka suka, dan ada preseden untuk itu.

dave
sumber