본문 바로가기

C-programing/C언어 기초

[C언어기초]C언어란? C언어 배우는 이유

 

 

공대생으로 처음 입학하고, C언어 수업을 들었을 때다. 1학년 새내기들 C언어 담당하셨던 교수님이 계셨었는데, C언어 관련 서적도 내시고 수업이 쉽고 재밌어서, 우리 학교에서 꽤 유명한 교수님이셨다. 그 교수님이 버릇처럼 하시던 말씀이 있었다.

 

"C언어 C++, VISUAL C++만 할 줄 알면 대기업에서 모셔간다"

 

이런 말씀 자주하셨다. 솔직히 지금 생각하면, 좀 틀린 말인 것 같다. 하지만, 분명 공대생이라면 이수해야 할 필수 과목들인 것은 의심할 여지가 없다. 이 말씀에 혼자 삘 받아서(?) C언어 관련 성적은 눈에 쌍심지 켜고 관리를 했었던 기억이 있다.

 

오늘, 내가 포스팅 하는 것은 1학년때, 수업을 따라가면서 혼자 독학도 했었던 C언어에 대한 기초적인 얘기를 하기 위해서다. 왜 이런 얘기를 하느냐면, 누구나 C언어를 배울 때 초기에 느끼는 막연한 불안함을 알기 때문이다.

과연 C언어를 배우고 나서 내가 얻는게 무엇일까? 하는 불안감과, 이거 배우면서도 도통 어떻게 응용해야 하는 건지 알 수 없는 막연한 불안감까지. 분명, C언어를 배우는 사람들은 이런 불안감을 안고 있을 수 밖에 없다. 다른 과목에서는 느낄 수 없는, 쉬운 것 같은데 파고 들면 파고들수록 무엇을 더 해야하는지 알 수 없는 것 말이다. C언어의 원리를 알고, 컴퓨터의 구조에 대해 알게 되면, 어느정도 이 불안감이 해소될 것이다. 이를 위해, 우선 알아야 할 것은 C언어가 과연 무엇인가? 하는 아주 기본적인 정의를 아는데서부터 시작한다.

 

 

 

 

>컴퓨터의 구조?

 

-하드웨어와 소프트웨어, 여기서 소프트웨어는 둘로 나뉜다. 시스템소프트웨어와 응용스프트웨어다.

-하드웨어는 전자장치다. 중앙처리장치(CPU), 기억장치, 입출력(마이크, 모니터, 스피커 등), 연산제어회로 등이 있다

-시스템소프트웨어는 윈도우와 컴파일러(인간의 언어를 기계어로 대체) 등, 기본적으로 필요한 소프트웨어이다.

-응용소프트웨어는 인간이 실제 사용, 처리를 하여 게임, 수칙연산 등 여러 기능을 수행하는 소프트웨어이다.

-C 프로그래밍을 하여 만드는 것이 응용프로그램이다.

 

 

C언어가 만드는 것이 응용프로그램이다. 즉, C언어를 프로그래밍하여 게임을 만들고, 연산기능을 수행하도록 할 수 있다. 여기서, 하드웨어와 소프트웨어가 딱 구분된다고는 할 수 없다. C언어를 프로그래밍하여 응용소프트웨어를 만들었을 때, 입력된 정보를 처리하여 다시 출력을 하는 과정을 거쳐야 하기 때문에 하드웨어에서 소프트웨어 다시 하드웨어로, 하나처럼 움직이게 된다.

 

 

> C언어의 프로그래밍 과정.

 

-인간의 언어로 C언어 코드 작성

-컴파일러가 C언어 코드를 2진 8진 16진으로 바꾸어 메모리에 저장

(컴파일러는, 인간의 언어를 컴퓨터언어로 바꾸는 역할한다.)

-저장된 것이 CPU(중앙처리장치)로 전달

-CPU에서 처리

-출력 장치(모니터, 스피커 등)로 출력

 

CPU는 중앙처리장치로, 컴퓨터의 전반적인 성능을 좌우하는 매우 중요한 장치이다. 풀어서 쓰면, Central Processing Unit으로 컴퓨터의 정중앙에서 모든 데이터를 처리한다는 의미이다.

 

 

>C언어를 이용하는 이유?

 

-초기 언어는 해당 컴퓨터에 종속적인 성향을 띄었다. 그 때문에, 똑같은 기능의 프로그램을 다른 컴퓨터로 이식할 수가 없었다. 이를 해결하기 위해 1870년에 AT&T 사의 켄 톰슨(Ken Thomson)이 B언어를 개발했고, B언어의 성능을 개선하기 위해1972년에 데니스리치(Dennis Ritchie) 개발한 것이 C언어이다. 즉, C언어는 이식성이 좋다.

-C언어는 모든 언어의 기본이 된다. 언어는 굉장히 많다. C언어, JAVA, C++, VISUAL C++등 이것들은 C언어를 배워두면 매우 편리하게 배울 수 있다.

-하드웨어를 제어할 수 있다. 인공지능로봇 제어가능.

 

한마디로, C언어는 기계를 움직이게 하거나, 기능을 수행하게 하기 위해서 기본적으로 필요한 언어라는 것이다.

 

 

C언어를 배우면서 항상 했던 생각이 '과연 내가 이거 다 배우고 나서 응용할 수 있을까?' '이거 도대체 어디다 쓰는 거고, 맥락이 이해가 안돼' 였다. C언어가 실행되는 일련의 과정을 전부 생략하고 문법위주로 공부를 하다보면, 그 딜레마에 빠져 스스로 지치게 되는 것 같다. 이런 일이 없게 하기 위해서, 가장 먼저 기초적인 맥락을 이해하고 시작해야 한다.