Mutliplatform으로 porting하기...

세상에 존재하는 C/C++ compiler의 종류가 생각보다 꽤 많다. 물론 대부분은 gcc/g++을 기반으로 하고 있는 것이라고 해도.

아니 내가 보면 gcc/clang/MSVC로 3파전? 글쎄. gcc가 단연 압도적이고 clang은 gcc에 가까우니까 그렇다고 보는데 MSVC는 왜 여태 살아있는지 신기하다고 해야할 것 같다.

또 윈도우즈라는 애매한 운영체제 때문에 나타난 괴생물체들이 꽤나 많다. djgpp? cygwin? mingw? 등등등. 윈도우즈가 리눅스를 품고 있질 않나 (WSL).

마소가 여태 돈을 벌고 윈도우즈에 종속된 인구가 어마어마하게 많고 또 윈도우즈 플랫폼에서만 돌아가는 수 많은 게임이 여전히 번창하고 있는 시절에 이런 말을 해봐야 무의미하지만.

어디가서 컴퓨터 사이언스 좀 공부했다는 이들이 짜놓은 코드를 보면 특별히 더 낫고 빠르지도 않은데 쓸데없는 예약어를 여기 저기 붙여놔서

다른 플랫폼으로 이식하기 불편하게 만들어놓았다. 더구나 쉬운 숫자 조작으로 끝날 걸 플랫폼을 많이 타는 이런 저런 함수들을 불러다 쓴다든가, endian이 어떻게 될지 뻔히 보이는 플랫폼에서 돌리는 데 괜히 little/big endian 전부 지원할 것처럼 짜놓는다거나.

우리가 접하는 일반적인 환경이 little endian이라 여기서 늘상 테스트하고 하다보니 막상 big endian 조건으로 돌리면 대부분 문제가 발생하는 것은 덤이다. 그러니까 ㅂㅅ같이 안쓰는 코드를 여기 저기 덕지덕지 붙이고 쓸데없는 header를 포함시키고 remark를 잔뜩 달고 그래서 이식하기 불편하게 해놓는단 말이다.

적당히 해라. 괜히 일 많이 하고 있는 것처럼 보이려고 그러는 건가 일 못하는 걸 가려보려고 이러는 건가.