viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced83fa11d0283109f613b0c2e59fad7a6296a8113182d70659d3217d4314f0761aebdbd6bd9e538a020e0cc39a29c4343ba1956d05764fd39b



https://gist.github.com/bkaradzic/2e39896bc7d8c34e042b#orthodox-c



Orthodox C++란?

: 모던 C++ 에서 불필요한 것들을 다 빼고, C++ 에서 최소한의 필수적인 기능들만 사용하고자 하는 것


왜 모던 C++을 안쓰려고 하는데?

: 1990년대에는 우리들도 C++ 힙스터였어서, 당시 C++에 추가된 기능들을 다 쓰고 권장하려고 했었음. 

근데 시간이 지나서 돌아보니 불필요한 기능들도 많이 있었고, 

RTTI, 예외, 스트림같은 성능이나 디자인상 안 좋은 기능들도 있었을 뿐만 아니라,

내부 로직에 의해 복잡도가 미친듯이 늘어나서 기능을 쓰는게 프로그램 동작의 발목을 잡는 경우도 있었다고 함.

위에서 말한게 이해가 안간다고 할 수 있겠지만, 몇 년 지나면 님도 모던 C++ 을 싫어할 수도 있게 될거라고 봄.


왜 Orthodox C++ 을 쓰는데?

: Orhodox C++ 을 쓴 코드는 이해하기 더 쉽고, 코드 자체가 심플하고, 옛날 컴파일러에서도 빌드가 잘 됨.

뿐만 아니라 Orthodox C++ 으로 쓴 프로젝트는 대개 다른 프로젝트에서 적용하고 있는 가이드라인을 위반하지 않는 경우가 많기 때문에, 

다른 프로젝트에 적용하기도 쉽다고 함.


그럼 뭘 써야하는데?

: C 스타일의 C++ 가 대개 기본 스타일임.

: boost 구현체의 이따구 짓을 따라하지 말고, 그냥 심플심플하게 짜는 것을 추천.

(http://archive.md/2014.04.28-125041/http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/design.html)

: 익셉션 금지

: RTTI 금지

: C++ 런타임 랩퍼 (cstdio, cmath 등) 을 사용하지 말고, C 라이브러리를 사용할 것.

: 스트림 금지

: 프로젝트 자체에서 메모리 관리를 할거라면 메모리 할당을 하는 STL 라이브러리들 역시 사용금지

: 학술적인 자 | 위 목적으로 런타임 블롯 아님 컴파일 빌드 타임 블롯되는 메타 프로그래밍 떡칠하지 말 것. 

: C++11 이나 C++14 같은 신규 사양들을 사용하고 싶으면, 해당 버전의 다음 버전의 C++ 가 채택될 때 사용할 것.


대충 Embedded C++ 나 Sane C++ 와 비슷한 규약인 듯함.

예제로는 dear imgui, bgfx, DOOM 3 BFG 등이 있다고.


이거 만든 사람 나이나 경력이 얼마쯤 되는지는 잘 모르겠는데 일단 적어도 15년 이상은 C++랑 그래픽스 바닥에서 구른 것 같아보임.