C언어에 대한 이해
C언어에 대한 이해

당장 무엇인가를 만들어내겠다는 욕구는 잠시 접어두고, 아주 기본적인 이야기부터 시작해보도록 하겟습니다. C 언어에 대한 일반적인 이야기들은 프로그래밍 전반에 대한 이해에 많은 도움이 될 것입니다.

C언어는 프로그래밍 언어다

목차의 제목 그대로 C언어는 프로그래밍 언어이며, 앞선 포트스에서도 말씀드렸듯 여기서 프로그래밍 언어란 컴퓨터와의 대화에 사용되는 일종의 대화수단입니다.

🔻코딩과 프로그래밍에 대한 조금 더 자세한 이야기는 아래를 참고해주시기 바랍니다.🔻

 

코딩이란

 코딩이란 최근 코딩에 대한 관심이 무척 높습니다. 아이들은 이미 정규 교육과정 중에 코딩을 접하고 있으며, 자녀를 둔 학부모 입장에서는 아이들이 배우는 코딩에 대해 자연히 관심을 가질

comoble.tistory.com

언어는 대화의 수단

컴퓨터와의 대화의 수단이란 말을 쉽게 이해하기 위해서 하나의 예를 들어보면 다음과 같습니다.

우리나라 사람과 미국인이 서로 의사소통을 하기 위해서는 크게 2가지 방법이 있을텐데요, 미국인이 한국어를 익혀서 우리 말로 대화하는 것이나, 또는 우리가 영어를 배워서 영어로 대화하는 상황이 있을 것입니다.

두 상황 모두, 서로 다른 상대의 언어를 배워야한다는 것이 공통점인데, 이처럼 두 사람 간 대화가 가능하려면 둘 사이의 공통적인 대화수단인 '언어'가 마련되어야 합니다.

반대로 일본어를 모르는 한국인과 한국어를 모르는 일본인이 소통해야 하는 상황을 가정해보겠습니다. 이러한 상황에서는 둘 모두 서로의 언어를 모르기때문에, 통역가 또는 통역기의 도움을 받아야합니다.

그런데 여기서 한 단계 더 나아가 도움을 주기로 한 통역가가 아쉽게도 영어와 일어만 가능하다고 가정해보겠습니다.

이 경우 우리는말하고자 하는 바를 일단 한국어에서 영어로 바꿔 통역가에게 전달하고, 통역가는 이에 해당하는 내용을 다시 영어에서 일본어로 바꿔 일본사람에게 전달해야 할 것입니다.

물론 이 예시가 가능하려면 한국인이 영어를 할 수 있다는 전제 조건도 추가적으로 필요합니다.

컴퓨터와 대화하려면

위의 예시를 잘 이해하셨다면, 아마 사람이 컴퓨터에게 일을 시키기 위해서는 컴퓨터와 사람의 대회를 위한 공통의 대화수단이 필요하다는 사실도 쉽게 이해하실 수 있습니다.

그러나 불행한 사실은 우리가 태어날때부터 세상에 존재했던 우리말, 또는 외국어와 달리컴퓨터와 대화를 하기 위한 수단은 자연에 존재하지 않았다는 것입니다.

즉, 컴퓨터는 사람의 언어를 있는 그대로는 이해하지 못하며, 사람도 컴퓨터가 인식하는 기계어를 있는 그대로는 이해할 수 없습니다.

그렇다고 사람이 무턱대고 기계어를 공부하면 되는가 하면, 이 또한 사람이 감당하기에는 그 부담이 너무 크다는 것이 중론입니다.

그럼 반대로 컴퓨터에게 사람의 언어를 가르친다는 것은 가능할까요? 아마도 머신러닝과 딥러닝, 인공지능과 빅데이터가 난무하는 4차산업혁명의 폭풍 속에서 점차 그 가능성이 증대될 수 있을것 같습니다만, 현재 2022년의 상황만 놓고 보면 아직까지는 실현 불가능한 영역인 것 같습니다.

컴파일러의 등장과 기계어

하지만 사람과 컴퓨터와의 대화는 늘 필요한데요, 그래서 나온 해결책이 바로 컴파일러입니다.

컴파일러를 통한 대화
컴파일러

위 그림을 보면 우리는 한국어 및 C언어를 구사하며, C언어와 기계어를 이해하는 컴파일러(compiler)라는 통역가가 등장합니다.

컴파일러는 C언어와 기계어를 구사하는데요, 여기서 기계어란 컴퓨터가 이해할 수 있는 0과1로 이뤄진 2진법 디지털 언어입니다.

흔히들 우리가 디지털은 모두 0과 1로 이뤄져있다고 말하는데, 이때의 디지털 개념이 바로 컴퓨터 언어를 지칭하는 것입니다.

즉, 컴퓨터는 0과1로된 언어인 기계어만을 이해할 수 있기 때문에 우리는 기계어를 구사할 수 있는 통역가, 컴파일러가 필요한 것입니다.

자, 그럼 다시 컴퓨터에게 말하는 방법을 살펴보겠습니다. 먼저 우리는 우리가 한국어로 말하고자 하는 바를 컴파일러가 이해할 수 있는 C언어로 변환하여 컴파일러에게 전달합니다. 그러면 이 컴파일러는 C언어를 이해하고, 컴퓨터에게 이를 기계어로 번역하여 전달하게 되는 것입니다.

보시는 것처럼 이같은 개념을 바탕으로 사람이 익히기에도 훨씬 간 단한 '프로그래밍 언어’라는 것이 등장하게 되었으며 위에서 등장한 C언어 또한 이러한 프로그래밍 언어의 일종입니다.

요약

  • 첫째 - 프로그래밍 언어란 무엇인가?
    : 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어를 의미하며, C언어도 이러한 프로그래밍 언어 중 하나입니다.
  • 둘째 - 컴파일러의 역할은 무엇인가?
    : 프로그래밍 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역하는 역할을 합니다. 더불어 이렇게 번역하는 일 자체를 가리켜 편집한다는 뜻의 컴파일(compile)이라고 합니다.

위 두 가지 개념을 이해하시는데 무리가 없으시다면 프로그래밍 언어의 시작은 일단 성공인 셈입니다.

다음 글에서는 C언어의 역사와 특징 및 장점 등에 대해 조금 더 자세히 알아보도록 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기