Carbon은 Google이 C++의 후계자(successor language)로 개발 중인 언어다. 기존 C++ 코드와의 양방향 상호운용성을 제공하면서 현대적인 타입 안전성, 명확한 문법을 목표로 한다.
설계 목표
C++과의 차이:
- 역호환성 제약 없음 (C++ 레거시 제거)
- 더 명확한 문법 (Go, Rust 영향)
- 메모리 안전성 (미래 계획)
- 양방향 C++ 상호운용 (점진적 마이그레이션)
현재 상태 (2024):
- 실험적 단계 (production 사용 X)
- LLVM 기반 컴파일러
- GitHub: carbon-language/carbon-lang
문법 예시
carbon
// 패키지 선언
package Sample api;
// 함수
fn Add(a: i32, b: i32) -> i32 {
return a + b;
}
// 클래스 (C++ class 대응)
class Point {
var x: f64;
var y: f64;
fn Distance[self: Self](other: Point) -> f64 {
let dx: f64 = self.x - other.x;
let dy: f64 = self.y - other.y;
return Math.Sqrt(dx*dx + dy*dy);
}
}
// 인터페이스 (C++ concept 대응)
interface Printable {
fn Print[self: Self]();
}
// 제네릭
fn Min[T:! Comparable](a: T, b: T) -> T {
if a <= b { return a; }
return b;
}
C++ 상호운용
carbon
// C++ 헤더 import
import Cpp library "vector.h";
fn UseVector() {
// C++ std::vector 직접 사용
var v: Cpp.std.vector(i32) = {};
v.push_back(1);
v.push_back(2);
Print(v.size());
}
관련 문서