C ++ 표준위원회는 디자인 아이디어를 어떻게 테스트합니까?


29

C ++위원회는 새로운 표준을 발표하기 전에 일종의 프로토 타입 컴파일러로 새로운 설계 사양을 테스트합니까? 아니면 큰 컴파일러가 구현할 때까지 이론적 인 표준을 발표합니까?



4
Boost는 수많은 라이브러리 개선을위한 프로토 타입 역할을합니다. 예 : boost::shared_ptr=> std::shared_ptr.
MSalters

6
나는 단순한 "그들"을 기대했다.
Sebb

@MSalters : Boost는 상당히 많은 핵심 언어 개선 (예 : boost.lambda=> C ++ 11 람다 식) 의 프로토 타입으로도 사용되었습니다 .
Jerry Coffin

답변:


26

C ++ 표준위원회는 , 어떻게, 제안, 투표를 제출 표준을 게시 등이 아니라 너무 많은 표준 자체 또는 방법을의 기술적 인 세부 사항을 바탕으로 조례 및 규칙을 가지고 있지만, 이들의 대부분은 조직의 구조를 중심 테스트 될 수 있습니다.

내가 아는 한 기능이나 디자인을 "테스트"하기위한 공식적인 요구 사항은 없습니다. C ++은 참조 또는 "기본"구현 (예 : Microsoft CLR, Oracle JDK, Zend PHP)이 없다는 점에서 다소 독창적입니다. 그러나위원회 멤버는 언어 및 컴파일러 구현에 대한 깊은 지식을 갖춘 많은 조직으로 구성됩니다. 예를 들어, 이전 링크를 따르면, 존경받는 C ++ 컴파일러를 보유한 Microsoft 및 Intel 담당자가 표시됩니다. GCC에 기여하는 Red Hat과 다른 회사들도 참여합니다.

새로운 기능을 제안 할 때,위원회 구성원은 다른 기능과 충돌 할 수 있거나 구문 분석이 불필요하게 구문 분석하는 방식 으로 모호해 지도록 하는 것이 가능한지 여부에 대해 이미 좋은 아이디어를 가지고 있습니다 . ( 여기에 C ++ 문법에 대한 좋은 질문이 있습니다 )

짧은 대답은 "아니오,위원회는 프로토 타이핑을 사용하여 디자인을 테스트 할 필요가 없다는 것입니다." 그러나위원회 멤버는 대부분의 프로그래머가하지 않는 수준에서 모든 세부 사항을 이해하는 C ++ 전문가이기 때문에 그다지 필요하지 않습니다. 이 사람들은 언어 이론과 컴파일러 디자인 전문가 인 언어 설계자 입니다.

프로세스에 컴파일러 벤더가 관여하는 경우, 이들 중 하나 이상이 새로운 기능을 프로토 타입 할 있지만, 이에 대한 공식적인 요구 사항은 없으며 공개적으로 제공되는 문서에서 읽은 내용도 아닙니다. C ++위원회.

또한 매우 보수적 인 경향이 있어 위험 할 수있는 많은 양의 새로운 기능을 지정하지 않고 실제 수요가있는 새로운 기능을 점진적으로 추가합니다. 실제로 최근에는 실제 환경에서 이미 작동하는 독점 확장 또는 오픈 소스 라이브러리로 존재하는 새로운 기능을 추가했습니다. 예를 들어, C ++ 11 및 C ++ 14는 Boost의 일부를 통합합니다. Boost 는 실제 환경에서 여러 컴파일러 및 실행 환경에서 이미 테스트되었습니다. 이미 테스트 된 것을 테스트 할 필요가 없습니다.


5
ConceptGCCConceptClang 은 복잡한 언어 기능을 실제로 경험하고 프로토 타입하기 위해 명시 적으로 작성된 컴파일러 (또는 컴파일러 포크)의 두 가지 예입니다. 개념은 C ++에서 철저한 언어 기능이 설계되는 예입니다. 개념은 1998 년부터 C ++ 템플릿에 대한 비공식적 인 아이디어로, 2006 년에는 Bjarne이 제안한 언어 기능으로, ConceptGCC에서도 구현되었습니다. 그때부터. 그들은 수도 ...
요 르그 W MITTAG

3
… C ++ 17로 끝납니다. 이는 구현으로 약 10 년 동안, 아이디어로 20 년 동안 성숙해 나갔음을 의미합니다.
Jörg W Mittag

2
이것은 대부분 거짓입니다. 새로운 기능은 일반적으로 먼저 구현이 필요 합니다 . 이런 일이 일어나지 않았을 때 우리는 수출했습니다.
isanae

5
마지막 문단은 (가볍게 말하면) 말도 안됩니다. C위원회는 매우 보수적이지만 C ++은 언어를 혼란스럽게 만들거나 사람들이 해결하고자하는 문제를 실제로 해결할지 여부를 거의 고려하지 않고 모든 종류의 새로운 것을 항상 추가합니다.
R ..

1
@R .. 동의하지 않습니다. C ++ 11은 이상 이었지만 이미 존재하는 많은 것들이 포함되어 있습니다 (예를 들어 Boost 주석 참조). C ++의 많은 부분에서이 언어는 매우 느리게 발전했으며 , 이는 많은 개발자들이 언어에 대해 가지고있는 주요 불만입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.