C++, 오래된 친구이자 적
C++은 1985년 처음 발표된 이후 최근에 C++20 버전까지 매우 오랫동안 전세계적으로 많이 사용되고 있는 언어이다. 지금은 아니지만 10여년 전까지만 해도 프로그래밍의 시작은 C/C++ 언어를 사용하여 시작하는 개발자들이 많았다.(지금은 Python이나 Web 관련 언어들이 더 많은 것 같다.) 오랜시간동안 무수히 많은 시스템 개발에 사용되었고, 지금도 널리 사용되고 있다. 특히 C++는 대규모의 코드베이스와 투자가 증가하면서 성능이 중요한 소프트웨어를 위한 지배적인 프로그래밍 언어로 군림해왔다.
하지만 너무 오랫동안 사용되고 다양한 요구사항을 받아들이다 보니 단점이 점점 커져가고 있다고 생각한다. 특히 기존에 구조에 새로운 기능 추가하기 위해서 매우 오랜시간이 소요된다는 것은 빠르게 변화하는 프로그래밍 언어 시장에서 큰 단점으로 작용한다. 그 외에도 입문자들에게 소프트웨어 개발 입문용으로 적합하지 않다는 의견들이 다수 존재한다. 처음 입문하기에는 난이도가 매우 높다. 특히 다른 언어와는 비교할 수 없을 정도로 방대한 문법이 존재한다. C++의 장점이자 단점, 양남의 검인 메모리 관리도 문제가 되고 있다. C++은 개발자가 직접 메모리를 관리함으로써 자유도를 높이지만 그만큼 실수가 많고 설계가 어렵다는 단점이 존재한다. 이러한 문제를 해소하기 위해 여러 문법과 패턴이 발전하였지만 그 또한 학습의 어려움을 증가시키는 요소가 되었다.
오랫동안 발전하며 쌓인 기술적 부채로 인해 다양한 요구사항을 빠르게 받아들이지 못하는 C++ 언어에 대해 많은 개발자들이 갈증을 느꼈고, C++를 점진적으로 개선하는 것은 기술적 부채 자체와 진화 과정의 어려움으로 인해 매우 어렵다. 이러한 문제를 해결하는 가장 좋은 방법은 C/C++의 유산을 직접 상속하는 것을 피하고 대신 현대적인 제네릭 시스템, 모듈식 코드 구성 및 일관되고 간단한 구문과 같은 견고한 언어 기반으로 시작하는 것이다.
Go, Swift, Kotlin, Rust 등 최신의 프로그래밍 언어는 이미 이러한 트렌드와 개발자들의 요구사항을 빠르게 받아들여 우수한 개발자 경험을 제공하고 있다. 하지만 C++ 은 이러한 트렌드를 쫓아가기 매우 어렵다. 관용적으로 구조가 잡힌 디자인과 성능의 오버헤드라는 기술적 부채를 넘기에는 C++ 이란 산이 너무 높다.
새로운 후계자의 등장, Carbon
구글이 CppNorth 2022에서 C++의 새로운 대체 언어, 후계자로 Carbon이라는 언어를 발표했다. CppNorth 2022에서 발표한 영상을 참고하고 싶다면 이 글의 최 하단 영상을 살펴보자. Carbon은 C++ 언어를 대체하는 것을 목표로 한다. 앞서 설명한 C++의 문제를 해결하기 위해 그럼 Carbon이란 언어는 어떤 장점이 있길래 C++ 언어를 대체하기 위해 나왔다는 것일까.
1. 성능, 그리고 C++과의 상호호환
Carbon은 LLVM을 이용하여 C++와 동일한 수준의 성능과 로우레벨의 메모리 주소와 비트 접근이 가능하며, 상속부터 템플릿에 이르기까지 기존의 C++ 코드와 상호 운용할 수 있도록 한다. 그리고 기존의 C++ 빌드 시스템과 함께 사용할 수 있는 빠르고 확장 가능한 빌드 시스템을 제공한다.
2. 현대적이고 진화하는 언어
기존의 C++의 큰 문제중 하나인 학습이 어렵다는 점을 들어, 누구나 학습하기 쉬운 언어로 만들고자 한다. 특히 기존에 C++ 개발자들은 더욱 빠르게 해당 언어를 사용할 수 있다. 새로운 Carbon 버전으로 업그레이드 될 때에도 쉽고 편하게 툴 기반으로 업그레이드를 할 수 있도록 지원한다. 추가로 메모리 관련 문제를 해결하고자 하며, 안전한 메모리 접근, 사용법을 통해 빠르고 확장 가능한 언어로써 최신 운영체제, 하드웨어 아키텍처를 지원하고자 한다.
최종적으로 Carbon은 C++를 대체하는 것이다. TypeScript가 JavaScript를, 그리고 Kotlin이 Java언어를 대체하듯이 말이다.
Carbon언어 목표
구글에서 발표한 Carbon의 설계 목표는 아래 내용을 지원하기 위함이라고 한다.
- 성능이 중요한 소프트웨어
- 소프트웨어와 언어의 진화
- 읽고, 이해하고, 쓰기 쉬운 코드
- 실용적인 안전 및 테스트 메커니즘
- 빠르고 확장 가능한 개발
- 최신 OS 플랫폼, 하드웨어 아키텍처 및 환경
- 기존 C++ 코드와의 상호 운용성 및 마이그레이션
Rust? 그 녀석과 다른 점
러스트는 메모리-세이프하고 높은 성능의 소프트웨어를 개발하기 위해 만들어진 언어이다. C++ 언어 대체로 많이 사용되고 있으며 다양한 기업들이 C++을 Rust로 대체하여 사용하고 있다. 러스트는 C++과는 다르다. 러스트는 새로운 언어로 기존 C++ 개발자도 새롭게 학습을 해야한다. 하지만 Carbon은 C++ 개발자들의 익숙함을 유지하기 위해 C++과 유사한 구조와 C++ 코드를 드래도 사용할 수 있도록 지원하여 기존 개발자들의 학습 진입장벽을 낮춘게 가장 큰 차이점인 것 같다.
구글의 소프트웨어 개발자 캐러스는 “카본은 러스트로 변환하기 어려운 대규모 C++ 코드베이스 프로젝트나 C++ 생태계를 전환하는 것을 목표로 개발한 것”이라며 ”러스트는 새 프로젝트를 시작하기엔 훌륭하지만 대규모 프로젝트 전환에는 적합하지 않은 만큼 러스트를 사용 중인 개발자라면 그대로 사용하는 것이 유리할 것”이라고 얘기한다.
아직은 실험 중
Carbon은 지금 새로운 도전을 위해 실험중인 언어이다. 극단적으로 알 수 있는 부분이 정상적으로 동작하는 컴파일러 또는 툴체인이 없다.. 그래서 데모 인터프리터를 사용하여 Carbon 언어를 접할 수 있다.(compiler-explorer.com)
오픈소스 커뮤니티를 활용해 Carbon 언어는 많은 개발자들이 참여하여 빠르게 발전할 것이다 기대한다. 올해 2022년 내로 0.1 버전을 릴리즈하는 것을 목표로 Carbon은 열심히 발전중에 있다. 그 목표가 꼭 이뤄지길 기대해 본다.
CppNorth 2022 : Carbon Language (참고 영상)
https://www.youtube.com/watch?v=omrY53kbVoA&feature=youtu.be
Reference
'Language > Carbon' 카테고리의 다른 글
[Carbon] Value categories and value phases (0) | 2022.08.21 |
---|---|
[Carbon] #1. Carbon의 자료형, 원시 타입 알아보기 (0) | 2022.08.01 |