Tại sao tên kiểu nguyên thủy boolean của Java không phải là 'bool'?


28

Java có

  • intInteger
  • booleanBoolean

Điều này có vẻ hơi không nhất quán, tại sao không

  • boolvs Booleanđể sử dụng một tên ngắn hơn được thiết lập cho loại nguyên thủy?

hoặc là

  • integervs Integerđể giữ tên loại nhất quán?

Tôi nghĩ rằng C ++ đã quyết định sử dụng boolsớm hơn một chút so với Java đã quyết định sử dụng booleanvà cũng có thể một số phần mở rộng C (không chuẩn vào thời điểm đó?), Vì vậy sẽ có tiền lệ trong lịch sử bool. Tôi đã nhận thấy rằng ban đầu tôi thường cố gắng sử dụng theo bản năng bool(điều tốt là các biên tập viên hiện đại ngay lập tức phát hiện ra điều này mà không cần thêm phần biên dịch), vì vậy thật tuyệt khi biết lý do đằng sau tình trạng hiện tại.

Nếu ai đó nhớ (một phần) câu chuyện, hoặc thậm chí có thể tìm và liên kết với các cuộc thảo luận lịch sử có liên quan trên mạng, điều đó sẽ rất tuyệt.


8
booleanchắc chắn là rõ ràng hơn bool. Tôi muốn hỏi tại sao intkhông được gọi integer. Tôi đoán: intcharnơi quá ăn sâu phải được thay đổi để integercharacter, nhưng boolvẫn chưa được thành lập hoàn toàn.
Joachim Sauer

"Tôi nghĩ rằng C ++ đã quyết định sử dụng bool sớm hơn một chút so với Java quyết định sử dụng boolean" Tại sao bạn nghĩ vậy?
John Bartholomew

6
Theo Evolve một ngôn ngữ trong và cho thế giới thực: C ++ 1991-2006 , boolloại được giới thiệu cho C ++ vào năm 1993. Java được đưa booleanvào bản phát hành đầu tiên vào năm 1995, nhưng bản thân dự án Java đã được bắt đầu vào năm 1991. Không tìm thấy nguồn tiếp theo nào thông tin, nó không rõ ràng với tôi cái nào đến trước, hoặc ảnh hưởng (nếu có) của chúng đối với nhau.
John Bartholomew

3
Đặc tả ngôn ngữ Oak (phiên bản 0.2, có bản quyền 1994) cũng bao gồm booleanloại. (Oak sau đó được đổi tên thành Java). Điều đó đẩy ngày gần hơn nữa, mặc dù tôi vẫn không thấy bằng chứng xác định nào cho thấy sự ưu tiên, hoặc ảnh hưởng, theo cả hai hướng.
John Bartholomew

Nó không nhất quán, có doubleDoublelà tốt.
cơn lốc

Câu trả lời:


20

Không tiếp xúc với những người thực sự tham gia vào các quyết định thiết kế này, tôi nghĩ chúng ta khó có thể tìm thấy câu trả lời dứt khoát. Tuy nhiên, dựa trên các mốc thời gian phát triển của cả Java và C ++, tôi sẽ phỏng đoán rằng Java booleanđã được chọn trước đó, hoặc cùng lúc với phần giới thiệu boolvề C ++ và chắc chắn trước đây boolđược sử dụng rộng rãi. Có thể nó booleanđã được chọn do lịch sử sử dụng lâu hơn (như trong Đại số Boolean) hoặc để khớp với các ngôn ngữ khác (như Pascal) đã có một booleanloại.

Bối cảnh lịch sử

Theo Evolve một ngôn ngữ trong và cho thế giới thực: C ++ 1991-2006 , boolloại được giới thiệu cho C ++ vào năm 1993.

Java được bao gồm booleantrong bản phát hành đầu tiên vào năm 1995 ( Đặc tả ngôn ngữ Java 1.0 ). Đặc tả ngôn ngữ sớm nhất tôi có thể tìm thấy là đặc tả Oak 0.2 ( Oak sau đó được đổi tên thành Java ). Đặc điểm kỹ thuật đó của Oak được đánh dấu là "Bản quyền 1994", nhưng bản thân dự án đã được bắt đầu vào năm 1991 và dường như đã có một bản demo hoạt động vào mùa hè năm 1992 .


12

Trên thực tế, Java chính xác hơn với lịch sử ở đây. Lý thuyết về các giá trị đúng và sai được phát minh bởi George Boole và thường được gọi là Đại số Boolean để vinh danh ông.

boolthực sự chỉ là một lối tắt để tránh một cái tên dài hơn, tuy nhiên, với sự hỗ trợ tự động hoàn thành của các IDE hiện đại, đây không còn là lý do hợp lệ (và thậm chí còn không quay trở lại vào thời mà Java quyết định thực hiện boolean).

Tôi chưa tham gia vào quá trình ra quyết định cho Java, nhưng nếu ai đó quan tâm đến lịch sử, thì "đại số Boolean" là ưu tiên lịch sử có liên quan và người ta cũng có thể đặt câu hỏi về quyết định của C / C ++ về lý do họ cắt tên Boole bằng cách cắt bỏ cái e.


5
Cùng một lý do cuộc gọi POSIX để tạo một tệp được gọi creat().
Blrfl

5
Vì vậy, bạn đang nói intnên được integer?

4
Nếu bạn muốn trở thành lịch sử chính xác, sau đó tôi nghĩ Booleanlà loại xấu, xem xét nó có thể có 3 giá trị ( Boolean.FALSE, Boolean.TRUE, null) ... Point phúc, lập trình ký hiệu ngôn ngữ và lời nói dành riêng luôn luôn là một sự thỏa hiệp của một số yếu tố, và chính xác lịch sử là có lẽ khá thấp trong danh sách đó.
hyde

2
Tôi không có ý định chính xác về mặt lịch sử, nhưng đừng quên rằng, không phải tất cả các ngôn ngữ đều cho phép sai lầm hàng tỷ đô la đó được gọi null.
Frank

2
@Frank Này, tôi chỉ chuyển đổi một tình huống NullPulumException cụ thể sang báo cáo và xử lý lỗi đẹp hơn và cố gắng chủ động quên LALALAA không nghe những gì bạn nói LALALAA ;-)
hyde

-2

Tôi không thể giải quyết vấn đề nhất quán, nhưng có một lịch sử lâu dài ở đây.

Theo như tôi nhớ, Algol 60 là ngôn ngữ đầu tiên đề cập đến các loại logic của nó là 'Boolean'. Algol 60 cũng có các loại như 'số nguyên', 'thủ tục', v.v.

Cùng với Algol 68, và các chữ viết tắt dường như đang thịnh hành: 'bool', 'int', 'Proc', v.v.

Vì vậy, các nhà thiết kế ngôn ngữ có thể chọn bất kỳ phong cách nào họ thích và có tiền lệ cho nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.