오래 살아남은 메인스트림 언어들이 모두 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++
스탠다드 스레드, 소켓 왜 안나오냐고 아우성이던/인 기능 아님?
근데 나와도 모두가 다 모던으로 안 넘어가잖아. 오픈소스 쪽은 원할지 모르겠지만 특히 사유 소프트웨어 쪽에서는 나오던 좆도 신경 안 씀
모던 C++에 자꾸 추가되는 기능들은 '보이는 부분은 편하게, 보이지 않는 부분은 섬세하게'라는 맥락에서 봐야함. 그래서 누군가는 두 마리 토끼를 모두 잡고 있고, 또 누군가는 두 마리 토끼를 모두 놓치고 있는거지.
그 혹시 선생님 "Clojure"해보실 생각 없읍니까? 한번만 잡솨 보십시오... 언어 만드는 코어팀이 이런 문제를 빠삭하게 아는 고인물들이라서 하위호환성 관리 철저히 하고 언어도 간단하게 유지하려고 발악하는 사람들임
츄라이 해보싶샤...
아 ㅋㅋ 선생님 송구스럽지만 "근"할 바에 브레인퍽을 하겠읍니다
어허참.. 만든넘부터가 씨플플에 데여서 만들었지 말입니다? 이게 참 좋은데,, 묵는 사람이 읎네,,
그게 네이티브 바이너리로 컴파일되면 해보겠습니다
Graalvm 쓰면 네이티브 이미지 만들 수 있음. 링크는 그걸로 1.8초 걸리던 스타트업 시간을 2ms로 900배 빠르게 했다는 내용
https://www.redpill-linpro.com/techblog/2021/03/31/faster-clojure-with-graalvm.html