본문 바로가기

Basic/C & Java

C 언어란? #1

반응형

 

C언어 의 유래

UNIX 운영체제를 개발하기 위해, 1971년 데니스리치와 켄 톰슨이 개발한 프로그래밍 언어이다.

과거 UNIX 운영체제는 독보적으로 편리하고 효율적인 표준 운영체제였다. 기존의 UNIX는 '어셈블리 언어'라는 low-level언어로 작성되었다. 어셈블리언어의 불편함을 극복하고자 탄생한것이 c언어이다.


 

C언어가 왜 필요한지?

프로그래밍할 때 받는 제한이 거의 없다. 고급언어에 속하면서도 하드웨어를 직접 제어할 수 있다. c언어는 컴퓨터에 대한 풍부한 이해와 숙련도가 있다면, 다루기에 편리한 언어이다.

C언어를 이용해 가능한것으로 서버개발, 운영체제,MFC(문서프로그램),네트워크(소켓),POS,알고리즘(내부구조),게임 개발 등이 가능하다.


 

C언어의 기본 구조

다음은 Hello World!라는 문장을 출력하기 위한 예문이다.

#include <stdio.h>

int main( )

{

printf("Hello world!");

return 0;

}

출처 입력

각 구조의 설명

 

▶ #inlclude <stdio.h>

: #은 '전처리기'이다. 전처리기란 컴파일하기 전에 미리 처리하라는 명령어를 의미한다. 즉, 컴파일 하기전에 <>안에 있는것을 include(포함하라)라는 의미이다.

 

▶ stdio.h

: '.h'확장자를 가지는 파일을 헤더파일이라 부른다. 헤더파일은 이미 만들어져 있는 함수가 어떤게 있는지 정리한 목차라고 보면된다. 전처리기를 통해 헤더파일을 추가하면, 컴퓨터는 헤더파일을 보면서 이 함수가 존재하는지 판단하고 기능을 가져올 수 있다. stdio.h(STanDard Input Output)는 표준입출력 헤더파일으로써, 입출력,반복문, 조건문 들을 사용할 수 있도록 해준다.

 

▶ int main()

: C언어의 가장 기본적인 함수이다. 실행버튼을 누르면 main 함수안에 있는 코드가 제일 먼저 실행된다.

 

▶ return 0;

: 함수가 종료되었을 때, 함수 내의 변수 혹은 어떤 값을 돌려주는 역할을 한다.

※차후에 나온 C++표준에서는 main값을 리턴하지 않아도 암묵적으로 0을 return한다고 판단하도록 수정되었다.

 

▶ ;(세미콜론)

: C언어에서는 코드가 끝날때 ;(세미콜론)을 사용해 주어야한다. 인간이 문장을 쓸때 .(마침표)를 찍는것과 같이 C언어에서는 ;가 마침표로써 반드시 들어가야한다.


Compile & Interpreter

사람의 언어를 기계가 인식할 수 있는 컴퓨터언어, 즉 기계어로 바꿔주는 작업이다. 컴파일을 처리하는것을 Compiler라고 한다. 컴퓨터와 같은 기계는 기본적으로 0,1으로 신호를 인식한다. 쉽게말해 전원이 꺼지면 0, 전원이 들어오면 1을 인식하는것이다.

인간이 컴퓨터와 소통하기 위해서 인간의 언어 그 자체만으로는 컴퓨터가 인식할 수 없으므로 번역과정이 필요하다. 컴퓨터가 0,1을 인식할 수있으니 2진법,10진법,16진법 등을 적용하여 컴퓨터에 인간이 표현하고자하는 의미있는 신호를 보낼수 있다는것에 착안하여 프로그래밍 언어가 개발되었다. C언어에서 우리가 사용하는 방법은 기본적으로 인간의 언어를 기계어로 직접 번역하는 과정에 가깝다. 이를 complie과정이라하며 compile을 수행하는 도구를 compiler라 하는것이다.

Interpreter는 compiler와 마찬가지로 '사람의 언어를 기계가 인식할 수 있는 기계어로 바꿔주는 작업을 수행한다'는 역할은 같으나, 인간이 작성한 코드를 한 단계씩 해석하여 실행된다는 점이 다르다.

간단히 말해, compiler는 인간이 쓰기에는 불편하지만 기계가 빠르게 인식할 수 있다. 반면에 interpreter는 인간이 쓰기에는 편하지만 기계가 비교적 느리게 인식한다는 차이점이 존재한다.

 

※ 다음은 Hello World!라는 간단한 문장을 출력하기 위해, 컴파일러(C언어 환경) 인터프리터(파이썬)가 사용될 때 어떻게 작용하는지에 대해 간단한 차이를 알아보기 위한 예시이다.

 


Compiler (C) Interpreter (Python 등)
인간이
입력해야 할
문장 구조
#include <stdio.h>


int main ( )
{
printf("Hello world!");
return 0;
}
Print('hello world!')
번역과정 기계어로 직접번역 인간이 입력한것을 문장단위로 번역
차이점 인간이 쓰기불편, 기계가 인식하기 빠름 인간이 쓰기 편함, 기계가 인식하기 느림

 


 

 

 

반응형

'Basic > C & Java' 카테고리의 다른 글

C 언어란? #2 - 변수와 자료형  (0) 2021.10.19