Java boolean ilkel tür adı neden 'bool' değil?


28

Java’da

  • int ve Integer
  • boolean ve Boolean

Bu biraz tutarsız görünüyor, neden ikisi de değil

  • boolvs Booleanilkel tür için belirlenmiş bir kısa adı kullanmak için?

veya

  • integerIntegertür adları tutarlı tutmak için vs ?

Ben düşünüyorum C ++ kullanmaya karar vermişti boolbiraz daha erken Java kullanmaya karar daha booleanbelki de bazı ve (seferde standart dışı?) C uzantıları da öyle geçmiş öncelik olurdu bool. boolİlk başta içgüdüsel olarak ilk kez kullanmaya çalıştığımı farkettim (modern editörlerin bunu derleme derlemesi olmadan hemen anladıkları), bu nedenle şu anki durumun arkasındaki mantığı bilmek güzel olurdu.

Birisi hikayeyi hatırlarsa (bir kısmını), ya da net olarak ilgili tarihsel tartışmayı bulup bağlayabilirse, bu harika olurdu.


8
booleankesinlikle daha açıktır bool. Neden intçağrılmadığını sormayı tercih ederim integer. Benim tahminim: intve charnerede çok kökleşmiş şekilde değiştirilmesi integerve characterfakat boolhenüz tam olarak kurulmamıştır.
Joachim Sauer

“C ++, Java'yı boolean kullanmaya karar verdiğinden biraz daha önce bool kullanmaya karar verdiğini düşünüyorum” Neden böyle düşünüyorsunuz?
John Bartholomew

6
C ++ 1991-2006: Gerçek dünya için ve gerçek dil için bir dil geliştirmeye göre , booltür 1993 yılında C ++ ile tanıtıldı. Java boolean1995 yılında ilk sürümüne dahil edildi, ancak Java projesinin kendisi 1991 yılında başlatıldı. bilgi, hangisinin önce geldiği ya da birbirleri üzerinde ne (varsa) etkisi olduğu bana göre belli değil.
John Bartholomew

3
Meşe dil belirtimi (sürüm 0.2, 1994 telifli) da içermektedir booleantürü. (Meşe daha sonra Java olarak değiştirildi). Her iki yönde de öncelik veya etki göstermek için kesin bir kanıt görmemekle birlikte, bu tarihleri ​​daha da yakınlaştırıyor.
John Bartholomew

Tutarsız değil, var doubleve Doubleaynı zamanda.
vortexwolf

Yanıtlar:


20

Bu tasarım kararlarına gerçekten katılan insanlarla iletişim kurmadan kesin bir cevap bulamayacağımızı düşünüyorum. Bununla birlikte, hem Java hem de C ++ geliştirme zaman çizelgelerine dayanarak, Java'nın C ++ 'a booleangirmeden önce ya da eşzamanlı olarak, boolC ++' a girmeden önce ve kesinlikle daha önce boolgeniş kullanımda olduğunu varsaymıştım. Daha booleanuzun kullanım geçmişinden dolayı (Boolean Cebirinde olduğu gibi) ya da halihazırda booleantürü olan diğer dilleri (Pascal gibi) eşleştirmek için seçilmesi mümkündür .

Tarihsel bağlam

Göre ve gerçek dünya için bir dil Gelişen: C ++ 1991-2006 , booltip 1993 yılında C ++ tanıtıldı.

Java boolean, 1995'teki ilk sürümüne dahil edildi ( Java Language Specification 1.0 ). Bulabildiğim en eski dil özelliği Meşe 0.2 özelliğidir ( Meşe daha sonra Java olarak değiştirilmiştir ). Meşe spesifikasyonunun "Telif Hakkı 1994" olarak işaretlenmiştir, ancak projenin kendisi 1991'de başlatılmıştır ve görünüşe göre 1992 yazına kadar bir çalışma demosu yapılmıştır .


12

Aslında, Java burada tarihe daha doğrudur. Doğru ve yanlış değerler teorisi George Boole tarafından icat edildi ve şerefine genellikle Boole Cebri olarak adlandırılır .

booldaha uzun bir isimden kaçınmak için gerçekten bir kısayol olsa da, modern IDE'lerin otomatik tamamlama desteği verildiğinde, bu artık geçerli bir neden değildir (ve Java'nın gitmeye karar verdiği günlerde bile geri dönmedi boolean).

Java karar sürecinin bir parçası olmadım, ancak biri tarihe önem veriyorsa, o zaman "Boolean cebri" ilgili tarihsel önceliktir ve biri C / C ++ kararını neden Boole'un isminin kesilerek kesildiğine dair soru sorabilir. the e.


5
POSIX çağrısının bir dosya oluşturması için aynı neden denir creat().
Blrfl

5
Öyleyse intsöylemelisin integer?

4
Eğer tarihsel gerçeklere uygun istiyorsan, sonra düşünüyorum Boolean(üst üste 3 değerlere sahip olabilir dikkate alınarak, tür bad taşımaktadır Boolean.FALSE, Boolean.TRUE, null...) Nokta varlık, programlama dili sembolleri ve ayrılmış sözcükler hep çeşitli faktörlerden bir uzlaşma vardır ve tarihsel doğruluğu Bu listede muhtemelen oldukça düşük.
Hyde

2
Tarihsel olarak doğru olmak gibi bir niyetim yok ama unutma, tüm dillerin bu milyar dolarlık hataya izin vermediğini unutmayın null.
Frank

2
@Frank Hey, ben sadece belirli bir NullPointerException durumunu daha güzel hata raporlama ve işlemeye dönüştürüyorum ve aktif olarak unutmaya çalışıyorum LALALAA söylediklerinizi duymuyorum ;-)
hyde

-2

Tutarlılık sorununu çözemiyorum ama burada uzun bir geçmiş var.

Hatırladığım kadarıyla Algol 60, mantıksal türlerine 'Boolean' diyen ilk dildi. Algol 60 ayrıca 'tamsayı', 'prosedür' vb.

Ardından Algol 68 geldi ve kısaltmalar modaya büründü: 'bool', 'int', 'proc', vb.

Böylece, dil tasarımcıları hangi tarzı istediklerini seçebilir ve bunun için bir örnek var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.