❝
The computing world has undergone a revolution since the publication of The C Programming Language in 1978.
1978년 책 "The C Programming Language" 출판 이후 컴퓨팅 세계는 혁명을 겪어왔다.
❞
- The C Programming Language 2nd Edition
(1) C언어란?
- 1972년 미국 뉴 저지 주에 위치한 벨 연구소의 데니스 리치가 만든 범용 프로그래밍 언어*이다.
- B 라는 이름의 언어를 개량해 만든 언어이기 때문에 B 다음 언어라는 뜻으로 C라고 부른다.
- 현세대에 사용되는 거의 모든 컴퓨터 시스템에서 사용할 수 있는 프로그래밍 언어이다.
- C언어는 저급 언어(Low-Level Language)* 와 고급 언어(High-Level Language)* 의 특징을 모두 가지고 있는 절차 지향 프로그래밍 언어(Procedure-Oriented Programming Language)*이다.
- Python과 함께 세계적으로 많이 쓰이는 프로그래밍 언어 중 하나이다.
* 프로그래밍 언어란 컴퓨터의 시스템을 구동시키는 소프트웨어를 작성하기 위한 언어를 말한다.
* 저급 언어란 컴퓨터가 이해하기 쉽도록 작성된 프로그래밍 언어이며 대표적으로 기계어(Machine Language)와 어셈블리어(Assembly Language) 등이 있다. 실행 속도가 빠르지만, 사람이 이해하기가 어려우므로 프로그램의 유지보수가 어렵다.
* 고급 언어란 컴퓨터보다는 사람이 이해하기 쉽도록 작성된 프로그래밍 언어이며 C, C++. Java 등이 있다. 컴파일러나 인터프리터에 의해 고급 언어를 기계가 이해할 수 있는 저급 언어로 번역되어 실행된다.
* 절차 지향 프로그래밍은 프로그램을 순차적으로 수행시키는 방법으로 자료 구조와 명령 중심으로 프로그램을 구성한다.
(2) C언어의 탄생 배경
C언어 이전에 유닉스(UNIX) 운영체제는 어셈블리어라는 저급 언어를 사용하였다.
하지만 어셈블리어는 특정 하드웨어에 종속적인 언어여서, 다른 하드웨어로 이식할 수 없었다.
즉, 하나의 기능을 하는 프로그램을 CPU의 종류만큼 여러 번 작성해야만 했던 것이다.
이를 해결하고자 이식성이 좋고 어셈블리어보다 쉬운 언어가 필요해졌고, 그래서 개발된 언어가 바로 C언어이다.
이러한 C언어의 탄생 이후, 현재 널리 사용되는 모든 운영체제의 커널 대부분은 C언어로 구현되었다.
(3) C언어의 장단점
- 장점
- C언어로 작성된 프로그램은 다양한 하드웨어로의 이식성이 좋다.
- 절차 지향 프로그래밍 언어로, 코드가 복잡하지 않아 상대적으로 유지보수가 쉽다.
- 저급 언어의 특징도 가지고 있으므로, 어셈블리어 수준으로 하드웨어를 제어할 수 있다.
- 고급 언어 중에서 코드가 간결하여 완성된 프로그램의 크기가 작고 실행 속도가 빠르다.
- 단점
- 저급 언어의 특징도 가지고 있으므로, Java와 같은 여타 고급 언어보다 배우기가 쉽지 않다.
- 다른 언어와는 달리 시스템 자원을 제어할 수 있기에, 시스템 관련 배경 지식과 세심한 주의가 필요하다.
(4) C언어의 사용
- 운영체제 개발을 위해 만들어진 C언어는 하드웨어를 제어하고 실행 효율이 높은 분야에 사용한다.
- 가전제품, 장비, 무기, 엔징 등 특정 하드웨어에 최적화된 퍼포먼스가 필요한 임베디드 시스템*에 많이 사용된다.
- 사물에 인터넷을 연결해 사용하는 사물 인터넷(IoT; Internet of Things)*에도 사용한다.
- 빠른 처리 속도를 필요로 하는 분야에 주로 사용한다.
* 임베디드 시스템은 내장형 시스템이란 뜻으로, 시스템 '내부에 탑재된' 컴퓨터를 뜻한다. 일반 목적의 범용 컴퓨터가 아니라 키오스크, 네비게이션, 디지털 도어락 등 단일 목적의 시스템 임베디드 시스템이라 할 수 있다.
* 사물 인터넷은 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술로, 무선 통신을 통해 각 사물을 연결하는 기술이다. 스마트 폰의 어플리케이션을 이용해 집 내부의 조명, 냉장고, 난방장치 등을 제어하는 것이 그 예이다.
🍉 참고
'Language > C' 카테고리의 다른 글
[C언어] 자료형 (1) | 2024.04.15 |
---|---|
[C언어] 포인터 (0) | 2024.04.14 |
[C언어] 변수 (2) | 2024.04.14 |
[C언어] #include <stdio.h>란 (2) | 2024.04.12 |
[C언어] C 프로그래밍을 위한 환경 (Visual Studio 설치) (0) | 2024.04.12 |