C 언어

2021년 6월 5일 수정

C Programming Language

C 언어는 켄 톰슨과 데니스 리치에 의해 개발된 유닉스(Unix)를 위한 프로그래밍 언어다. 현재 주류로 사용되는 언어 중 실질적으로 가장 저수준(Low-Level)의 시스템 프로그래밍을 위한 언어로 볼 수 있다.

프로그래밍 언어에서 저수준과 고수준은 언어의 품격이나 인기도 같은 걸 평가하는 것이 아니다. 저수준일수록 OS의 깊은 영역을 다루기 유리하다는 의미로 이해할 수 있다. 대신 응용 소프트웨어 제작에는 고수준 언어가 유리하다.

상당수의 Unix 기반 유틸리티들은 대부분 C 언어로 작성되어 있다. 거기다 요즘은 리눅스 커널 같이 OS의 핵심도 대체로 C 언어로 쓰여져있다. 그리고 상당수의 언어들의 코어나 인터프리터 부분도 C 언어로 쓰여진 경우가 많다. 따라서 어떻게 보면 대부분의 시스템과 대부분의 프로그래밍 언어의 선조(혹은 재료?)로도 볼 수도 있다.

과거에는 어셈블리어의 관점에서 번역되기 쉬운 언어라서 속도에 유리한 점이 있었지만, 현재는 컴파일러들의 최적화 기술이 많이 발전된 상태라서 굳이 속도를 이점으로 잡기는 힘들다.

Clang

Clang이라는 이름은 마치 C Language 라는 의미로 보이는데 정말 이렇게 해석할 수도 있다. 실제로 C 혹은 C++이나 Objective-C 같이 C 언어에서 유래한 언어들 자체를 이렇게 부를 때도 있다.

다만 명확하게 하자면 Clang은 이 언어들의 컴파일러의 한 종류다.

세부 주제

기타 주제

진입점(Entry Point)

C 언어는 아무 파일에 존재하는 유일한 main 함수에서 시작된다. 이 함수의 스펙은 C11 기준으로 아래 두 종류가 표준으로 정의되어 있다.

int main(int argc, char *argv[])
{
    /* ... */
}

우리가 흔히 사용하는 Unix 표준 방식은 위의 방식이다. 만약 프로그램의 인자가 사용되지 않는다면 아래처럼도 사용 가능하다.

int main(void)
{
    /* ... */
}

물론 인자가 있든 없든 아래 방식 보다는 위 방식이 많이 쓰인다.

이 내용은 표준일 뿐 강제가 아니다. 실제로 이 외의 다양한 방식으로 main 이 선언되고 사용되고 있다. 하지만 아무래도 표준 방식을 쓰는 것이 좋지 않을까?