오래 살아남은 메인스트림 언어들이 모두 C++처럼 과도한 확장을 하면 결국에는 과거에는 좋은 줄 알았던 기능들이 언어를 혼잡하게 만든다는 것을 알 수 있을 거임


c++의 constexpr처럼 구현해놓고도 불안정해서 못 쓰다가 한참을 지난 몇 년 뒤에서나 쓸 수 있게되고, 아직까지도 사람들이 모던 c++을 신뢰하지 못하는 일도 발생하지.

근데 사실 이건 그 기능들이 버그 없이 의도대로 제대로 굴러가냐 보다 언어의 기능이 많아지고 부피가 커질 수록 난잡해질 수 있다는게 더 위험한 거임


왜냐하면 안전하지 않은 기능들은 금기 시 되어서 피할 수라도 있지만, 프로그램이 굴러만 가면 쓸 수 있는 기능들이 계속 생겨난다면,

내가 안 쓰더라도 누군가는 그 기능들을 쓴다는 거임.


예를 들면 지금에서야 정의와 선언은 하나만 존재해야 코드 읽기가 직관적이라는 건 알고 있지만, 과거 다양성의 패러다임을 원한다고 10 종류가 넘게 해놓는다면?

3줄짜리 코드를 1줄로 줄일 수 있다고 같은 속도 성능의 다른 이디엄을 여러가지로 만들어놓는다면?? 하나둘이면 어쩌면 괜찮을 수 있는데 이게 계속 축척이 되고 몇 십 년이 지나면 같은 언어지만 완전히 다른 세상에서 쓰고 있는 듯한 서로 이해하기 힘든 사투리 방언처럼 난잡해 질 수 밖에 없다는 거임


지금 c++이 맞이하고 있는 제일 큰 문제고, 추가적으로 c++은 모두가 퍼포먼스 때문에 쓰는 언어이지만

아무런 관계도 없는 RTTI, 아무도 신경 안 쓰는 추가 STL, 스탠다드 스레드, 소켓 등에만 전념하고 있다는 게 문제라는 거임.

만약에 c++11이전보다 모던이 속도가 30프로만 빨라져도, 게임 업계나 틀딱 기업에서도 몇 십 년간의 레거시 라이브러리를 슬슬 청산하고 모던c++로 넘어갈려고 할 거임

문제는 그럴 일은 없다는 거고


결국 c++라는 같은 언어 안에서도 방언처럼 최신버전을 쓰는 bleeding-edge c++, c++11 이전, 이후, 정통 c++, C with classes 등 코딩 스탠다드가 다 제멋대로고 업계나 프로젝트마다 극단적으로 다른 경우도 많다는게 문제임



그리고 이게 과연 c++만이 가진 문제일까라고 생각하면 모든 언어가 갖게 될 문제라고 생각함.

단지 c++이 1년동안 배설한 짓거리를 굉장히 엄격하고 보수적인 c 같은 언어에서는 15년이 걸릴 수도 있다는 소리지.


c와 c++을 비교대상으로 보기 좀 그렇지만 c도 변하고 있는 언어는 맞음. 하지만 그 변화 속도가 매우 느리다는 거고 사람들이 변화를 극단적으로 거부하고 있다는 거고

c++ 커미티도 현실보단 이론적인 아카데미 쪽 컴퓨터과학 교수 뿐만 아니라, 현장에 있는 ibm, 마소, 구글 현장에 있는 시니어 엔지니어가 있어도 언어가 그 지랄나는데

결국 인간이 벌여놓는 일이라 어떤 언어도 안전하지는 않다는 거임. 설령 그게 c일지라도

이미 c11, c23 추가되는 기능들은 무시하고 20년 넘도록 c89, c99에서 절대 안 움직이는 업계도 보일 거임. 마치 c++의 포스트 c++11이냐, 아니냐처럼


여기서부터는 내 개인적인 생각인데 그래서 c++은 양극화된 상황에서 이미 너무 되돌아킬 수 없는 길들을 걸어왔고

c++라는 같은 뿌리 언어 안에서 완전히 다른 두 개의 언어로 나뉘지 않을까 생각해봄

과격한 변화를 원하는 c++와 유지보수와 과거로 회귀하려는 정통적인 c++