GN⁺: C++의 절대적 인기
(learncodethehardway.com)-
C++의 재미
- 프로그래머들이 프로그래밍을 시작한 이유를 잊어버렸다고 생각함.
- C++로 프로젝트를 진행하며 재미를 느끼고, 다양한 아이디어를 실현할 수 있었음.
- C++는 프로그래머가 원하는 것을 할 수 있도록 방해하지 않음.
-
C++ 템플릿 메타프로그래밍의 문제
- 90년대 후반부터 2000년대 초반까지 C++ 커뮤니티는 템플릿 메타프로그래밍에 집착했음.
- 이는 C++를 복잡하고 사용하기 어려운 언어로 만들었음.
- Java는 프로그래머의 필요를 고려하여 더 나은 사용자 경험을 제공했음.
-
C++11의 놀라운 변화
- C++11은 언어에 많은 개선을 가져왔음.
-
auto
,nullptr
,range-for
, 람다 표현식,<chrono>
,<regex>
,unique_ptr
,shared_ptr
,<thread>
등의 기능이 추가되었음. - 이러한 변화는 C++를 더 현대적이고 사용하기 쉬운 언어로 만들었음.
-
C++의 현대적 기능
- 파일 시스템 탐색, 패키지 관리, 행렬 라이브러리, 그래픽, GUI, TUI 등 다양한 기능을 지원함.
- C++는 다양한 라이브러리와 API에 직접 접근할 수 있어 거의 모든 것을 만들 수 있음.
-
C++의 창의적 자유
- C++는 창의성을 발휘할 수 있는 언어로, 다른 언어의 권위적인 제약에서 벗어남.
- cppreference.com은 C++의 훌륭한 문서화 사이트로, 모든 키워드와 라이브러리를 잘 설명하고 있음.
-
C++의 단점
- 컴파일러 오류 메시지가 업계 최악이며, 빌드 도구가 사용하기 어려움.
- 언어의 복잡성과 역사적 유산으로 인해 학습 곡선이 가파름.
- RAII(자원 획득은 초기화) 패턴이 실제 환경에서 불편할 수 있음.
-
결론
- C++는 여전히 재미있고 강력한 언어이며, 과거의 고정관념에서 벗어나야 함.
- C++는 프로그래머에게 창의적 자유를 제공하며, 다양한 프로젝트를 실현할 수 있는 가능성을 열어줌.
Hacker News 의견
-
C++를 싫어하지만 개인 프로젝트에서는 만족스러운 경험임. Rust와 CD/CI가 장기적인 신뢰성을 제공함. 빌드 시스템과 패키지 관리가 어려움.
- C++의 세밀한 제어가 즐거움을 줌.
- 빌드 시스템과 패키지 관리가 어려움.
- C++의 문법과 런타임의 복잡함이 있음.
-
C++에 대한 혼란스러운 의견이 많음. C++의 현대적 품질과 구식 문제점이 혼재함.
- C++의 성능과 기술적 요소가 재미를 줌.
- C++는 "진짜" 소프트웨어 개발에는 적합하지 않음.
-
C++ 프로젝트에 제3자 의존성을 연결하는 데 어려움이 있음. 대부분의 현대 언어에서는 간단한 설치로 해결 가능함.
- C++의 세부 사항을 이해하는 데 시간이 걸림.
-
C++의 새로운 기능을 배우지만 컴파일러 오류로 인해 어려움을 겪음. C++14에 머물러 있음.
- C++의 복잡함이 부담이 됨.
-
C++의 불만은 주로 구식 코드베이스에서 발생함. Rust에서도 비슷한 경험을 함.
- 나쁜 소프트웨어 개발이 문제임.
-
C++에서 재미를 느끼는 사람도 있지만, 개인적으로는 C++가 복잡함.
- 낮은 수준의 제어가 필요할 때 C를 사용함.
-
C++11에 감명을 받았으며, cppreference.com의 문서가 훌륭함.
- 다른 라이브러리를 프로젝트에 통합하는 것이 어려움.
-
현대 C++를 잘 아는 팀과 함께라면 C++는 훌륭함. 성능이 뛰어나고 디버깅과 최적화가 용이함.
- 오래된 코드베이스에서는 다른 경험을 하게 됨.
-
C++를 배웠지만 깊이 들어가지는 않음. Rust의 기능적 프로그래밍과 성능이 뛰어남.
- C++를 사용할 이유가 많지 않음.
-
C++의
std::regex
는 성능이 좋지 않고 유니코드 지원이 부족함. 일반적으로 피해야 함.