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 구현체의 이따구 짓을 따라하지 말고, 그냥 심플심플하게 짜는 것을 추천.
: 익셉션 금지
: RTTI 금지
: C++ 런타임 랩퍼 (cstdio, cmath 등) 을 사용하지 말고, C 라이브러리를 사용할 것.
: 스트림 금지
: 프로젝트 자체에서 메모리 관리를 할거라면 메모리 할당을 하는 STL 라이브러리들 역시 사용금지
: 학술적인 자 | 위 목적으로 런타임 블롯 아님 컴파일 빌드 타임 블롯되는 메타 프로그래밍 떡칠하지 말 것.
: C++11 이나 C++14 같은 신규 사양들을 사용하고 싶으면, 해당 버전의 다음 버전의 C++ 가 채택될 때 사용할 것.
대충 Embedded C++ 나 Sane C++ 와 비슷한 규약인 듯함.
예제로는 dear imgui, bgfx, DOOM 3 BFG 등이 있다고.
이거 만든 사람 나이나 경력이 얼마쯤 되는지는 잘 모르겠는데 일단 적어도 15년 이상은 C++랑 그래픽스 바닥에서 구른 것 같아보임.
게임 업계에서 C++98 계속 미는 놈들이 C++ 커뮤니티발목 잡는 양반들임 진짜 - return 0;
와 저 미친놈 예랍시고 달아놓은게 Qt ㅋㅋㅋㅋㅋㅋㅋㅋ 진지하게 읽을 가치가 없음 - return 0;
알고리즘 작성용 중간 언어 안 나오나. 알고리즘 소스 ---> 언어 변환기 ---> c/c++/ruby/java/rust 소스코드 생성
남들이랑 너무 다른 코드는 협업에 독이 됨 레거시 고수하는게 나쁘다고 생각하지는 않지만 저건 너무 이질적인 스타일인듯
C++와 C 사이에서 방황하는 사람들.
C++를 쓸 때 C++스럽게 짜는 게 성능 상, 디자인 상에 문제가 았다고 해서 이를 C 스타일로 짜는 건 일관성이 너무 없어져서 찝찝하던데. 차라리 그냥 순수하게 C로 짜는 게 낫다.