Stroustrup씨에게 물어 보았다.


[] C++17의 기능 목록에 대해서 어떻게 생각하세요? 우선 순위 리스트 같은 것은 있나요?

[] 컨셉으로 우리가 생각하는 제네릭 프로그래밍을 바꾸려고 하고 있다. 제네릭 프로그래밍을 지금보다 더 중심으로 삼는 것이다. 그것과 동시에 에러 메시지의 내용에 대한 불만-이것은 이해하지만-에도 대처하려고 한다. 충분한 효과를 얻기 위해서는 이 컨셉을 표준 라이브러리에 도입해야 한다.

 

모듈은 컴파일 시간을 극적으로 개선하고, 매크로 남용의 악영향을 제한함으로써 C++를 더 좋은 도구로 만들어 주는 것을 기대하고 있다.

 

고 수준의 병행 모델은 Concurrent한 코드 기술의 어려움을 대폭 개선해 준다. 완성된 코드의 실행 속도도, 저 수준 스레드 앤 락으로 기술된 코드보다도 빠를 것이다.

 

코드를 단순화함으로써 품질을 개선하는 것으로 이들 기능은 이상적인 것이다.

 

 

[] 과거 몇 년간 위원회 활동과 C++17 때문에 실시되는 향후의 작업에 의해서 C++는 그 동안 논란이 된 큰 제한 몇 가지를 극복하려 하고 있다. 이 것은 위원회에 의한 설계에서는 실질적 진전을 가져올 수 없다로 알려진 그 동안의 고질적인 생각을 반증하는 것이라고 할 수 있다. 위원회가 해온 활동에 대해서 어떻게 생각하세요? 성공 비결이라는 것이 있다면 어떤 것을 채용하고 싶나요?

[] 위원회에 의한 설계에 문제가 있음은 부정할 수 없다. 100(회의에 참여하지 않고 논의에 참여한 사람들도 포함하면 300)이라는 사람들이 모여서, 견고하고 일관성 있는 것을 새로 만들겠다는 것은 극히 어려운 일이다.

 

그것이 잘되고 있다는 것은 놀랍지만 더 잘 된 것이다 라는 예도 있다. 위원회에서의 작업은 욕구 불만 외의 것이 없지만 이 스케일의 작업을 개인이 단독으로 관리한다는 것은 확실히 불가능하다. 그래서 이것은 개인이나 위원회인가라는 문제가 아니라 필연으로 위원회를 어떻게 운영할까? 라는 것이다. 요즘은 세계적으로 중요한 것 중 개인이 도움 없이 만들었다는 것은 거의 없다.

 

 

[] C++17은 비교적 저 수준(언어의 시멘틱스를 매우 자세하게 컨트롤이 가능하다 라는 의미에서), 다중 패러다임으로 어려운 언어라는 C++의 성격을 따라 가는 것 같다. 한편 보다 간단히사용 할 수 있는 언어로 한다는 목표가 위원회 작업의 주요 동기 중 하나이다. C++를 더욱 편하게 쓸 수 있는 언어를 하기 위해서 위원회가 표방하는 원리 같은 것은 있나?

[] 언어 수준이라는 것은 이제 이념으로는 통하지 않는다. 하드웨어를 직접 조작하기 위한 탁월한 능력과 필요하다면 추상화 수준을 향상 가능한 추상화 메커니즘을 양립한 언어로 C++를 이해했으면 좋겠다. 하드웨어에 밀접하게 관계되는 프로그래밍은 많은 중요한 태스크에서 필요한 것이지만 별로 재미는 없다. C++는 오버 헤드 없는 추상화를 가능하게 하는 것으로 비용을 가하지 않으면서 하드웨어에서 우리들을 격리하는 것이다. 단 여기서 오버 헤드 없는 추상화(zero-overhead abstraction)” 라는 것은 수작업으로 작성한 코드에 대해서 1바이트도, 1사이클도 허비하고 있지 않는다는, 의미는 아니다. 함수 호출(특히 간접적인 함수 호출)에 의한 오버 헤드는 필요 이상으로 의식되는 것이 적지 않다. 하드웨어로의 접근과 추상화 양쪽을 제공하는 것이 C++의 기본이며, 그것을 효율적으로 행하여, 다른 언어와의 차별화를 도모하고 있다.

 

이는 이제 다중 패러다임이라는 것은 아니다. 이 호칭은 언어의 기능을 최대한 사용할 것이 아니라 많은 사람들에 대해서 어느 하나의 패러다임을 선택하도록 요구하는 것이기 때문이다. 유감이지만 대신 좋은 캐치 프라이즈는 발견되지 않았다.

 

위원회에 모종의 이념이 있다 라고는 그다지 생각하지 않는다. 우리는 다양한 배경을 가진 많은 개인이며, 시각도 다양하다. 그렇지만 먼저 말한 C++의 설명에 대해서는 대부분이 동의할 할 것이다. 그것은 C++의 기본이며, 타협할 수 없는 부분이다. 호환성에 대해서 까다롭다는 것은 동의를 얻을 수 있는 것이다. C++ 커뮤니티는 진보를 원하고 있지만 그 프로세스에서 그들의 수 십억개의 코드가 훼손된다는 것은 전적으로 인정하기 어려운 사태이다. 어떤 개선이 가장 의미 있는 것인지, 합리적인 타임 스케일로 실현 가능한 것은 어느 것인지, 그것들을 언어 사양 또는 표준 라이브러리로서 어떻게 실현할까? 라는 것의 상세가 중요하다. 많은 그룹에서 동의를 얻기는 어려운 일이지만 합의는 불가결하다. 내가 이번 문서를 쓰고 그것을 다음 회의에서 논의하려는 것은 이런 이유 때문이다.

 

나는 지금까지 C++과 그 표준화에 많은 시간을 할애했다. 그것이 컴퓨터, 반도체, 수송, 통신, 금융, 제조, 항공 우주 등 많은 산업에 중요한 부분을 차지하고 있기 때문이다. 매우 중요한 시스템과 장비의 속을 보면 그곳에 C++이 도입되고 있는 것을 알게 될 것이다. 그런 사실에 덧붙여서 미력 하나마 과학의 발전을 지원할 수 있다는 의식이 나의 모티베이션이 되고 있다. C++중요한 성과물의 구축에 사용하는 툴이어야 한다.

 

 

Stroustrup씨의 안은 이전에 reddit 이나 Hacker News, The Register에 공개되어 많은 코멘트가 전해진 기사에 대한 후속이다.

 

출처: http://www.infoq.com/news/2015/04/stroustrup-cpp17-interview

by 흥배 2015. 6. 3. 08:00