본문 바로가기
C

[C] 0. C언어란 무엇인가

by 후회없이 열심히 2022. 1. 4.

안녕하세요 후회없이 열심히입니다.

 

첫 시작을 알리는 글을 올린 후 어디서부터 다시 공부해야하나 고민을 했습니다.

첫 코딩을 공부한 것이 고1, 이후 2학년 3학년이 되면서 대입때문에 코딩공부는 잠시 내려놨었습니다.

그래서 1년 정도 공백이 생기게 되었음을 상기시키며 어차피 대학교 입학 전까지 아직 시간이 많이 남았기에 처음부터, 기초부터 천천히 다지자는 마음으로 정말 다시 시작하도록하겠습니다. (또 처음 시작하는 그 누군가에게 도움이 될지도 모른다는 마음으로요.)

C언어 공부는 일단 문법을 공부한 후, 백준 사이트에서 문제를 풀어보는 식으로 진행하려합니다.

 

본론으로 돌아와 본격적인 C언어를 공부하기 전에 C언어에 대해서 먼저 공부하려 합니다.

컴퓨터는 흔히 아는 것 처럼 0과 1의 조합, 즉 이진수를 사용하는데요. 이를 기계어라 합니다.

사람이 컴퓨터에게 명령을 내리고 그 명령을 컴퓨터가 수행하기위해선 대화와 소통이 이루어져야합니다.

그런데 사람이 0과 1의 기계어를 배우기는 것은 쉽지않거니와 그렇다고 컴퓨터가 사람의 언어를 이해하는 것은 더욱

어렵기때문에 내놓은 해결책이 바로 프로그래밍 언어입니다.

즉, C언어는 그 중 하나(프로그래밍 언어)로써 대화 수단을 제공합니다.

이 때, 프로그래밍 언어와 기계어 사이를 통역해줄 또 다른 수단이 필요하겠죠. 이를 '컴파일러(compiler)'라고 합니다.

이 때 '컴파일(compile)'이란 사전적으로는 어떤 언어의 코드를 다른 언어로 바꿔주는 과정입니다. 쉽게 말해 번역을

하는 것이죠.

즉, 컴파일러의 역할은 앞으로 작성할 코드(프로그래밍 언어)를 컴파일해 0과 1의 조합, 이진수로 변경해 컴퓨터가 이해하도록 하는 것입니다.

앞으로 사용할 Dev C++은 C언어라는 대화 수단을 제공함과 동시에 컴파일러의 역할까지 수행해주는 프로그램입니다.

 

 

이제 C언어가 무엇인지 알아봤으니 다음으로 C언어의 특성과 장점에 대해 공부해보겠습니다.

1. C언어는 고급(High-Level)언어입니다.

프로그래밍 언어를 분류하는 방법 중 하나로 저급(Low-level)언어이냐 고급(High-Level)언어냐로 나눌 수 있는데요.

저급언어와 고급언어가 말그대로 질이 낮은 언어와 질이 높은 언어로 나뉘는 것이 아닙니다.

컴퓨터가 이해하기 쉬운 언어인가, 사람이 이해하기 쉬운 언어인가로 구분되는 것으로 저급언어일수록 전자에 가깝고, 고급언어일수록 후자에 가까운 것입니다.

저급언어와 고급언어는 각각의 장단점이 있기때문에 고급언어가 무조건적으로 저급언어보다 좋은 것이 아닌 단순한

분류에 가깝다고 생각하는 것이 좋습니다.

 

2. C언어로 작성된 프로그램은 이식성이 좋습니다.

앞선 1번에 서술했던 내용에 연장선에 있는 장점인데요.

앞서말했듯 어셈블리어와 같은 저급언어들은 기계 친화적이기 때문에 하드웨어 의존도가 높아 CPU환경이 바뀌면 프로그램이 작동하지않습니다. 예를 들어 인텔 기반에서 저급언어로 작성된 프로그램은 AMD 기반의 시스템에서는 작동이 되지않습니다. 이를 다른 말로 '이식성이 낮다'라고 말을 합니다.

반대로 C언어는 고급언어이기 때문에 하드웨어 의존도가 낮기때문에 CPU 종류, 운영체제 등에 영향을 받지않고 실행이 가능합니다.

때문에 C언어는 이식성이 좋다고 말할 수 있습니다.

3. C언어는 절차지향적이다.

여기서 절차지향이란 말은 '정해진 순서의 실행흐름'을 중요시한다는 것입니다.

쉽게 말해 '순서'를 중요시 하는 언어라는 것입니다.

일반적으로 사람들이 생각하고 사고하는 방식과 유사합니다.

때문에 C언어를 공부하다보면 객체지향의 특성을 가지는 다른 언어들보다 더 친숙할 수 있습니다.

 

4. C언어로 구현된 프로그램은 성능이 좋다.

이 부분은 개발자가 어떤 코드로 어떻게 만드느냐에 따라 달라질 수 있지만 일반적으로 다른 프로그래밍 언어에 비해서 C는 사용하는 메모리의 양이 적습니다.

또 앞서 3번에서 말한 절차지향적인 특성이 컴퓨터가 처리하는 방식과 같아 속도가 빠릅니다.

'C' 카테고리의 다른 글

[C] 1. Hello World 출력하기  (0) 2022.01.17

댓글