ทำไมชื่อดั้งเดิมของบูลีนบูลีนจึงไม่ใช่ 'บูล'


28

Java มี

  • int และ Integer
  • boolean และ Boolean

ดูเหมือนจะไม่สอดคล้องกันสักหน่อย

  • boolvs Booleanเพื่อใช้ชื่อที่สั้นลงที่กำหนดไว้สำหรับประเภทดั้งเดิม?

หรือ

  • integerเทียบIntegerกับชื่อประเภทที่สอดคล้องกัน?

ฉันคิดว่า C ++ ได้ตัดสินใจที่จะใช้boolไม่น้อยก่อนหน้านี้กว่า Java ตัดสินใจที่จะใช้booleanและอาจจะยังมีบางส่วน (ที่ไม่ได้มาตรฐานในเวลา?) ส่วนขยาย C boolเกินไปดังนั้นก็จะมีความสำคัญทางประวัติศาสตร์ ฉันสังเกตเห็นว่าฉันมักจะพยายามใช้สัญชาตญาณในboolตอนแรก (สิ่งดี ๆ ที่ทันสมัยแก้ไขได้ทันทีโดยไม่ต้องมีการคอมไพล์รอบพิเศษ) ดังนั้นจึงเป็นการดีที่จะทราบเหตุผลเบื้องหลังสถานการณ์ปัจจุบัน

หากมีคนจำเรื่องราว (หรือบางส่วน) หรือแม้แต่สามารถค้นหาและเชื่อมโยงไปยังการสนทนาทางประวัติศาสตร์ที่เกี่ยวข้องในเน็ตนั่นก็คงจะดีมาก


8
booleanboolแน่นอนอย่างชัดเจนมากกว่า ฉันอยากถามว่าทำไมintไม่มีใครโทรintegerมา ฉันเดา: intและcharที่ฝังแน่นเกินไปที่จะเปลี่ยนเป็นintegerและcharacterแต่boolยังไม่เป็นที่ยอมรับอย่างเต็มที่
Joachim Sauer

"ฉันคิดว่า C ++ ตัดสินใจใช้บูลค่อนข้างเร็วกว่า Java ตัดสินใจใช้บูลีน" ทำไมคุณคิดอย่างนั้น
John Bartholomew

6
ตามการพัฒนาภาษาในและสำหรับโลกแห่งความเป็นจริง: C ++ 1991-2006 , boolประเภทที่ได้รับการแนะนำให้รู้จักกับ C ++ ในปี 1993 Java รวมอยู่booleanในรุ่นแรกในปี 1995 แต่โครงการ Java เองก็เริ่มในปี 1991 โดยไม่ต้องค้นหาแหล่งเพิ่มเติมของ ข้อมูลไม่ชัดเจนสำหรับฉันซึ่งมาก่อนหรืออะไร (ถ้ามี) มีอิทธิพลต่อพวกเขาซึ่งกันและกัน
John Bartholomew

3
ข้อกำหนด Oak ภาษา (เวอร์ชั่น 0.2 ที่มีลิขสิทธิ์ 1994) นอกจากนี้ยังมีbooleanประเภท (Oak ถูกเปลี่ยนชื่อในภายหลังเป็น Java) สิ่งนั้นทำให้วันที่เข้ามาใกล้ยิ่งขึ้นแม้ว่าฉันจะยังไม่เห็นหลักฐานที่ชัดเจนว่าแสดงความสำคัญหรือมีอิทธิพลในทิศทางใดทิศทางหนึ่ง
John Bartholomew

มันไม่สอดคล้องกันมีdoubleและDoubleเช่นกัน
vortexwolf

คำตอบ:


20

โดยไม่ต้องติดต่อกับผู้ที่มีส่วนร่วมในการตัดสินใจออกแบบเหล่านี้จริง ๆ ฉันคิดว่าเราไม่น่าจะหาคำตอบที่ชัดเจนได้ อย่างไรก็ตามตามระยะเวลาของการพัฒนาทั้ง Java และ C ++ ฉันจะคาดเดาว่า Java booleanถูกเลือกมาก่อนหรือร่วมสมัยกับการแนะนำboolC ++ และแน่นอนก่อนหน้าboolนี้มีการใช้งานอย่างกว้างขวาง เป็นไปได้ที่booleanถูกเลือกเนื่องจากประวัติการใช้งานที่ยาวนานกว่า (เช่นในพีชคณิตแบบบูล) หรือเพื่อให้ตรงกับภาษาอื่น (เช่น Pascal) ซึ่งมีbooleanประเภทอยู่แล้ว

บริบททางประวัติศาสตร์

ตามการพัฒนาภาษาในและสำหรับโลกแห่งความจริง: C ++ 1991-2006 , boolประเภทได้รับการแนะนำให้รู้จักกับ C ++ ในปี 1993

Java รวมอยู่booleanในรุ่นแรกในปี 1995 ( Java Language Specification 1.0 ) ข้อกำหนดภาษาที่เก่าที่สุดที่ฉันสามารถหาได้คือข้อมูลจำเพาะของOak 0.2 ( Oak ถูกเปลี่ยนชื่อเป็น Java ภายหลัง ) ที่สเปคโอ๊คมีการทำเครื่องหมาย "ลิขสิทธิ์ 1994" แต่โครงการของตัวเองเริ่มต้นในปี 1991 และเห็นได้ชัดว่ามีการสาธิตการทำงานโดยในช่วงฤดูร้อนของปี 1992


12

ที่จริงแล้ว Java มีความแม่นยำมากกว่าในประวัติศาสตร์ที่นี่ ทฤษฎีของค่าจริงและเท็จถูกคิดค้นโดยGeorge Booleและมักเรียกกันว่าพีชคณิตแบบบูลในเกียรติของเขา

boolเป็นจริงเพียงทางลัดเพื่อหลีกเลี่ยงชื่ออีกต่อไป แต่ได้รับการสนับสนุนอัตโนมัติเสร็จสิ้นการ IDEs ทันสมัยนี้ไม่มีเหตุผลที่ถูกต้อง (และก็ไม่ได้กลับมาในวันที่เมื่อ Java ตัดสินใจที่จะไปboolean)

ฉันไม่ได้เป็นส่วนหนึ่งของกระบวนการตัดสินใจสำหรับ Java แต่ถ้ามีใครสนใจประวัติแล้ว "พีชคณิตแบบบูล" คือลำดับความสำคัญทางประวัติศาสตร์ที่เกี่ยวข้องและหนึ่งอาจถามคำถามการตัดสินใจ C / C ++ ว่าทำไมพวกเขาทำให้ชื่อบูลีกลายเป็นความผิดe


5
ด้วยเหตุผลเดียวกันโทร POSIX creat()ในการสร้างไฟล์ที่เรียกว่า
Blrfl

5
ดังนั้นคุณกำลังพูดว่าintควรจะเป็นintegerอย่างไร

4
หากคุณต้องการที่จะถูกต้องในอดีตแล้วฉันคิดว่าBooleanเป็นชนิดของที่ไม่ดีคิดว่ามันจะมีค่า 3 ( Boolean.FALSE, Boolean.TRUE, null) ... จุดที่ถูกเขียนโปรแกรมภาษาและสัญลักษณ์คำสงวนมักจะประนีประนอมในหลายปัจจัยและความถูกต้องทางประวัติศาสตร์ อาจจะค่อนข้างต่ำในรายการนั้น
hyde

2
ผมมีความตั้งใจที่ถูกต้องในอดีตไม่ได้ nullแต่อย่าลืมว่าไม่ทุกภาษาที่อนุญาตให้มีการพันล้านดอลลาร์ผิดพลาดที่เรียกว่า
แฟรงก์

2
@ Frank เฮ้ฉันแค่แปลงสถานการณ์ NullPointerException ที่เฉพาะเจาะจงเพื่อรายงานข้อผิดพลาดและจัดการ nicer และพยายามที่จะลืมLALALAAอย่างแข็งขันไม่ได้ยินสิ่งที่คุณพูดLALALAA ;-)
hyde

-2

ฉันไม่สามารถแก้ไขปัญหาความสอดคล้องได้ แต่มีประวัติอันยาวนานที่นี่

เท่าที่ฉันจำได้ Algol 60 เป็นภาษาแรกที่อ้างถึงประเภทตรรกะของมันเป็น 'บูลีน' Algol 60 ยังมีประเภทเช่น 'จำนวนเต็ม', 'ขั้นตอน' ฯลฯ

อัลกอล 68 มาพร้อมและตัวย่อดูเหมือนจะเป็นสมัย: 'บูล', 'int', 'proc' ฯลฯ

ดังนั้นนักออกแบบภาษาสามารถเลือกสไตล์ที่พวกเขาชอบและมีแบบอย่างสำหรับมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.