C 언어의 역사
C 언어는 1972년 벨 연구소(Bell Lab)의 데니스 리치(Dennis Ritchie)가 B 언어의 한계를 극복하기 위해 UNIX 운영체제의 프로그래밍 언어로써 고안
했습니다.
운영체제의 특성상 하드웨어를 직접 제어 할 수 있어야 했지만, 당시 조건을 만족하는 언어는 사실상 기계어와 1:1 매칭을 이루는 어셈블리어 정도였습니다.
그러나 이 언어는 특정한 머신(기계어)에 종속성을 가졌으므로 이식성이 매우 떨어졌습니다.
이에 켄 톰슨(Ken Thompson)이 만든 B 언어를 개량하여 C 언어를 만들게 됩니다.
- B 언어 다음에 만들어 졌기에 C 언어라 이름 붙여졌습니다.
각 하드웨어 / 소프트웨어 회사들은 C 언어를 확장한 컴파일러들을 출시합니다. 경쟁사의 컴파일러보다 우수해야 자사의 컴파일러가 시장을 장악하는것 뿐만 아니라, 이에 따른 CPU 혹은 플랫폼의 점유율까지도 좌우할 수 있었기 때문입니다.
서로 다른 확장규격이 난립하여, C 언어의 이식성이 훼손받게 됩니다.
1983년 ANSI(American National Standards Institute)는 C의 첫 표준 버전을 정의하였으며, 1990년도에 ISO 에 의해 표준으로 승인 되었습니다.
- ANSI 는 국가표준기관이며 ISO 는 국제표준기관입니다.
1999년도에 C99라는 이름으로 새로운 표준안이 나오며, 다시 2000년도에 ANSI 의 표준안으로 채택됩니다.
- C++는 1980년 발표, 1983년 C++로 명칭변경, 1998년 ANSI 에 의해 표준안 채택
- 2011년 C++11 ISO 채택에 이어 C++14, C++17, C++20 으로 계속해서 발전하고 있습니다.
오랜 시간이 지난 지금도 C / C++ 언어는 매우 광범위한 범위에서 사용되고 있습니다.
프로그래밍 언어
C는 프로그래밍 '언어' 입니다.
- 한국어라 말하는 언어는 한국 사람들이 사용하는 문법, 그리고 한글이라는 글자를 의미할 것입니다.
- C 언어도 문법이 존재하고, 글자로는 알파벳을 사용합니다.
컴퓨터는 C 언어를 이해하지 못하고, 오직 '기계어' 만을 이해할 수 있습니다. 기계어 역시 마찬가지로 '언어' 이며 문법이 존재하고 글자로는 0과 1, 즉 ON과 OFF 를 사용합니다.
인간이 이해하기 쉬운, 인간에 가까운 프로그래밍 언어들을 '고급언어' 라고 하며
기계가 이해하기 쉬운, 기계에 가까운 프로그래밍 언어들을 '저급언어' 라고 합니다. 'C 언어' 는 고급언어에 속합니다.
왜 우리는 기계어가 아닌 컴퓨터가 읽지도 못 하는 이러한 프로그래밍 언어를 배우는 것일까요?
기계어는 인간이 이해하기에 너무 난해하여 생산성이 떨어지기 때문입니다.
1 + 1 + 1 + 1 + 1 + 1 + 1
1 * 7
후자의 식을 풀어쓰면 결국 전자와 같고, 그 결과 역시 7이므로 실질적으로 같은 의미를 지닙니다.
여기서 전자는 저급언어, 후자는 고급언어를 의미한다고도 볼 수 있습니다.
따라서 인간이 이해하기 편한 'C 언어' 로 프로그램을 작성하고, '컴파일러' 라는 번역 도구로 'C 언어' 를 '기계어' 로 번역하여 프로그램을 만듭니다.