티스토리 뷰

C, C++

[ C언어 ] 0. 개요

RiKang 2017.11.04 15:26

Table of Contents


프로그래밍 언어

C언어

들어가기 전에




1. 프로그래밍 언어


 컴퓨터, 스마트폰 등에 장착된 CPU가 0과 1만 가지고 정보를 처리한다는 건 이미 유명한 사실입니다. 하지만, 그렇다고 해서 프로그래머가 010001100...01010 이런 식으로 하나하나 타이핑을 하며 프로그램을 만들지는 않습니다. ( 프로그래밍이 01010을 치는 작업이라면 간단한 프로그램 하나 만드는 데 평생이 걸릴지도 모르는 일입니다.)


 그리고 기계는 기본적으로 한글이나 영어 같은 인간의 언어를 이해할 수 없습니다. 인간의 언어와 기계의 언어, 이 둘 사이에는 프로그래밍을 배우기 전까진 인식하기 힘든 큰 갭이 있는 것입니다. 바로 이러한 갭을 줄여주기 위하여 개발된 것이 '프로그래밍 언어' 입니다.


 인간은 프로그래밍 언어를 공부함으로써 프로그래밍 언어를 사용할 수 있게 되고, 기계는 '컴파일러'라는, 프로그래밍 언어를 기계어로 바꿔주는 번역기를 통하여 프로그래밍 언어를 이해할 수 있게 됩니다. 프로그래밍 언어를 통해 비로소 인간과 기계 사이의 의사소통이 쉽게 가능해지게 된 것입니다.



 다시 풀어 설명하면, 프로그래머는 습득한 프로그래밍 언어로 기계에 내릴 명령들을 작성하고, 컴파일러는 그 명령들을 기계가 실행시킬 수 있는 프로그램으로 만들고, 기계는 그 프로그램을 실행시키는 역할입니다.


 프로그래밍 언어는 인간의 언어에 가까울수록 '고급 언어 (high level)', 기계의 언어에 가까울수록 '저급 언어 (low level)' 로 분류합니다. 물론 고급 언어라고 해서 장점만 있는 것은 아니고 각각의 언어마다 장단점이 존재합니다. 이 시리즈에서 다룰 C언어는 '저급 언어에 가까운 고급 언어' 정도에 위치한 프로그래밍 언어입니다.




2. C언어


 C언어는 운영체제인 UNIX 개발을 위해 벨 연구소에서 만든 프로그래밍 언어입니다. 개발 초기의 C언어는 문제점이 꽤 많았지만, 이후 미국표준협회(ANSI)를 필두로 한 위원회에서 C언어 표준을 제정하면서 문제점들이 줄어들고 인기 있는 언어로 자리 잡았습니다.


 덕분에 C언어는 1970년대에 만들어졌음에도, 현재까지 세계적으로 많이 사용하는 언어 중 하나로서 사랑받고 있습니다. C언어가 활용되는 예시를 보면 운영체제 Linux, 데이터베이스 관리 시스템 MySQL 등이 C를 이용해 만들어졌으며, 윈도우나 맥에서 사용하는 여러 응용 프로그램 중에서도 C언어로 개발된 프로그램들이 꽤 많습니다.


 C언어가 이렇게 오랫동안 사랑받아온 이유로는 아래와 같은 장점들이 뽑힙니다.


- 높은 자유도


C언어는 고급 언어로서의 기본 문법이나 사용법들을 갖추고 있으면서도, 기계어 코드를 직접 입력할 수 있는 높은 자유도를 가지고 있습니다.


- 빠른 실행 속도


고급 언어 중에서 기계어에 가까운 편에 속하기 때문에, C언어로 작성한 프로그램은 꽤 빠른 실행 속도를 지닙니다.


- 이식성과 확장성


다른 고급 언어들과 연결하기 쉽다는 장점이 있습니다. C++ 언어에서는 C언어로 작성한 프로그램을 그대로 쓸 수 있으며, 다른 고급 언어들에서도 C언어로 작성된 프로그램을 가져다 사용할 수 있도록 지원해 줍니다.


 한국에서는 특히, 많은 프로그래머가 C언어를 통해 프로그래밍에 입문한 것으로 유명합니다. 전국의 많은 대학교와 학원들이 프로그래밍 입문용 언어로서 C언어를 채택하고 있기 때문입니다.





3. 들어가기 전에


 프로그래밍 입문을 하면서 C언어를 처음 접할 때, 가장 하기 쉬운 실수는 C언어의 용어와 문법을 공부하는 것에 급급해 프로그래밍을 제대로 배우지 못하는 것입니다. 문법의 암기 위주로 공부한 후 '나는 C언어에 대해 공부했고, C언어를 할 줄 안다.'라고 생각하고 넘어갔다간 나중에 한계에 부딪힐 수 있습니다.


 그런 상황의 이해를 위해, 프로그래밍 언어는 아니지만, 한국인들이 한글 다음으로 많이 배울 언어인 영어로 예를 들어보겠습니다. 여기, 수많은 영어 단어와 문법을 줄줄이 꿰고 있어 많은 영어 시험에서 고득점을 받은 학생이 있습니다. 그런데 그 학생은 영어로 대화를 해본 적이 없어 외국인을 만나면 입이 안 떨어졌고, 외국에 여행 갔을 땐 한국과는 다른 억양과 의사 표현에 많은 어려움을 겪어 같이 간 친구의 도움을 받아야 했습니다. 이때, 이 학생이 '영어를 할 줄 안다.'라고 할 수 있을까요?


 물론 사람마다 이견이 있을 수 있는 상황이지만, 당사자인 학생의 입에서 '영어를 할 줄 안다.'라는 말이 나오기 위해선 다시 회화를 공부해야 할 것입니다.


 프로그래밍 언어를 공부할 때에도 이런 현상이 일어날 수 있습니다. 오히려 '영어를 할 줄 안다.'는 말보다 'C언어를 할 줄 안다.'는 말을 더 가볍게 사용하는 경향이 있기 때문이지요. 하지만 C언어의 용어와 문법을 제대로 알고 있더라도, C언어로 쉽게 해결할 수 있는 상황들을 해결하지 못한다면 'C언어를 할 줄 안다.'라고 말하기에 무리 감이 있을 것입니다.


 따라서 이 시리즈에서는 C언어의 용어와 문법에 대한 소개 이외에도, 다양한 프로그래밍 문제를 통해 C언어의 활용 능력을 키우는 것에 중점을 두고 있습니다. 각 장에 소개된 문법들을 공부한 이후엔, 해당 문제들을 고민하고 틀려보고 고쳐가면서 C언어에 더 익숙해지는 것을 추천합니다.