C언어란 무엇인가?
C 언어는 프로그래밍 언어중 하나로, 1972에 벨 연구소에서 'UNIX'를 구현하기 위해
데니스 리치(Denis Ritchie)가 만들어낸 시스템 기술용 언어입니다.
원래의 명칭은 그냥 'C'로 뜻하지만 한국에서는 'C언어'라는 명칭으로 자주 부르는 언어입니다.
세계적으로 가장 많이 사용하는 프로그래밍 언어중 하나이며
당시에는 UNIX에 'assembly(어셈블리)' 언어로 만들어졌는데, 하드웨어 의존도가 높은 탓에
컴퓨터 기종마다 프로그램을 다시 작성해야하는 호환성 문제가 발생해
기종 간에 호환성 문제를 해결하기 위해 high level(하이그 레벨)이면서 assembly 만큼의
하드웨어 제어가 가능한 언어가 필요했고, 그에 따라서 C언어가 탄생하게 되었습니다.
C에 대한 설명
C언어의 정신은 C99 Retionale에서 다음과 같이 묘사하고 있습니다.
- 프로그래머를 믿어라 = Trust the Programmer
- 프로그래머가 작업을 못하게 방해하지 말라 - Don't prevent the programmer from
doing what needs to be done - 언어를 작고 간단하게 유지하라 - Keep the language small and simple
- 명령을 실행하는 방법을 하나만 제공하라 - Provide only one way to do an operation
- 호환성을 장담할 수 없더라도 빠르게 작동하게 만들어라 - Make it fast, even it is not guaranteed to
be protable
C에 대한 강점
C로 짜여진 코드들은 속도가 빠르고 바이너리 크기도 작기에 속도가 다른 무엇보다 중요한 임베디드
혹은 모바일 계열, 또는 시스템 프로그래밍 등에서 주로 쓰이고 있습니다.
C는 수많은 언어의 탄생과 소멸 사이에서도 가장 높은 점유율을 유지하며 살아남고 있습니다.
탄생 배경을 보면 C는 하드웨어 제어가 가능하며 프로그래밍 이식성이 높고, assembly를 대체한
언어인 만큼 저급한 언어의 특성을 가진 고급 언어로도 설명할 수 있습니다.
C의 표준화 과정
C언어는 간결하면서 뛰어난 성능을 가져, 표준 C의 필요성에 따라 1990년대 초 미국의 표준화
기구인 ANSI(American Standard Institute)에 의해 'ANSI C'가 발표되었습니다.
현재는 국제 표준화 기구인 ISO(International Standardization Organization)을 중심으로
C가 표준화가 진행되고 있고, ISO에서 1990년에 발표한 표준언어 C를 'C90',
1990년에는 개정해 발표한 표준 C를 'C99'라고 합니다.
C언어의 사용 분야
C언어는 다음과 같은 분야에서 사용되고 있습니다.
- 운영 체제 및 디바이스 드라이버
- 마이크로컨트롤러
- 임베디드 시스템
- 암호학 라이브러리
- 프로그래밍 언어 인터프리터(CPython 등)
- 웹 서버(Apache 등)
- 데이터베이스(PostgreSQL 등)
- 애플리케이션
- 이외 매우 빠를 계산속도가 필요한 프로그램이나 라이브러리
C 프로그램의 실행 과정
Coding - Compile - Linking - Execute
- Coding(Editing) - 소스 코드를 작성하여 '소스 파일'을 생성합니다. ex) hello_world.c
- Compile: 소스 파일을 '목적 파일'로 변환시킵니다. ex) hello_world.c -> hollo_world.obj
- Linking: 목적 파일을 '실행 파일'로 변환시킵니다. ex) hello_world.obj -> hello_world.exe
- Execute: 실행 파일을 실행할 시 프로그램이 실행됩니다.
C 명칭
프로그램 작성시 변수명, 배열명, 함수명 등 명칭을 부여하여 사용되는데, 명칭을 작성할때에는
정해진 규칙을 따라야 합니다.
- 영문 또는 숫자, _(under score|undefined|밑줄) 만을 사용합니다.
(= 이외 특수문자는 사용불가) - 첫 문자에는 영문자 또는 _만 사용할 수 있습니다.
(= 첫 문자에는 숫자가 올 수 없다) - 명칭 내 공백이 있으면 안됨
(X : hello world / O : hello_world) - 영문자의 대문자 소문자를 구분해야 한다.
(giraffe && Girafffe && GIRAFFE) - 예약어를 사용할 수 없다.
('for'문을 사용할 수 없지만 'For'은 사용이 가능)
상수
C에서 사용되는 상수(constant)로는 '수치 상수','문자 상수', '문자열 상수'가 있다.
연산자
C에서 각종 연산을 수행할때는 '연산자(operator)'를 이용해 각종 연산을 수행한다.
에러와 경고의 경우
에러
에러(error)는 '오탈자', '문법에 맞지 않은 형식', '반드시 필요한 지정이 없는 경우' 처럼
문법상 명백하게 잘못된 경우에만 발생하며, 컴파일러가 수행할 수 없으므로 에러를 반드시
수정해야 한다.
경고
경고(warning)은 코드 내용에 문제가 있어보이기는 하지만 컴파일은 가능한 경우에 문제가 없으나
이식성에 불리하거나 C 문법상 권장하지 않는 부분이 있을 경우 발생한다.
따라서 에러와 달리 실행이 가능하므로 작성자 판단하에 수정하면 된다는 차이가 있다.
참고 자료
'응용프로그램언어 > C' 카테고리의 다른 글
[C] C언어의 초창기를 맛보자!! - 1강.소개 (0) | 2022.12.30 |
---|