title: "**Bjarne Stroustrup이 바라본 C++ 실력(maturity) 측정법**"
description: "**Bjarne Stroustrup이 바라본 C++ 실력(maturity) 측정법**"
cleanUrl: /sw-engineer/object-oriented-software-design-principle
ogImage: ""
floatFirstTOC: right

...

  1. express concept directly in code

  2. express relations among concepts directly in code

  3. express independent concepts in independent code

  4. compose code representing concepts freely wherever the composition makes sense

  5. 개념을 코드에 직접적으로 반영한다

  6. 개념들간의 관계를 코드에 직접적으로 반영한다

  7. 서로 독립적인 개념들을 독립적인 코드에 반영한다

  8. 개념들을 나타내는 데 있어 자유롭게 코드를 구성하되, 그 구성은 언제나 타당하도록

I "measure" maturity primarily based on how close people got to those ideals in production code (i.e., in code suffering real-world constraints). People who use C++ primarily as "a better C" fail on the first count - they fail to use classes, class hierarchies, and parameterization (template) to express ideas and relations among ideas directly. People who insist seeing C++ as just an object-oriented language fail on the third and fourth - they construct massive hierarchies that bind unrelated concepts together through unsuitable bases and exclude built-in types and simple classes.

성숙도를 "측정"하는 데 있어 주로 제가 사용하는 방법은, 사람들이 (현실 세계의 제약 조건이 담긴) 코드를 작성할 때 위의 이상치에 얼마나 근접해있는지를 알아보는 것입니다. C++를 "더 나은 C"로써 사용하는 사람들은 첫 번째에서 걸릴 것입니다. - 이들은 클래스나 클래스 계층체, 혹은 매개변수화(템플릿)을 이용하여 아이디어 혹은 아이디어들 간의 관계를 직접적으로 표현해내는 데 실패합니다. C++를 단순히 객체 지향 언어의 관점으로밖에 보지 못하는 사람들은 세번째와 네번째에서 걸립니다. - 이들은 적절치 않은 기반 클래스 위에 묶인 서로 관계없는 개념들, 즉 육중한 계층체를 만들어내고, 내장 타입과 단순한 클래스를 배제하곤 합니다.

...

Stroustrup의 논문 'C++ in 2005'에서

개념 - 아이디어 - 를 '직접적'으로 반영, 표현한다... 이를 달리 표현하면 '코드 가독성을 높인다', 'semantic을 살린다'가 될 것이라는 생각이.. 났다. 직관적으로 알아볼 수 있는 코드.. 뭐 그런거 말이다. 이 논문에서도 여러번 그가 밝혔지만, 그래야만 개발하기가, 유지보수하기가 더욱 편해지니깐.

그의 책 "The Design and Evolution of C++"에는 C++이 어떻게 커왔는지가, 왜 그렇게 C++을 설계했는지가 담겨있다고.. 그는 광고하고 있다. 이 책이 나온지 거반 10년이 지난 지금도 거의 대부분의 내용이 유효하다고 한다. 시간이 지나면서 바뀐 것은 단지 아래의 내용 정도라고. 그토록이나 변할 것이 없는 개념을 그 당시에 써서 매우 기쁘다면서.

"I hope that X" --> "The standard says X"

움.. 역시..