- 방언(Dialect) 없는 단일 C++의 꿈은 이미 오래전에 사라진 것으로 보임
- Reddit와 그 오렌지색 웹사이트(HN), 그리고 공식 C++ 표준 위원회 회의에서 C++의 미래에 대한 많은 논쟁이 있음
C++의 현재 상태
- C++의 진화 작업 그룹(EWG)은 P3466 R0를 채택하기로 합의함.
- ABI(응용 프로그램 이진 인터페이스) 중단 없이 C 및 이전 C++과의 링크 호환성을 유지함.
- '바이럴 주석'을 사용하지 않음.
- ABI 중단과 제로 오버헤드 원칙이라는 상충되는 목표를 고수함.
- 미국 정부는 C++ 사용을 중단하도록 권고함.
- CISA, NSA, 백악관 등 여러 기관이 메모리 안전하지 않은 언어 사용에 대한 경고를 발표함.
- 대형 기술 기업들이 Rust를 채택하고 있음.
- Microsoft, Google, AWS 등이 Rust를 사용하고 있음.
- Google은 C++/Rust 상호 운영 툴까지 개발
- C++ 커뮤니티 내 내부 갈등
- Herb Sutter가 Microsoft를 떠나고 MSVC가 C++23 기능 구현에 느리다는 소식이 있음.
- Google은 C++ 개발 프로세스 참여를 줄이고 자체 C++ 후속 언어를 개발 중임.
- 기존 C++ 표준 위원회 프로세스에 대한 신뢰 부족
- 모듈 기능은 여전히 미완성 상태
- '안전 프로파일(‘Safety Profiles’)'이 이상한 상태에 있음
C++의 두 문화
- 현대적이고 자동화된 도구 사용 그룹
- Google과 같은 대형 기술 기업들이 주요 예
- 최신 C++ 표준(C++17 이상)을 사용하며, 자동화된 빌드 및 테스트 도구 지원
- 코드 품질 유지에 투자하며 지속적으로 코드베이스를 현대화
- 레거시 C++ 그룹
- 오래된 환경과 도구에서 운영되는 코드베이스
- 소스 코드 없이 운영되거나 빌드 시스템이 구식
- 유지보수 비용이 높고 현대화의 장벽이 큼
- 주요 차이점은 도구와 프로세스
- 현대 C++ 그룹은 통합 빌드 시스템과 정적 분석기, 포매터, 린터 등 도구에 의존
- 레거시 그룹은 이러한 도구와 프로세스 부재로 인해 운영 효율성이 낮음
결과 및 영향
- 안전 프로파일
- 기존 레거시 코드의 변경 없이 안전성을 강화하려는 목적
- 현대적 C++의 요구보다는 기존 코드 유지에 초점
- 모듈
- 헤더 파일을 모듈로 간단히 가져올 수 있도록 설계
- 레거시 코드와의 호환성을 고려해 설계됨
- C++ 커뮤니티의 분열
- 현대와 레거시 그룹 간의 요구사항 불일치로 커뮤니티 내 갈등 심화
- C++ 표준 위원회의 보수적 접근이 이러한 갈등을 완화하려는 시도로 보임
대안적 관점
- Safe C++ 같은 대안적인 아이디어는 커뮤니티 내에서 환영받지 못하고 있음
- 표준 위원회의 일부 멤버가 개인적인 미적 기준을 고수하며 변화에 저항하는 경우가 있다는 비판 존재