본문 바로가기
Programming/C

C언어 1. C언어 등장 배경 및 특징

by Rayched 2022. 7. 18.

① C언어의 등장 배경
C언어는 기존 UNIX 운영체제를 보다 쉽게 개발하기 위해서 개발된 프로그래밍 언어입니다.
당시에 UNIX 운영체제에서 사용되던 프로그래밍 언어는
저급 언어(Low-Level Language)인 '어셈블리어' (Assembly Language)로 작성됐었습니다.
어셈블리어는 하드웨어, 특히 컴퓨터 CPU 구조에 변화가 생길 때마다 매번 다른 어셈블리어로 프로그램을
다시 작성해야 했습니다.
이러한 단점을 가지고 있다 보니 고급 프로그래밍 언어의 필요성이 점차 대두되었고
그 결과, 1971년 벨 연구소의 데니스 리치를 통해서 C언어가 개발되었습니다.
이후 C언어가 등장한 이후, 기존에 어셈블리어로 작성된 대부분의 코드들은 C언어로 재작성됐습니다.

② C언어의 특징
C언어가 등장하게 된 배경에 대해 간략하게 알아봤으니 이번에는 C언어가 가진 특징에 대해 알아보겠습니다.

  • C언어는 고급 언어에 속하지만, 하드웨어를 직접 제어하는 것이 가능하다.
  • 초보자에게 친화적인 프로그래밍 언어는 아니다.

앞에서 설명한 것처럼 C언어는 어셈블리어를 대체하기 위해 만들어진 고급 프로그래밍 언어입니다.
그러다 보니 다른 고급 언어와 다르게 하드웨어를 직접적으로 제어하는 것이 가능합니다.
반대로 말하자면 하드웨어를 제어할 수 있어야 되는 프로그래밍 언어이다 보니
C언어를 활용해서 프로그램을 개발하려면 컴퓨터에 대한 풍부한 지식이 있어야 하므로
초보자에게 친화적이지는 않고, 오히려 숙련자에게 친화적인 언어라고 볼 수 있을 것입니다.

  • Java, C#, Objective - C 등 C언어를 기반으로 만들어진 프로그래밍 언어가 많음
  • 컴퓨터 또는 시스템을 개발하는데 주로 사용해서 프로그래밍에 대해 이해하기 쉬움

Java, C#, Objective - C 등 C언어를 기반으로 만들어진 프로그래밍 언어는 많은 편입니다.
이러한 언어들을 C-Like Language라고 하고, C언어를 먼저 배우고 위의 언어를 배우게 되면
해당 언어를 익히는 것이 수월할 것입니다.
마지막으로 앞에서 말한 것처럼 C언어는 컴퓨터나 시스템을 개발하는데 주로 사용되기 때문에
프로그래밍에 대해서 이해하고, 프로그램이 어떤 식으로 동작하는 지를 알 수 있게 해주는 언어입니다.


③ C언어 코딩 기본 형태

#include <stdio.h> 
//표준 입, 출력 기능을 모아둔 라이브러리를 호출한다.
//stdio => standard input output의 약어이다.
//input => 표준 입력, 키보드  output => 표준 출력, 모니터

int main (void) { //메인 함수
printf("Hello World"); //printf는 함수 호출이다. (함수를 사용한다.)
}

상단의 코드를 실행시키면 Hello World라는 텍스트가 출력되는 것을 확인할 수 있을 것이다.

Visual Studio에 코드 입력 후 실행, 텍스트가 출력되는 것을 확인할 수 있다.

(1). #include <stdio.h>
앞에서 말한 것처럼 해당 코드는 표준 입, 출력 라이브러리를 호출
즉, 표준 입, 출력과 관련된 기능을 불러오겠다는 것이다.
그러면 이것을 왜 사용하는 것일까?
우선 '#include <stdio.h>'을 입력하지 않은 상태로 코드를 실행해보겠다.

표준 입, 출력 제거 후 코드를 실행하면 오류가 뜨면서 코드가 정상적으로 실행되지 않는다.

코드를 실행했을 때 왜 'Hello World'라는 텍스트가 출력되지 않았을까?
Hello World를 화면에 출력하는 기능을 가진 printf 함수가 가진 기능과 어떤 일을 할 수 있는 지를 컴파일러에게
알려주는 역할을 하는 것이 '#include <stdio.h>'이다.
즉 printf가 가진 기능에 대한 정리가 모두 <stdio.h> 안에 정리가 되어있기 때문에 이것을 입력하지 않고
코드를 실행하면 Hello World 텍스트가 정상적으로 출력될 리가 없던 것이다.

(2). int main (void) { }
해당 문구는 메인 함수를 생성하는 것이다. 여기서 'main'은 함수의 이름이고
'int'는 함수의 리턴 타입이다. 이것에 대해서는 나중에 더 자세하게 알아볼 것 이다.

(3). 보충 설명

#include <stdio.h>

int main(void) {
 printf("안녕하세요.\n");
 printf("Hello, My name is \n Park \n");
 printf("안녕하세요. 제 이름은 \"홍길동\" 입니다.");
 
 return 0;
}
//출력 결과
/* 안녕하세요.
 * Hello, My name is
 * Park
 * 안녕하세요. 제 이름은 "홍길동" 입니다.
 */

프로그램 실행, 입력해둔 텍스트가 정상적으로 출력됨

우선 해당 코드에서 '\n' 부분을 먼저 살펴보자.
여기서 '\n'은 문자 줄바꿈의 역할을 한다. 작성했던 코드와 실행 결과를 보면 알 수 있다.
"안녕하세요.\n"으로 입력하고 프로그램을 실행했을 때 다음 문장이 한칸 아래로 내려가서 출력된 것을
확인하는 것이 가능하다. 이런식으로 여러 개의 문장을 출력시킬 때는 줄바꿈 역할을 하는
'\n'을 사용한다.
그 다음에 " "(큰따옴표)';'을 봐보자.
C언어에서는 문법 요소가 아닌 단순한 문자는 " "로 감싸서 입력해줘야 한다.
그리고 ';(세미콜론)'은 명령마다 하나씩 들어가 있는데 이것은 하나의 명령이 끝났음을 의미한다.
이것을 붙이지 않고 컴파일을 실행할 경우, 명령이 완결되지 않았기 때문에 100% 컴파일 에러가 발생한다.
다음은 '{ } (중괄호)''//'에 대해 설명하겠다.
우선 '{ }'는 코드의 영역을 표현한 것 이다.
함수 옆에 '{ }'를 붙이는 것으로 해당 함수에 원하는 명령을 입력할 수 있다.
그리고 '//'는 주석문으로, 아마 이것도 코딩을 하면서 가장 많이 보고, 사용하게 되는 것들 중 하나이다.
일종의 메모와 비슷한 느낌으로, 프로그램을 실행할 때 주석문 안에 입력된 문자는
프로그램을 실행할 때 영향을 받지 않는다.



'Programming > C' 카테고리의 다른 글

C언어 5. 자료형 & 서식지정자  (0) 2022.08.12
C언어 4. 연산자  (0) 2022.08.06
C언어 3. 상수  (0) 2022.08.05
C언어 2. 변수  (0) 2022.07.27