C ++위원회는 새로운 표준을 발표하기 전에 일종의 프로토 타입 컴파일러로 새로운 설계 사양을 테스트합니까? 아니면 큰 컴파일러가 구현할 때까지 이론적 인 표준을 발표합니까?
boost::shared_ptr
=> std::shared_ptr
.
boost.lambda
=> C ++ 11 람다 식) 의 프로토 타입으로도 사용되었습니다 .
C ++위원회는 새로운 표준을 발표하기 전에 일종의 프로토 타입 컴파일러로 새로운 설계 사양을 테스트합니까? 아니면 큰 컴파일러가 구현할 때까지 이론적 인 표준을 발표합니까?
boost::shared_ptr
=> std::shared_ptr
.
boost.lambda
=> C ++ 11 람다 식) 의 프로토 타입으로도 사용되었습니다 .
답변:
C ++ 표준위원회는 , 어떻게, 제안, 투표를 제출 표준을 게시 등이 아니라 너무 많은 표준 자체 또는 방법을의 기술적 인 세부 사항을 바탕으로 조례 및 규칙을 가지고 있지만, 이들의 대부분은 조직의 구조를 중심 테스트 될 수 있습니다.
내가 아는 한 기능이나 디자인을 "테스트"하기위한 공식적인 요구 사항은 없습니다. C ++은 참조 또는 "기본"구현 (예 : Microsoft CLR, Oracle JDK, Zend PHP)이 없다는 점에서 다소 독창적입니다. 그러나위원회 멤버는 언어 및 컴파일러 구현에 대한 깊은 지식을 갖춘 많은 조직으로 구성됩니다. 예를 들어, 이전 링크를 따르면, 존경받는 C ++ 컴파일러를 보유한 Microsoft 및 Intel 담당자가 표시됩니다. GCC에 기여하는 Red Hat과 다른 회사들도 참여합니다.
새로운 기능을 제안 할 때,위원회 구성원은 다른 기능과 충돌 할 수 있거나 구문 분석이 불필요하게 구문 분석하는 방식 으로 모호해 지도록 하는 것이 가능한지 여부에 대해 이미 좋은 아이디어를 가지고 있습니다 . ( 여기에 C ++ 문법에 대한 좋은 질문이 있습니다 )
짧은 대답은 "아니오,위원회는 프로토 타이핑을 사용하여 디자인을 테스트 할 필요가 없다는 것입니다." 그러나위원회 멤버는 대부분의 프로그래머가하지 않는 수준에서 모든 세부 사항을 이해하는 C ++ 전문가이기 때문에 그다지 필요하지 않습니다. 이 사람들은 언어 이론과 컴파일러 디자인 전문가 인 언어 설계자 입니다.
프로세스에 컴파일러 벤더가 관여하는 경우, 이들 중 하나 이상이 새로운 기능을 프로토 타입 할 수 있지만, 이에 대한 공식적인 요구 사항은 없으며 공개적으로 제공되는 문서에서 읽은 내용도 아닙니다. C ++위원회.
또한 매우 보수적 인 경향이 있어 위험 할 수있는 많은 양의 새로운 기능을 지정하지 않고 실제 수요가있는 새로운 기능을 점진적으로 추가합니다. 실제로 최근에는 실제 환경에서 이미 작동하는 독점 확장 또는 오픈 소스 라이브러리로 존재하는 새로운 기능을 추가했습니다. 예를 들어, C ++ 11 및 C ++ 14는 Boost의 일부를 통합합니다. Boost 는 실제 환경에서 여러 컴파일러 및 실행 환경에서 이미 테스트되었습니다. 이미 테스트 된 것을 테스트 할 필요가 없습니다.