C는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어이다.
켄 톰슨은 BCPL언어를 필요에 맞추어 개조해서 "B"언어(언어를 개발한 벨 연구소의 B를 따서..)라 명명했고, 데니스 리치가 이것을 개선하여 C 언어가 탄생했다.
유닉스 시스템의 바탕 프로그램은 모두 C로 작성되었고, 수많은 운영 체제의 커널 또한 C로 만들어졌다. 오늘날 많이 쓰이는 C++는 C의 객체 지향형 언어이다.
C언어 이전에 유닉스 운영체제는 어셈블리어라는 저급 언어를 사용했다.
하지만 어셈블리어는 특정 하드웨어에 종속적인 언어라서, 이 언어로 작성된 프로그램은 다른 하드웨어로 이식할 수 없었다.
즉, 하나의 기능을 하는 프로그램을 CPU의 종류만큼 여러 번 작성해야만 했고, 이러한 단점을 극복하기위해 C가 개발되었다고 할 수 있다.
C언어가 가지는 대표적 장점은 다음과 같다.
이 중, 세번째 장점은 어셈블리어 수준으로 하드웨어를 제어 할 수 있는 언어는 C의 객체 지향형 언어인 C++을 제외하고는 최근들어 등장한 Rust뿐이다. 즉, 임베디드 시스템이나 입출력 장치를 직접 제어해야 한다면, C언어는 거의 필수라고 할 수 있다. 또한, 직접 메모리에 접근할 수 있고, 프로그램의 크기가 작은것도, 자원이 적은 임베디드 시스템에 적합하다.
C언어가 가지는 대표적 단점은 다음과 같다.