# C++의 두 파벌

> Clean Markdown view of GeekNews topic #17947. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17947](https://news.hada.io/topic?id=17947)
- GeekNews Markdown: [https://news.hada.io/topic/17947.md](https://news.hada.io/topic/17947.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-26T08:33:43+09:00
- Updated: 2024-11-26T08:33:43+09:00
- Original source: [herecomesthemoon.net](https://herecomesthemoon.net/2024/11/two-factions-of-cpp/)
- Points: 10
- Comments: 3

## Summary

C++ 커뮤니티는 현대적 도구와 자동화를 중시하는 그룹과 레거시 환경을 유지하는 그룹으로 나뉘어 있으며, 이로 인해 커뮤니티 내 갈등이 심화되고 있습니다. 미국 정부는 메모리 안전 문제로 C++ 사용을 중단하도록 권고하고 있으며, 대형 기술 기업들은 Rust를 채택하고 있습니다. C++ 표준 위원회는 이러한 갈등을 완화하기 위해 보수적인 접근을 취하고 있지만, 커뮤니티 내에서는 변화에 대한 저항과 신뢰 부족이 문제로 지적되고 있습니다.

## Topic Body

- 방언(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’](https://isocpp.org/files/papers/P3081R0.pdf))'이 이상한 상태에 있음  
  
### C++의 두 문화  
  
- **현대적이고 자동화된 도구 사용 그룹**  
  - Google과 같은 대형 기술 기업들이 주요 예  
  - 최신 C++ 표준(C++17 이상)을 사용하며, 자동화된 빌드 및 테스트 도구 지원  
  - 코드 품질 유지에 투자하며 지속적으로 코드베이스를 현대화  
- **레거시 C++ 그룹**  
  - 오래된 환경과 도구에서 운영되는 코드베이스  
  - 소스 코드 없이 운영되거나 빌드 시스템이 구식  
  - 유지보수 비용이 높고 현대화의 장벽이 큼  
- 주요 차이점은 **도구와 프로세스**  
  - 현대 C++ 그룹은 통합 빌드 시스템과 정적 분석기, 포매터, 린터 등 도구에 의존  
  - 레거시 그룹은 이러한 도구와 프로세스 부재로 인해 운영 효율성이 낮음  
  
### 결과 및 영향  
  
- **안전 프로파일**  
  - 기존 레거시 코드의 변경 없이 안전성을 강화하려는 목적  
  - 현대적 C++의 요구보다는 기존 코드 유지에 초점  
- **모듈**  
  - 헤더 파일을 모듈로 간단히 가져올 수 있도록 설계  
  - 레거시 코드와의 호환성을 고려해 설계됨  
- **C++ 커뮤니티의 분열**  
  - 현대와 레거시 그룹 간의 요구사항 불일치로 커뮤니티 내 갈등 심화  
  - C++ 표준 위원회의 보수적 접근이 이러한 갈등을 완화하려는 시도로 보임  
  
### 대안적 관점  
- Safe C++ 같은 대안적인 아이디어는 커뮤니티 내에서 환영받지 못하고 있음  
- 표준 위원회의 일부 멤버가 개인적인 미적 기준을 고수하며 변화에 저항하는 경우가 있다는 비판 존재

## Comments



### Comment 31755

- Author: aer0700
- Created: 2024-11-27T11:19:39+09:00
- Points: 1

Rust 는 gui 개발 생태계가 아직 없어서, 채택하질 못하고 있긴 한데요  
Rust를 사용하는 괜찮은 gui 프레임워크가 나와야할텐데...

### Comment 31702

- Author: ndrgrd
- Created: 2024-11-26T09:15:55+09:00
- Points: 2

러스트가 C++를 대체할 수 있는지는 잘 모르겠지만  
신규 C++ 프로젝트가 거의 보이지 않는 것은 사실이죠...  
C++ 위원회는 탈태보다 본래의 가치를 더 중시하는 방향이 옳다고 정한 듯 하네요.

### Comment 31698

- Author: neo
- Created: 2024-11-26T08:33:44+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42231489) 
- Google의 C++ 코드는 종종 최신 버전에서 작동하지 않으며, 개발자들이 이를 수정할 의지가 없는 경우가 많음. 이는 Google의 코드가 오래된 것과 현대적인 것 사이의 중간 지점에 머물러 있기 때문임
  - Google의 C++ 코드는 상태 기계와 수동 약한 포인터로 인해 메모리 손상이 발생할 수 있음
  - Google이 C++ 생태계를 떠나는 것을 긍정적으로 봄
  - Rust 생태계에 대한 Google의 관심이 긍정적이지 않을 것이라고 생각함

- C++ 표준 작업자들에게 현재의 C++ 방향성을 지지하며, C++의 미래에 대해 온라인에서 나오는 소음은 무시하라고 조언함
  - Rust를 사용하여 정적 수명 검사를 원하는 사람들에게 Rust를 사용하라고 권장함
  - 정부 계약자라면 Rust를 사용하라고 제안함
  - 기존의 C++ 개발 프로세스가 잘 작동하고 있다고 주장함

- C++를 사용하는 유일한 집단은 리팩토링하기에는 너무 큰 레거시 코드베이스를 가진 집단일 것이라고 주장함
  - WG21에 대한 신뢰를 잃은 다른 집단은 새로운 언어로 이동하고 있음
  - Herb Sutter가 C++에 수명 주석을 추가하는 것이 다른 언어로의 "출구 램프"를 만들 것이라고 언급함

- Rust의 에디션 시스템이 매우 잘 작동한다고 평가함
  - C++에도 이러한 시스템이 도입된다면, 모듈 경계에 제한이 있을 수 있지만 두 진영이 모두 만족할 수 있는 방법이 될 수 있다고 제안함

- Herb Sutter가 Microsoft를 떠난다는 소식이 Microsoft에 좋지 않은 영향을 미칠 것이라고 우려함
  - Herb가 C++ 표준 채택을 주도하고 더 나은 미래 비전을 위해 노력했다고 평가함
  - Microsoft의 제안이었던 std::span이 범위 검사를 제외하고 채택된 것을 언급하며, Herb의 노력이 필요했다고 주장함

- 자동화된 테스트가 두 진영을 구분하는 주요 요소라고 강조함
  - 레거시 C++ 앱에서 자동화된 테스트가 없으면 코드 변경이 앱을 손상시킬 위험이 있다고 설명함
  - C++의 특성상 무해해 보이는 코드 변경도 문제를 일으킬 수 있다고 경고함

- C++의 매력을 떨어뜨린 주요 요인은 모듈의 부재라고 주장함
  - 모듈이 있었다면 C++ 커뮤니티가 형성될 수 있었을 것이라고 평가함

- Herb Sutter는 타협을 이끌어내는 데 능숙했지만, Google은 자신의 의제를 밀어붙였다고 비교함

- 대규모 코드베이스를 가진 고객들은 엄격한 규칙을 만족시키기 위해 코드의 1%도 변경하지 않으려 한다고 언급함
  - 많은 회사들이 새로운 표준으로 업그레이드하는 데 시간을 투자하고 있다고 주장함

- Python과 Javascript/Node/Typescript에도 여러 파벌이 존재한다고 설명함
  - Rust는 이러한 파벌을 피하려고 했지만, 학습 곡선이 높아졌다고 평가함
  - Go는 파벌을 방지하고 널리 채택되기 위한 시도를 했지만, 제네릭을 도입해야 했다고 언급함
