C 언어, 컴파일러 개선을 위한 4가지 제안과 커뮤니티의 다양한 시각

by DD
4개월 전
조회수 20

C 언어의 컴파일러(Compiler)는 컴파일 타임에 함수를 실행하지 못하는 등 여러 가지 단점(Shortcomings)을 가지고 있음

D 언어의 ImportC 컴파일러는 이러한 단점을 해결하여 컴파일 타임 유닛 테스트(Compile Time Unit Testing), 선언 순서 자유화(Free Declaration Order) 등을 지원함

C++ 역시 C와 유사한 문제점을 가지고 있으며, 구현의 복잡성(Implementation Complexity)으로 인해 개선이 어렵다는 의견이 존재함

보안 문제(Security Concerns)와 C 언어의 광범위한 사용성(Widespread Usage)을 고려해야 한다는 반론도 제기됨

컴파일 타임 함수 실행의 한계

게시물에서는 C 언어가 컴파일 타임에 함수를 실행하지 못하는 점을 지적하며, 이는 상수 표현식(Constant Expression) 계산의 제약으로 이어진다고 설명한다. ImportC는 이러한 제약을 극복하여 컴파일 타임에 함수를 실행할 수 있도록 지원한다. 특히, I/O, 가변 전역 변수 접근, 시스템 호출 등 특정 연산(Specific Operations)을 제외한 함수는 컴파일 타임에 실행될 수 있도록 설계되었다.

컴파일 타임 유닛 테스트의 부재

게시물은 C 언어에서 유닛 테스트(Unit Tests)가 별도의 빌드 시스템을 필요로 하여 사용 빈도가 낮다는 점을 지적한다. ImportC는 컴파일 타임 함수 실행을 통해 유닛 테스트를 코드 컴파일 시점에 자동으로 실행할 수 있도록 지원한다. 이는 별도의 빌드 과정 없이 코드 품질(Code Quality)을 향상시키는 효과를 가져온다. 즉, 개발자는 추가적인 작업 없이 유닛 테스트를 활용할 수 있다.

선언 순서 제약과 개발 생산성 저하

C 언어는 함수 선언 순서에 엄격한 제약을 두어, 함수를 사용하기 전에 미리 선언해야 하는 불편함이 존재한다. 이는 개발자로 하여금 불필요한 작업(Purposeless Busywork)을 강요하고, 코드 가독성을 저해하는 요인으로 작용한다. ImportC는 이러한 제약 없이 선언 순서를 자유롭게 하여 개발 생산성(Development Productivity)을 향상시킨다.

ImportC를 통한 선언 임포트 방식

게시물은 C 언어에서 모듈을 임포트하기 위해 헤더 파일을 작성해야 하는 번거로움을 지적하며, ImportC의 `__import` 키워드를 사용하여 헤더 파일 없이 소스 파일을 직접 임포트하는 방식을 제시한다. 이는 코드 관리(Code Management)의 효율성을 높이고, 헤더 파일과 소스 파일 간의 불일치로 인한 문제를 방지한다. 즉, 개발자는 불필요한 파일 관리(Unnecessary File Management)에서 벗어날 수 있다.

Obvious Things C Should Do