Qaupot Blog
Software Engineering, Trip

101. C와 프로그래밍 언어

🕐 Sun, 16 Sep 2012 09:00:00 GMT 🕓 Tue, 17 Aug 2021 13:28:00 GMT

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 언어' 를 '기계어' 로 번역하여 프로그램을 만듭니다.

이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.