Java 부울 기본 유형 이름이 'bool'이 아닌 이유는 무엇입니까?


28

자바는

  • intInteger
  • booleanBoolean

이것은 약간 일치하지 않는 것 같습니다.

  • boolBoolean원시 유형에 대한 설립 짧은 이름을 사용 하는가?

또는

  • integerInteger일관된 유형 이름을 유지?

내가 생각하는 C ++을 사용하기로 결정했다 bool꽤 이전에 자바가 사용하기로 결정보다 boolean어쩌면 일부, 그리고 (당시 비표준?) C 확장이 너무, 너무 과거의 우선 순위가되었을 것이다 bool. 나는 종종 본능적 bool으로 처음 에 사용하려고 시도하는 것을 보았습니다 (현대 편집자는 추가 컴파일 라운드없이 즉시 이것을 발견합니다).

누군가가 이야기를 기억하거나 (일부) 그물에서 관련 역사적 토론을 찾아서 연결할 수 있다면 좋을 것입니다.


8
boolean보다 분명합니다 bool. 오히려 int호출되지 않은 이유를 묻고 싶습니다 integer. 내 생각 엔 : intchar위치를 너무 깊이 배어 든로 변경합니다 integercharacter하지만 bool아직 완전히 확립되지 않았다.
Joachim Sauer 2016 년

"C ++이 부울을 사용하기로 결정한 것보다 훨씬 일찍 bool을 사용하기로 결정했다고 생각합니다. 왜 그렇게 생각하십니까?
존 Bartholomew

6
에 따르면 과 현실 세계의 언어를 진화 : C ++ 1,991에서 2,006 사이bool유형은 자바가 포함되어 1993 년에 C ++에 도입 된 boolean1995 년 첫 번째 릴리스에 있지만, 자바 프로젝트 자체가 더 소스를 찾는없이 1991 년에 시작되었다 정보가 무엇인지, 누가 먼저 왔는지 또는 그들이 서로에게 어떤 영향을 미쳤는지 명확하지 않습니다.
존 Bartholomew

3
오크 언어 사양 (버전 0.2, 1994 저작권)도 포함 boolean유형입니다. 오크는 나중에 Java로 이름이 바뀌 었습니다. 그래도 날짜를 더 가깝게 밀어 넣지 만 여전히 어느 방향 으로든 우선 순위 또는 영향을 나타내는 확실한 증거는 없습니다.
존 Bartholomew

그것은 거기에 모순되지 않는 것입니다 doubleDouble뿐만 아니라.
vortexwolf

답변:


20

실제로 이러한 설계 결정에 관여 한 사람들과 연락을 취하지 않으면 결정적인 답을 찾지 못할 것입니다. 그러나 Java와 C ++의 개발 타임 라인을 바탕으로, Java가 C ++ boolean도입 이전에 또는 동시에 boolC ++ 도입 에 따라 선택 되었고 확실히 이전 bool에 널리 사용 되었다고 추측합니다 . 그것은 그 수 boolean인한 (부울 대수에서와 같이) 사용의 긴 역사에 선택되었다, 또는 이미 있었다 (예 파스칼과 같은) 다른 언어와 일치하는 boolean유형입니다.

역사적 맥락

C ++ 1991-2006이라는 실제 환경에서 진화하는 언어에 따르면 이 bool유형은 1993 년에 C ++에 도입되었습니다.

Java boolean는 1995 년 첫 릴리스 ( Java Language Specification 1.0 )에 포함되었습니다. 내가 찾을 수있는 가장 빠른 언어 사양은 Oak 0.2 사양입니다 ( Oak는 나중에 Java로 이름이 변경되었습니다 ). 그 오크 사양은 "저작권 1994"로 표시되어 있지만, 프로젝트 자체는 1991 년에 시작되었으며 1992 년 여름까지 시연했습니다 .


12

실제로 Java는 역사상보다 정확합니다. 참과 거짓 값의 이론은 George Boole에 의해 발명되었으며 일반적으로 그의 명예에서 부울 대수 립니다 .

bool는 실제로 더 긴 이름을 피하는 지름길이지만, 최신 IDE의 자동 완성 지원을 고려할 때 이것은 더 이상 유효한 이유가 아닙니다 (Java가 가기로 결정했던 시절도 아닙니다 boolean).

나는 Java에 대한 의사 결정 과정에 참여하지 않았지만 누군가가 역사에 관심이 있다면 "부울 대수학"이 관련된 역사적 우선 순위이며, C / C ++ 결정이 왜 Boole의 이름을 잘라서 부울의 이름을 자르는 지에 대한 의문을 가질 수도 있습니다. e.


5
파일을 작성하기위한 POSIX 호출이 같은 이유 creat()입니다.
Blrfl

5
그래서 당신은 int해야한다고 말하고 integer있습니까?

4
당신이 역사적으로 정확 싶은 경우에, 나는 생각한다 Boolean(이 세 값을 가질 수 고려, 종류 나쁜이다 Boolean.FALSE, Boolean.TRUE, null) ... 포인트가되는 프로그래밍 언어 기호 및 예약어는 항상 여러 가지 요인의 타협, 그리고 역사적 정확성이 아마도 그 목록에서 꽤 낮을 것입니다.
hyde

2
나는 역사적으로 정확한 의도는 없지만 모든 언어가 수십억 달러의 실수를 허용하지는 않는다는 것을 잊지 마십시오 null.
Frank

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.