C언어는 1972년 벨 연구소의 데니스 리치(Dennis Ritchie)에 의해 만들어 졌다.
켄 톰슨(Ken thompson) 등과 함께 최초의 유닉스를 개발한 그는, 당시 Unix의 첫번째 버전을 어셈블리 언어로 만들었는데. 운영체제의 특성상 하드 웨어를 직접 제어 할 수 있어야 했고, 당시의 컴퓨터 기술의 한계로 프로그램의 크기는 작고 속도는 빨라야 했다. 이 요구를 모두 만족시키는 언어가 어셈블리였다. 하지만, 어셈블리는 특정 기계에 종속적이고 이식성이 없어. "여러 시스템 사이에서 서로 이식 가능한 운영체제"를 목적으로 하는 Unix와는 맞지 않았다.
이에 데니스 리치는 Unix의 개발을 위해 새로운 언어를 만드는데, 이것이 바로 C언어이다. 물론. 데니스 리치가 혼자서, 처음부터, 모든 것을 만들어 낸 것은 아니다. 이전에 있던 언어를 개량했다는 것이 더 정확한 표현일 것이다.
C언어는 B언어를 기반하여 재탄생하였고.
( C언어라 하게 된것도 B언어를 근본으로 하여 발전시켰다는 의미.)
B언어는 BCPL언어의 기본만을 남긴 버전이며.
BCPL은 최초의 구조적 언어인 ALGOL60을 기반하였다.
이렇게 만들어진 c언어는 1973년 struct 자료형의 추가로 unix의 대부분을 C로 작성할수 있을정도로 강력해 졌고. Unix와 함께 많은 컴퓨터 프로그래머의 사랑을 받았다.
그 사랑에 보답하듯이 각 컴파일러 개발사들은 수 많은 컴파일러를 내놓았고. 자신들의 컴파일러가 최고라고 자랑하듯이 다른 회사와 차별되는 기능을 추가하고 변경하였다. 경쟁적으로 일어난 이런 현상은 곧 수 많은 변종 C언어의 탄생으로 이루어 졌고. C언어의 장점인 이식성과 호환성을 해치기에 이르럿다.
이에 ANSI(American National Standards Institue : 미국 국립 표준 협회)는 C 언어의 표준 제정 작업을 시작하여 89년에 첫 표준안을 완성하고, 90년에 ISO의 승인(ISO 9899)의 승인을 받는다. 이때 제정된 표준을 ANSI C(혹은 C90)이라 부르며, 표준 제정 전의 c언어를 클래식 C(혹은 K&R C)라 부른다. 1
(이후 C95와 C99 2가 정기적으로 제정되었고. 가장 최근에 3C11이 제정 되었다.)
이러한 변화 과정을 걸친 C언어는 아직까지 많은 프로그래머들의 사랑을 받는 현역 언어이지만, 일각에서는 현재 기술 수준에 맞지 않는 다는 의견을 표명하는 이들도 있으며. C를 "이식 가능흔 고급 어셈블리어"로 낮추어 부르기도 한다. 하지만 현재 사용되는 다른 언어에 비하여 생산되 결과물의 빠른 속도와 뛰어난 이식성. 그리고 low level 프로그래밍이 가능한 넓은 활용범위는 앞으로도 C의 수요를 유지시켜줄 C언어의 매력이다.
- 제정된 내용 1.표준 라이브러리 함수의 규격화 2.함수의 원형 선언 기능 추가 3. 정수,실수 상수의 타입을 지정가능 4.enum, void 형과 const, volatile제한자가 추가 5.인접 문자열 상수를 합쳐 주고 홱장열의 기능도 추가되었다. 6.항수 내부에서 선언하는 지역배일이나 구조체를 초기화 할수 있다. 7. 구조체끼리 대입할 경우 구조체 크기만큼 메모리 복사를 한다. [본문으로]
- ※유럽과 동양의 언어를 지원하기 위한 멀티 바이트 문자 지원 추가. [본문으로]
ex) 주석을 //로 사용가능하게 됨. ※주요 컴파일러들은 C99의 기능을 대부분 지원하지만 완벽하지는 않다. [본문으로]