7월에 프랑크푸르트에서 열렸던 C++0x 표준 위원회 모임에 대한 이야기가 올라온 글이 있어서 번역했습니다.

( 글의 전체적인 내용은 Concept 시작과 끝에 대하여 이야기 하고 있습니다 )

 

 

 

What Happened in Frankfurt? « C++Next


프랑크푸르트에서 무엇이 있었는가?

C++0x의 발전에 흥미가 있는 사람은 이미 뉴스를 들었을 것이라고 생각한다.  ISO C++ 위원회는 20097월 프랑크푸르트 회의에서 C++0x의 드래프트로부터 Concept을 제외하는 것을 투표로 결정했다. ConceptC++0x의 중요한 기능으로 삭제는 꽤 쇼크를 준 것일 것이다.

여기서 나는 ConceptC++0x에 넣기에 즈음해서 한 노력과 결과적으로 실패한 이유를 말하려고 한다.

 

Concept의 역사

C++ 프로그래머는 항상 더 좋게 template를 사용하고 싶다고 생각하고 있었다. 계약적(원어:constraintsC++template는 적어도 Bjarne StroustrupThe Design and Evolution of C++15.4를 참조)(역주:일본 타이틀 C++의 설계와 진화)무렵부터 있었다.  Jeremy Siek Andrew Lumsdaine는 이 계약적인 체크 기능을 concept으로 확장하여 근본적으로는 template의 정의를 형태 체크하도록 행동하는 것을 나타냈다.Siek2000) 


2003Bjarne StroustrupGabriel Dos Reis는 일련의 제안서를 써서(N1510N1522N1536C++언어에 대해 concept이 어떻게 표현할 수 있는가 하는 것을 고찰했다.


본인의 concept과의 관계는 20051월부터 Concepts for C++0x를 공저 한 것으로부터 시작되었다. 이것은 인디애나 제안으로 불리고 있는 것이다. 그 바로 후에 Bjarne Stroustrup Gabriel Dos ReisA Concept Design (Rev. 1)라고 하는 제안을 저술했다. 이것은 텍사스 제안으로 불리게 되었다.


Concept이 처음 C++ 위원회에서 논의된 것은 20054월의 노르웨이에서 행해진 릴레함메르 회의부터였다. 인디애나 제안과 텍사스 제안은 분명하게 설계 사상을 달리하는 것이었다. 물론 서로의 주장은 여러 가지 있었지만 가장 근본적인 차이는  concept에 있어서 데이터로서의 형에 matching 시키는가 하는 것이었다. 텍사스 제안은 모든 것에 있어서 암묵적인(자동적인)matching(예를 들면 현행 규격의 auto concept과 같은 것)을 선호했다. 인디애나 제안은 모든 것에 있어서 명시적으로 타당성을 나타나고 있고 remapping 가능(예를 들면현행 규격의 concept map과 같은 것)인 것을 선호했다.


릴레함메르 후 나는 6개월에 걸쳐 ConceptGCC를 구현했다. 최초로 유일한 concept을 구현하고 있는 실험적인 컴파일러다. 이 컴파일러는 실제 구현을 제공하는 것을 의도하고 있었다. ConceptGCC에서의 경험은 인디애나 제안을 훌륭할만큼 개량할 있었다. 나는 200510월의  회의에서 ConceptGCC를 피로했다. 위원회의 반응은 대개 양호했다. 그러나 일부의 위원은 두 개의 제안이 현저하게 동떨어져 가는 것을 걱정했다.(역주:인디애나 제안과 텍사스 제안의)저자들은 협력하여 통합한 제안을 쓰기 시작했다. 우리는 많은 회의를 하여 세부를 밝혀내고 최종적으로 최초의 통합된 제안20066월에  발표했다. 동시에 ConceptGCC의 표준 라이브러리 개발이 진행되어 우리는 최초의 제안서인 표준 라이브러리에 있어서의ConceptN2036-N2041을 참조되었고)를 다 썼다.


우리는 위원 회외에서 몇 번이나 회의를 실시했다. 회의마다 새로운 논의와 거기에 따르는 제안서의 변경이 이루어졌다. 최대의 변경은 or constraints 삭감, scoped concept map의 도입, forwarding function 생략 이다. 또 이 시점에서 나는 최초의 드래프트인 concept 규격서에 있어서의 문면을 다 썼다. 이것은 후에 언어와 라이브러리 양쪽 모두에서 꽤 많이 개정되어 가게 되었다.


20089월 샌프란시스코 회의에서 concept은 마침내 워킹 페이퍼에 받아들여져 최초의 C++0x candidate draft (CD1)에 들어갔다. C++0x의 릴리스 후보 드래프트에 제14판으로 받아들여졌던 것이다. 이것은 코어 언어 정도 분량의 C++0x 표준 라이브러리를 차지한다



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


분량이 많아서 두편으로 나누어 올립니다. 두 번째부터 본격적인 프랑크푸르트 이야기가 나옵니다.



by 흥배 2009. 8. 11. 06:30