C++20, How Hard Could It Be
(docs.google.com)- 구글 크롬팀에서 C++20 도입시 발생할 40여가지 문제점을 나열하고 솔루션들을 정리
- C++ 표준은 3년마다 나오고, 릴리즈 후 크롬에서 첫 적용은 3년 후에나 됨
- C++20은 많은 변화가 있음
- 지원 중단, 비교연산자 재정렬, 어그리게이션 규칙 변경..
- 문제들
- 구글의 스타일 가이드가 C++17 기반
- Clang의 C++20 지원이 미완성이고, 새로운 libc++을 필요로 함
- 윈도우 바이너리가 커짐
- std::iterator 지원 중단(C++17부터)
- 새로운 키워드 concept, requires 같은 것들이 추가되어 변수명이 있으면 충돌
- 그외 다수
그러니가 C++이 이상한언어인겁니다..
언어는 계속 버전업되면서 모듈이나 코루틴이나 이것저것 많이 추가되면서 자기가 다 하려고 하고
기능이 나오면 컴파일러들은 4년 5년뒤에 기능이 추가되고
컴파일러마다 할수있는것에 차이있고 문법 조금씩 차이있고
버전업되면서 미세하게 잘 쓰던것들 다 사라지고
stl 커지고 버전업되면서 구세대 컴퓨터에서는 돌아가지않고..
쓴다면 Go나 파이썬을 쓰라고 말씀드리고싶네요
버전업 되면서 하위호환성이 지켜지지 않은 항목들은
미정의 동작이나 결함이 있는 기능을 개선한 경우가 대부분입니다.
모듈, 컨셉, 코루틴 같은 기능들은 타 언어들처럼 계속해서 언어가 발전하고 있는거구요.
특히 모듈의 경우 이전부터 계속 있어왔던 요구사항이죠.
std::iterator 지원 중단이 말씀하신 "미정의 동작이나 결함이 있는 기능을 개선"한 경우에 포함되는지는 잘 모르겠습니다.
다만 C++이 타 언어에 비해 뒤쳐지는 점은 크게 다음과 같습니다.
- 패키지 매니저
- 컴파일러 파편화
- 복잡한 컴파일 방식(Make, CMake 추가 학습 요구)
- 커뮤니티의 무관심
이 중 커뮤니티의 무관심으로 인해 양질의 아티클이 매우 부족하고,
적은 이용자 수로 나머지 세 문제가 해결되지 않는 것이 크다고 생각합니다.