이 레슨과 관련된 학습 키워드
컴퓨터 과학 & 프로그래밍 — 문제 해결의 도구 → C++ 프로그래밍 — 성능과 추상화의 균형 → C++ 프로그래밍 — 성능과 추상화의 균형 → C에서 C++로
Why C++, differences from C, compilation model, name mangling, auto, initialization, modern features.
안녕하세요, 오늘은 씨플플이 왜 필요한지, 그리고 어떤 언어인지 알아볼게요.
씨 언어는 하드웨어에 가장 가까운 성능을 제공하지만, 대규모 프로젝트에서는 한계가 있어요.
그림 왼쪽을 보시면, 씨 언어의 네 가지 한계가 정리되어 있어요.
제네릭 프로그래밍이 안 되고, 메모리 관리를 수동으로 해야 하고, 이름 충돌 문제도 있죠.
이 문제들을 해결하기 위해, 1983년 비야네 스트롭스트룹이 "씨 위드 클래시즈"를 만들었어요.
가운데 초록 박스를 보세요. 씨플플은 클래스, 알에이아이아이, 네임스페이스, 버추얼로 이 한계를 극복해요.
특히 중요한 건, 씨플플은 제로 오버헤드 원칙을 따른다는 거예요.
즉, 추상화를 사용해도 씨 언어와 동일한 성능을 유지한다는 뜻이에요.
오른쪽 성능 비교를 보시면, 정렬 백만 개 기준으로 씨와 씨플플은 0.8초로 거의 같아요.
반면 자바는 1.2초, 파이썬은 45초나 걸려요. 성능 차이가 엄청나죠?
하단을 보시면, 씨플플은 멀티패러다임 언어라고 적혀 있어요.
절차적, 객체지향, 제네릭, 함수형 프로그래밍을 모두 지원한다는 뜻이에요.
이게 씨플플만의 큰 장점이에요. 하나의 프로젝트에서 여러 스타일을 섞어 쓸 수 있거든요.
씨플플98에서 시작해서, 씨플플11이 모던 씨플플의 시작점이었어요.
그리고 씨플플20에서 컨셉트가, 씨플플23에서 에스티디 프린트가 추가됐죠.
맨 아래 사용 분야를 보세요. 게임 엔진, 시스템 소프트웨어, 임베디드, 에이아이 프레임워크까지.
언리얼 엔진, 마이에스큐엘, 로스2, 텐서플로우 등 핵심 인프라가 모두 씨플플이에요.
심지어 금융의 초고빈도 트레이딩도 나노초 단위 처리 때문에 씨플플을 써요.
정리하면, 씨플플은 씨의 성능을 유지하면서 추상화를 더한 언어예요.
성능이 중요한 거의 모든 분야에서 씨플플이 핵심 역할을 하고 있답니다.
학생: 선생님, 씨플플이 씨보다 느리지 않나요? 추상화를 더했으니까요.
선생님: 좋은 질문이에요! 씨플플의 핵심 원칙이 제로 오버헤드 원칙이에요.
선생님: 사용하지 않는 기능에 대해서는 비용이 전혀 없고, 사용하는 기능도 직접 구현한 것보다 빠르거나 같아요.
학생: 그러면 파이썬이 45초인데 씨플플은 0.8초라면, 왜 파이썬을 쓰는 거예요?
선생님: 파이썬은 개발 속도가 빠르고 라이브러리가 풍부해서, 성능이 덜 중요한 곳에서 쓰여요.
선생님: 반면 게임 엔진이나 자율주행처럼 밀리초가 중요한 곳에서는 반드시 씨플플을 쓰죠.