반응형

안녕하세요.  

 

프로그래밍 관련 첫 포스팅 올려봐요.

 

C언어라면 프로그래머라면 누구든지 거쳐가야하는 기초 중의 기초인 컴퓨터 언어입니다.

 

이 C언어가 없었다면 이렇게 컴퓨터로 편리하게 무엇이든 할수 있는 날은 아마 오지 않았으리라

생각이 듭니다.

 

그렇다면 C언어 강의 들어가기 전에 간단히 역사에 대해 짚고 넘어갈까 합니다.

 

 


 

 

C언어는 1970년대 초반, UNIX 운영체제를 위해서 AT&T의 벨 연구소에서 일하던

 

데니스 리치(Dennis Richie)에 의하여 처음 만들어 졌습니다.

 

데니스 리치는 C언어 제작의 공로로 Turing 상을 수상하기도 했습니다.

 

Turing상 이라는건 간단히 말해서 컴퓨터 쪽의 노벨상이라고 생각하시면 편합니다. 

 

데니스 리치는 2011년에 세상을 타계 하였는데, 스티브 잡스도 2011년에 세상을 떠났죠.

 

그런데 사람들이 데니스 리치의 죽음에 대해서는 알아주는 이가 많이 없어서 좀 개인적으로

 

안타깝다는 생각이 들었습니다.

 

지금의 컴퓨터 언어는 거의 C언어를 기반으로 나온 언어들이 많으며

 

현재 유명한 OS 중에서 C언어가 조금이라도 안들어있는 OS는 없다고 보면 됩니다.

 

 



IOS나 안드로이드도 결국 뿌리를 찾아가면 C언어에 도달하게 되죠.

 

이렇듯 기원을 찾아가면 거의 C언어에서 다 시작하기 때문에 C언어는 '컴퓨터공학' 계열 학생이라면 무조건 들어야 하고 당연히 다 알고 있어야 하는 프로그래밍 언어입니다.

 

그렇다면 이런 C언어의 특징은 무엇이 있을까요?

 

1. C언어는 간결하다

 

C언어의 표기법은 간결한것이 특징입니다. 어렵게 풀어쓰는 것이 아닌 규칙에 의한 문단으로 기능을 구현할수 있습니다.

 

2. C언어는 효율적이다.

 

C로 작성 되면 프로그램이 상대적으로 가볍습니다. 그래서 실행속도도 빠르며 메모리도 효과적으로 사용할수 있습니다.

 

C언어는 고급언어이자 저급언어의 특성을 동시에 갖추는 언어입니다.

 

고급언어와 저급언어의 특성은 뒤에 설명하겠습니다.

 

효율성이 어셈블리 언어 수준에 근접합니다.(어셈블리 언어와 대등한 효율성을 갖지는 않습니다.)

 

3. C언어는 이식성이 뛰어나다

 

C언어는 이미 많은 종류의 하드웨어에서 많이 사용되고 있습니다.

 

그래서 어느 하드웨어로도 쉽게 바로 이식이 가능합니다.

 

어떤 CPU에서 C로 개발된 프로그램이 다른 CPU에서도 이식이 충분히 가능합니다.

 

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

 

프로그래밍 언어는 크게 '절차지향적 언어'와 '객체지향적 언어' 이렇게 두 부류로 나뉘기도 합니다.

 

그중에 C언어는 절차지향적인 언어입니다.

 

절차지향적이라는것은 절차에 따라서 프로그램이 실행되는 것으로 정해진 순서가 있어야 합니다.

 

그렇기 때문에 객체지향적 언어보다는 배우기가 다소 까다롭다는 단점이 있긴 하지만

 

C언어가 워낙에 자주 쓰이다보니 익숙함으로 인해 난이도가 점점 낮아지긴 합니다.

 

5. C언어에 익숙해지면 다른언어를 배우기가 상대적으로 쉬워진다

 

어쩌면 당연합니다. C++, C#, JAVA 등 거의 대부분의 프로그래밍 언어가 C를 기반으로 둡니다.

 

C를 배우면 규칙이 비슷한 경우가 많아서 배우기에 더 수월합니다.

 

마치 영어를 마스터 하면 유럽의 언어들을 배우기가 상대적으로 수월하다는 점과 비슷합니다.

 

 

 

 

 

 

 

 

 

그 외에 특징들이 많습니다만 C언어의 가장 큰 특징은 이정도입니다.

 

그리고 고급언어(High Level Language)와 저급언어(Low Level Language)의 차이점에 대해

서술해보도록 하겠습니다.

 

가장 먼저 유념해주셔야 할것은 고급언어와 저급언어는 번역으로 인해서 생긴 말이지

고급언어라고 저급언어보다 더 좋은것은 아닙니다.

 

고급언어와 저급언어는 각각 장단점이 있습니다.

 

고급언어 - 사람이 이해하기 쉬운 프로그래밍 언어

 

저급언어 - 컴퓨터가 이해하기 쉬운 언어

 

가장 두드러지는 특징은 위와 같습니다.

 

 

컴퓨터 구조는 이진법으로 되어있기 때문에 0과 1만 알아 먹을수 있습니다.

 

그렇지만 이것을 사람이 보면 눈알이 빠지죠;;

 

0과 1의 형태로 이루어진 이진수 형태의 언어를 우리는 기계어(machine language)라고 부릅니다.

 

기계어로 프로그램을 짤 경우 하드웨어의 성능을 가장 효율적으로 뽑아낼수 있다는 장점이 있습니다만

사람한테는 너무너무 불편한 언어이기 때문에 사람이 좀더 편리하고 쉽게 지시를 내리기 위해서

만들어지는 언어들이 고급언어라고 불립니다.

 

고급언어에는 C를 포함한 JAVA, C# 등이 있구요.

 

저급언어에는 가장 대표적으로 기계어와 어셈블리어가 있습니다.

 

고급언어는 사람이 알아먹기 쉽지만 컴퓨터가 알아먹을수가 없는 언어이기 때문에 중간에

 

컴파일러(Complier)라는 사람으로 따지면 일종의 번역가역할을 하는 프로그램이 고급언어를

기계어로 바꾸어 줍니다.

 

이렇듯 저급언어와 고급언어에는 각각 장단점이 존재하기 때문에

 

프로그래머 분들 중에 저급언어와 고급언어를 적절히 혼합하여 사용하시는 분들도 있습니다.

 

포스팅은 이것으로 마치겠구요.

 

다음에는 본격적으로 C언어를 이용하여 프로그램을 제작해보겠습니다 !

 

 

 

 

+ Recent posts