당연히이 질문을하는 가장 좋은 사람은 우리가 아닌 JCP 집행위원회의 누군가입니다 . 그러나 이것이 유휴 추측에 관여하는 것을 방해하지는 않습니다.
모든 "이 기능이 구현되지 않은 이유"질문에 대한 답변은 항상 혜택이 비용을 초과하지 않았기 때문입니다.
Eric Lippert (이전의 C # 팀원)는 제품에 기능이 있으려면 해당 기능이 다음과 같아야합니다.
- 처음에 생각
- 원하는
- 설계
- 지정된
- 구현
- 테스트
- 문서화
- 고객에게 배송
다시 말해서, 새로운 프로그래밍 언어 기능을 실현하기 위해서는 반드시해야 할 중요한 일이 많이 있어야합니다. 생각보다 비용이 큽니다.
C # 팀에서 모든 새로운 기능 요청은 점수 -100으로 시작합니다. 그런 다음 팀은 혜택 및 비용을 평가하고 혜택에 대한 포인트를 추가하며 비용에 대한 포인트를 뺍니다. 점수가 0을 초과하지 않으면 제안 된 기능이 요약됩니다. 다시 말해, 새로운 기능은 강력한 이점을 제공해야합니다.
그러나 Elvis Operator 는 C #으로 만들었습니다. 왜 Java로 만들지 않았습니까?
명백한 유사성에도 불구하고 Java와 C #은 언어 철학이 크게 다릅니다. 이는 Java 엔터프라이즈 프로그램이 대규모의 구조적 아키텍처 콜렉션 인 경향이 있다는 사실에 의해 입증됩니다. 의식의 제단과 코딩의 용이성에서 간결함과 언어 표현력이 희생됩니다. 개발 팀의 모든 사람이 인식 할 수있는 잘 알려진 소프트웨어 아키텍처 패턴은 언어 편의보다 선호됩니다.
이 Reddit 교환을 고려하십시오 .
Elvis 연산자는 7 이후 모든 Java 버전에 대해 제안되었으며 매번 거부되었습니다. "순수"에서 "실용"에 이르기까지 다른 언어는 스펙트럼을 따라 다른 지점에 속하며, 엘비스 연산자를 구현하는 언어는 Java보다 스펙트럼의 실제적인 끝을 향한 경향이 있습니다.
15 년 이상 Java 전문가로 구성된 팀이 일종의 고도로 분산 된 동시 백엔드 처리 시스템을 작성하는 경우 상당한 수준의 아키텍처를 원할 것입니다.
그러나 중급 팀과 중급 팀 중 절반이 Visual Basic에서 마이그레이션했으며 CRUD 작업을 주로 수행하는 ASP.NET 웹 응용 프로그램을 작성하는 경우 무리를 디자인하는 것이 과도 할 수 있습니다. 의 AbstractFactoryFactory
추상적 멀리 당신이 열을 사용해야하는 형편 레거시 데이터베이스에 Null 허용되는 통제 할 수 없다는 사실에 클래스.
언어 철학의 이러한 중대한 차이점은 언어가 사용되는 방식뿐만 아니라 언어 설계 프로세스 자체가 수행되는 방식까지 확장됩니다. C #은 자비로운 독재자 언어입니다. C #에 새로운 기능을 사용하려면 Anders Hejlsberg 한 사람 만 설득해야합니다 .
자바는보다 보수적 인 접근 방식을 취합니다. Java에 새로운 기능을 제공하려면 Oracle, IBM, HP, Fujitsu & Red Hat과 같은 대규모 공급 업체 컨소시엄에서 합의를 얻어야합니다. 분명히 그 과정은 느리고 새로운 언어 기능에 대한 더 높은 기준을 제시 할 것입니다.
"x 기능이 구현되지 않은 이유는 ..."이라는 질문에는 항상 "... 그렇게 좋은 아이디어라면"이라는 단어가 암시 적으로 포함됩니다. 여기서 충분히 설명했듯이, 선택은 결코 간단하지 않습니다.