1. 개요
C언어는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영체제에서 사용하기 위해 개발한 프로그래밍 언어이다. 하지만 지금은 게임이나 서버용 응용프로그램 뿐만 아니라 임베디드 시스템을 위한 프로그래밍에도 함께 쓰이고 있다.
2. 발전과정
ALGOL 60 → CPL → BCPL → B언어 → C언어 순으로 발전해 왔다.
C언어는 어셈블리어가 가진 많은 연산기능과 함께 고급언어가 가진 제어구조나 기능적인 모듈을 제공하기 때문에 유연하고 막강한 기능제공이 가능했다.
1980년대 미국 표준을 제정하는 ANSI에서 ISO(국제표준화기구)와 함께 C의 준화작업을 시작했고, 1990년에 공식적으로 C90이라는 표준을 발표했다.
3. C언어의 특징
- 이식성이 뛰어나다.
C언어는 운영체제와 같은 시스템 프로그래밍을 작성하기에 적합한 언어이므로 프로그램의 이식성이 높고 하드웨어에 대한 제어가 가능하다.
한 컴퓨터에서 C언어로 작성된 프로그램은 소스코드를 변경하지 않고 다른 컴퓨터나 운영체제에서 실행할 수 있다. 이는 모든 컴퓨터에서 동일하게 동작하는 표준 라이브러리 함수를 프로그래머에게 제공하기 때문이다. 즉, 특정 CPU를 가진 컴퓨터 시스템에서만 실행되는 기계 종속적인 프로그램이 아닌 어떤 하드웨어든지 지원이 가능흔 기계 독립적인 프로그램 개발이 가능한 언어다.
- 고급언어와 저급언어의 특징을 모두 가지고 있다.
저급언어인 어셈블리어가 가진 많은 연산 기능과 함께 고급언어가 가진 제어구조나 기능적인 모듈을 제공하기 때문에 저급언어 특성의 논리적 구조를 가진 고급언어이다.
- 논리적이고 구조적이며 함축적인 프로그래밍 가능
C언어는 하나 이상의 함수로 구성된 언어이기 때문에 함수를 활용한 논리적이고, 구조적이며, 함축척 프로그래밍 작성이 가능하다.
함수란 공통된 기능을 수행하기 위한 명령어들을 하나의 독립된 단위로 모아 놓은 모듈이라 할 수 있으며 복잡한 소스코드를 기능에 따라 함수 단위로 나누어 세분화시킴으로써 소스코드에 대한 중복사용을 최소화하고 재사용 가능성을 개선시킨 것을 모듈화라고 한다. 이렇게 모듈화된 기능을 각종 저에문들과 함께 사용함으로써 구조화된 프로그래밍 기법을 지원한다. 모듈화되고 구조화된 소스코드는 프로그램의 크기도 작고, 프로그램의 실행속도도 빠를 뿐만 아니라, 소스에 대한 이해가 쉽기 때문에 유지/관리가 편하다.
- 포인터를 이용한 메모리 관리
포인터는 자료가 저장된 메모리의 주소를 의미하는데 이러한 포인터는 C언어의 대표적인 기능이다. 포인터를 잘 활용하면 메모리 주소를 직접 제어할 수 있으므로 효율적인 메모리 관리와 더불어 실행속도를 향상시킬 수 있다. 하지만 포인터를 잘못 사용하면 디버깅하기 어려운 런타임오류가 발생하여 오히려 처리능력을 저하시킬 수 있다.
- 절차지향적 언어
프로그램 작성 순서에 따라 프로그램 내부를 순차적으로 실행한다.
4. C언어의 구조
C언어의 구조는 다음과 같다.
#include <헤더파일>
전역변수 선언부;
함수 선언부;
int main() {
프로그램 처리부;
}
void 사용자함수부() {
}
'NCS보안3기 > 프로그래밍 기초' 카테고리의 다른 글
[Programming] 파이썬에 대해서 (0) | 2017.03.18 |
---|---|
[Programming] 어셈블리 분석 및 C코드 추측 (0) | 2017.03.16 |
[Programming] 어셈블리 언어 (0) | 2017.03.16 |
[Programming] 레지스터 & 스택 (0) | 2017.03.15 |
[Programming] 변수와 함수 (0) | 2017.03.15 |