본문 바로가기
PROGRAMMING/C

C 언어를 배우기 전에 필요한 사전지식 ( C언어 사전교육, 선행학습)

by 쪼렙엔지니어 2022. 1. 7.
반응형

 

오늘 이야기 해 볼 내용은 C언어를 배우기 전에 알아두면 좋은 것들에 대해서

이야기 해 보려고 합니다.

 

전공자들에게는 쉽고 귀에 딱지가 생기도록 들어본 내용이겠지만

비전공자들의 입장에서는 처음 듣고 생소한 내용일 겁니다.

 

1. 컴퓨터?

컴퓨터 라는걸 너무 어렵게 생각하지 않으셨으면 좋겠습니다.

여러분 손목에 차고 있는 전자시계에도 컴퓨터가 들어있고,

노트북, 데스크탑은 말할 것도 없고, 자동차, 핸드폰에도 컴퓨터가 들어 있습니다.

그냥 계산해주는 건 모두 컴퓨터라고 생각하시는게 편합니다.

컴퓨터를 연산장치, 저장장치, 입력장치, 출력장치라고 구분짓고

그 종류에는 뭐가 있는지 등등 자세히 알아가는건

배우면서 습득해도 괜찮습니다.

그냥 지금은 컴퓨터는 계산(연산)을 해주는 장치!!!

정도로만 알고 넘어가도록 합니다.

 

 

2. 컴퓨터의 계산

그럼 컴퓨터는 어떻게 계산을 하는 걸까요?

먼저 컴퓨터는 무엇으로 움직이나요?

네 맞습니다. 전기로 움직입니다.

사람이 음식을 먹고 음식의 힘으로 움직이듯이

컴퓨터는 전기를 사용하고 전기로 움직입니다.

그러다보니 전기를 이용한 가장 간단한 방법으로 계산을 합니다.

그게 바로 ON (1) 과 OFF (0) 입니다.

 

 

3. ON (1) ??? OFF (0) ??????

컴퓨터는 1과 0밖에 모른다는 이야기를 들어 보신적이 있으실 겁니다.

전기가 통하거나? 안통하거나. 컴퓨터는 이 두가지 상황밖에 인지를 못하는 거죠.

그래서 컴퓨터는 2진법을 사용합니다.

0 아니면 1인거죠.

컴퓨터가 인식하는 2진법에 대한 내용은 다른 포스팅을 통해 자세히 다루겠습니다.

여튼!! 그래서 컴퓨터는 2진법을 사용하는데

2진법은 자리수가 너무 길어서 C언어에서는 16진법을 사용합니다.

그렇다고 우리가 일일히 2진법을 16진법으로 바꿔줄 필요는 없습니다.

대부분 컴파일러가 알아서 변환하여 줍니다.

 

 

4. 컴파일러??? COMPILER???

위에서 얘기한 컴파일러는 무엇일까요?

간단하게 얘기해서 "우리가 작성한 내용(프로그래밍한 내용)을

컴퓨터가 알아 들을 수 있도록 변환해주는 프로그램" 이라고 보시면 됩니다. 

우리가 프로그래밍 할 때 사용하는 C나 C++ 혹은 Python같은 언어들도

우리가 실생활에서 사용하는 언어보다는

기계(컴퓨터)가 알아 들을 수 있는 언어에 훨씬 가깝긴 하지만 

그마저도 기계가 직접 알아 들을 순 없습니다.

왜냐! 

아까 위에서 말씀드렸던것 처럼 기계는 오직 0과 1밖에 모르기 때문이죠.

그래서 컴파일러를 통해 기계가 알아 들을 수 있는 언어로

바꾸어 주는 것입니다.

 

캐드에도 여러종류가 있고, 워드에도 여러종류가 있듯이

컴파일러에도 여러가지 종류가 있습니다.

그 중에서 우리는 MicroSoft에서 나온 "Visual Studio"를 사용 할 겁니다.

당연히 버젼도 여러가지가 있겠지요?

제가 사용하는 버젼은 "Visual Studio 2019"입니다.

설치방법은 따로 포스팅을 하겠습니다.

 

 

5. 기계어란 무엇인가??

Assembly language 혹은 Assembly code라고 불리는

이 기계어는 CPU제조사 마다 다릅니다.

그래서 CPU마다 프로그래밍 방식과 컴파일러 방식이 조금씩 다르다고

생각하면 됩니다.

여러분들이 좋아하는 게임 설치파일 보시면

윈도우용 설치프로그램과 맥용 설치프로그램이 따로 있지요?

그것과 같은 이치 입니다.

그리고 인텔CPU와 AMD CPU 모두 윈도우를 지원하지만

인텔CPU가 윈도우와 호환성이 더 좋다라고 얘기하는 것도

같은 이유입니다.

 

여튼 이렇게 하드웨어가 바로 알아먹을 수 있는 언어가

바로 기계어 이고

위에서 얘기 했듯이 우리가 프로그래밍 할 때 사용한 High level언어를

컴파일러를 통하여 기계어인 Low level언어로 바꾸어 줍니다.

 

High level 언어들 끼리도 조금씩 차이가 나긴 하는데

우리가 먼저 배울 C는 Low level에 가장 가까운 언어 중 하나입니다.

아무래도 현재 사용되는 프로그래밍 언어중 가장 오래된 언어이기 때문이

아닐까 싶네요.

그래서 C언어를 배우고 이해한다는 것은 프로그래밍의 본질에

가장 가깝게 접근 할 수 있는 방법 중 하나 이기도 합니다.

 

 

6. 프로그램 실행 과정

HDD(하드디스크)의 실행파일을 사용자가 실행하면 실행할 수 있는 

실행이미지(기계어)가 RAM으로 복사가 됩니다. 

보조기억장치(하드디스크)에서 주기억장치(메모리)로 이동되었다는 의미입니다.

복사된 실행이미지를 인스턴스라고 합니다. 
 
정리하면 하드디스크(보조기억장치)에 저장되어 있는 기계가

인식할 수 있는 기계어를 가지고 있는 실행파일을 사용자가 실행하면

메모리(주기억장치)에 실행파일이 복사되어 인스턴스(Process)가 생성됩니다.

여기서 CPU가 정보를 전달받아 하나씩 연산한다.

만약 몇차례의 반복실행을 한다고 했을때 여기서 실행되는 실행파일이

동일하다면 기계어코드는 똑같다고 생각하면 됩니다.

 

 

실헹파일을 만드는 방법은 C언어로 프로그램을 짜고(소위 코딩한다고 불리는 행위)

빌드(문제가 없는지 점검하고 실행파일로 변환하는 행위)를 하면 실행파일이 생성됩니다.

CPU안에는 소량의 기억장치 레지스터가 존재하고,

실행을 하면 RAM의 데이터를 레지스터로 복사하고

연산을 하여 레지스터에서 연산의 결과값을 다시 RAM으로 데이터를 복사를 합니다.

중요한 내용은 연산은 CPU가 하고 정보의 저장은 메모리를 사용합니다.

 

 

막 복잡한것 같죠?

그러나 이제 차근차근 하나씩 배워나가다 보면 이해하게 될겁니다.

일단 오늘은 여기까지 하겠습니다.

다음시간에는 메모리 구조와 이진법 등을 이야기 해 보겠습니다.

감사합니다. ^^

 

 

 

 

 

반응형

댓글