한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 ·

C언어의 진화형 프로그래밍 언어 C3, 안전성과 편의성 강화...C와 완벽한 호환성 제공

발행일
읽는 시간1분 48초

C3는 C의 익숙함을 유지하면서 현대적 기능을 추가한 프로그래밍 언어로, 현재 0.7.8 버전까지 출시됐다.

[한국정보기술신문] C언어를 기반으로 한 새로운 프로그래밍 언어 C3가 개발자들의 주목을 받고 있다. C3는 혁명이 아닌 진화를 표방하며, C 프로그래머들에게 익숙한 문법과 의미를 유지하면서도 현대적인 기능들을 추가한 것이 특징이다.

C3 개발팀은 공식 웹사이트를 통해 C3를 C언어를 좋아하는 프로그래머를 위한 C 스타일 언어라고 소개했다. 이 언어는 C의 문법과 의미 체계를 기반으로 하되, C 프로그래머들에게 익숙함을 유지하면서 발전시키는 것을 목표로 한다.

C3의 가장 큰 강점은 C와의 완벽한 ABI 호환성이다. 특별한 C 호환 타입이나 함수 없이도 C와 C3 코드를 같은 프로젝트에서 혼용할 수 있다. 이를 실증하기 위해 게임 엔진 vkQuake의 일부 코드를 C3로 변환해 컴파일하는 데 성공했으며, 해당 포크는 깃허브에 공개되어 있다.

현대적 기능으로 개발 편의성 향상

C3는 단순명료한 모듈 시스템을 제공한다. 복잡하지 않으면서도 합리적인 기본값을 갖춘 모듈 시스템으로 개발자들이 쉽게 사용할 수 있도록 설계됐다.

연산자 오버로딩 기능도 지원한다. C++의 복잡함 없이 깔끔하고 표현력 있는 코드 작성이 가능하며, 벡터, 행렬, 고정소수점 연산 등에 이상적이다. C3는 목적에 맞는 정확한 연산자 오버로딩을 제공한다고 강조했다.

컴파일 타임 코드의 강력한 기능을 활용할 수 있는 매크로 시스템도 특징이다. C의 전처리기보다 훨씬 명확하고 강력하며, 함수처럼 읽을 수 있는 매크로를 제공한다. 또한 점진적 계약 기능을 통해 런타임과 컴파일 타임 제약 조건을 모두 표현할 수 있는 프로그래밍 방식을 주류로 가져왔다.

에러 처리와 안전성 강화

C3는 제로 오버헤드 에러 처리 방식을 채택했다. 결과 타입 에러의 장점과 예외 처리의 편리함을 결합했으며, C와 원활하게 통합된다.

안전성 측면에서도 강화됐다. 디버그 모드에서 컴파일러가 광범위한 런타임 경계 검사와 값 검사를 삽입하여, 계약 기능과 함께 버그를 조기에 발견할 수 있도록 돕는다. 익명의 세그멘테이션 폴트 에러는 이제 과거의 일이 됐다. C3 표준 라이브러리는 디버그 빌드에 대해 기본적으로 상세한 스택트레이스를 제공한다.

제네릭 모듈 기능도 제공한다. C3 제네릭 모듈은 제네릭 타입 생성에 있어 뛰어난 단순성과 명확성을 제공한다고 설명했다. 타입 인트로스펙션은 컴파일 타임과 런타임 모두에서 사용 가능하며, 유연한 매크로와 함수를 지원한다.

멀티플랫폼 지원

C3는 Windows, MacOS, Linux 등 주요 운영체제를 모두 지원한다. 현재 최신 버전은 0.7.8이며, 공식 웹사이트를 통해 각 플랫폼별 설치 파일을 다운로드할 수 있다.

인라인 어셈블리 기능도 지원한다. 문자열이나 복잡한 제약 조건 없이 일반 인라인 코드로 어셈블리를 작성할 수 있다.

C3 개발팀은 공식 웹사이트에서 매뉴얼을 제공하고 있으며, 디스코드 커뮤니티를 통해 개발자들의 참여를 독려하고 있다. 웹사이트는 오픈소스로 운영되고 있다.

한국정보기술신문 정보기술분과 전호재 기자 news@kitpa.org