프랑크푸르트까지


샌프란시스코 회의로부터 6,7개월 동안 표준 규격과 표준 라이브러리의 문면에 여러가지 개량이 더해져 갔다. 프랑크푸르트 회의가 가까워짐에 따라 두 개의 문제가 부상했다. 구현 경험에 대한 우려와 통합된 concept 규격에 대한 사상의 어긋남이다.


구현 경험의 우려라고 하는 것은 ConceptGCC의 불완전함이다. 예를 들면 컴파일의 퍼포먼스가 낮은 것이나 고도의 기능이 부족한 것(scoped concept mapassociated template다.

위원회의 위원들은 concept 베이스의 표준 라이브러리를 평가하는데 제품 레벨의 품질을 가지는 구현이 없는 현재 상태로서는 언어와 라이브러리의 concept 규격에는 아직도 많은 결함이 남아 있을 것을 우려했다. 이러한 결함은 C++0x 규격의 발행을 더욱 늦추고, 최악의 경우 결함 투성이의 규격을 내게 된다.


동시에 concept에 관한 다수의 최고조에 달한 논의가 위원회의 메일링 리스트에서 이루어지고 있었다. 대부분 현행 규격의 사용하기 어려움의 문제이다.

예를 들면 경우에 따라서는 라이브러리의 constrained template의 요구를 채우기 위해서 유저는 빈 concept map을 쓰지 않으면 안 된다. 유저는 그러한 concept map을 문법 상의 쓰레기라고 간과할 것이다.


논의는 Bjarne Stroustrup의 페이퍼 Simplifying the use of concepts에 집약되었다. 이러한 설계에 대한 불안은 인디애나와 텍사스의 사상이 지금과 얼마나 큰 격차였는지를 이야기하고 있다. 끝으로 Stroustrup 박사의 페이퍼는 소위 명시적인 concept을 삭감하려고까지 제안하고 있었다. 이것은 2005년부터의 concept의 근본적인 문제이며 원래 처음부터의 문제였다.




프랑크푸르트에서의 투표


C++ 위원회는 프랑크푸르트 회의의 처음부터 대략 반나절에 걸쳐 concept의 경우에 도착해 논의했다. Stroustrup 박사는 다음의 세 개의 선택에 대해 투표를 시켰다.

1.    C++0x의 현행 규격의 Concept을  유지한다.

2.    ”Simplifying the use of concepts”의 제안을 받아 들여 C++0xconcept을 존속시킨다.

3.    C++0x로부터 concept을 삭제한다.


녹초가 된 위원회의 위원들과 함께 나는 concept 삭제에 투표했다. 왜냐하면 언어의 미래를 생각했을 때 C++0xconcept에 있어서 최선의 선택은 삭제하는 것다라고 생각했기 때문이다.


개인적으로는 현행 규격을 통과해야 한다고 생각한다. 이것이 근본적으로 올바른 설계라고 믿고 있다. 그렇지만 현시점에 있어서 합의를 얻지 못하고 있는 것은 분명하다. 넓은 C++ 업계에 받아 들여지기 이전에 우리 중에서도 합의에 이르지 않으면 안 된다.

구현 경험에 관한 우려는 당연한 일이다. 이런 이유로 C++0x에서 concept을 삭제하기에 충분하다.


두 번째 선택인 설계의 대폭적인 변경을 더해 C++0xconcept과 함께 발행하는 것은 도저히 지지할 수 없다.  큰 변경을 하는 것은 지극히 위험하다. 이 경우 구현 경험이 없는 것, 사용 경험이 없는 것, 신 설계가 움직일지를 검증하기 위한 기술력이 부족하다.

ConceptGCC에서 조차 충분한 구현 경험은 아니라고 생각하는 사람이 있다. 변경한 설계의 착실한 구현 등 우선 나올 것은 없다. 원래 이 문제에 관한 사상의 상위의 경위를 생각하면 우리가 제안된 변경에 합의할 수 있을 리가 없다.


다른 선택 사항도 있었다. 예를 들면 C++0x를 한층 더 수년 늦추어 합의를 얻는다는 것이다. 그러나 그런 연기는 받아 들여질 리가 없다. conceptC++0x로부터 삭제하는 것이 무엇 보다 나은 선택 사항이었던 것이다. 한편 위원회는 concept에 찬성이며 장래 착실한 제안을 하면 또 논의할 것이다. 다음의 기사에서는 이 실패로부터 배운 것과 장래의 방법에 대해 말하려고 한다.

 

 

출처 : http://cpplover.blogspot.com/2009/08/douglas-gregor.html






저작자 표시
신고
by 흥배 2009.08.12 18:30