C공부 [0. C의 기본 원리]
💻C의 간단한 역사
대학교 1학년 첫 수업시간때 C언어의 강의를 시작하기 앞서 항상 C언어의 탄생 배경과 동작원리, 왜 배워야하는지등을 어떤 교수님은 한수업 자체를 사용하기도 한다.
그때의 나는 뭐가 중요한건지, 실무적인 부분만 배우면 되는 거 아닌가? 이런 생각이 자리 잡고 있었는데 다시금 C언어를 공부하기 앞서 모든언어의 근간을 두는 언어라는 점과 방대하고 엄청난 완성된 언어를 내가 공부하겠다! 라는 마음을 먹게 해주는 것 같다.
많은 변화가 있었지만 또한, 앞으로도 변하겠지만 어떠한 원리로 동작하고 이것이 왜 탄생했는지는 정확하게 알고 있어야 할것 같다.
파이썬과 같이 점점 간편해지고 간단한 언어들이 쏟아지고 있는데 왜 구시대적 언어를 배우느냐고 묻는다면 역시 '컴퓨팅적 사고'와 기본적인 코딩실력, C언어나 C++언어를 어느정도 선까지 배운다면 다른언어 역시 배우기 쉽기 때문이다.
하지만 그렇다고 해서 C의 모든 부분을 배운다기 보다 앞서 말했듯이 필요한 부분을 위주로 학습할것이기 때문에 너무 방대하게 다루지 않을 예정이다.
C는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어이다. 켄 톰슨은 BCPL언어를 필요에 맞추어 개조해서 “B”언어(언어를 개발한 벨 연구소의 B를 따서)라 명명했고, 데니스 리치가 이것을 개선하여 C 언어가 탄생했다. 유닉스 시스템의 바탕 프로그램은 모두 C로 작성되었고, 수많은 운영 체제의 커널 또한 C로 만들어졌다. 오늘날 많이 쓰이는 C++는 C에서 객체 지향형이다.
-위키백과
정말 많이 읽었던 글인데 다시 읽어 보니 새로운 기분이다.
위의 말처럼 프로그래밍언어의 근간이 되는 언어로 지금 사용되는 거의 모든 운영체제의 커널들이 C로 구성되어 있다고 한다.
💻 C 기본 원리
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
가장 기초가 되는 예제
**#include **
여기서 #include는 전처리기라고 불린다. 말 그대로 전에 처리하는 것으로 컴파일전에 처리하는 명령문입니다.
컴파일은 아래서 따로 설명하기로 하고 말 그대로 컴파일 전에 미리 실행하는 것인데 흔히 미리 만들어 놓은 헤더파일을 include합니다.
여기서 stdio.h는 standard input output의 약어이며 표준 입출력입니다.
간단하게 생각하면 글씨를 출력하거나 받기 위해 include해야하는 것입니다.
컴파일
위에서 말한 컴파일은 컴파일러가 컴파일한다고 흔히 말하는데 컴파일러에도 여러 종류가 있습니다.
컴파일은 소스코드를 기계가 알아 들을 수 있도록 기계어로 번역하는 과정을 의미하는데 우리가 작성한 코드는 컴퓨터가 바로 이해하지 못하기 때문에 이 컴파일 과정을 거쳐야합니다.
여기서 발생하는 오류가 바로 컴파일 에러
이며 실행가능한 프로그램을 반환하지 못합니다. 컴파일 에러는 소스코드에 문법적인 오류가 있어서 발생하며 만약 컴파일 에러가 발생하지 않고 실행가능한 파일로 만들어 졌다고 하더라도 실행도중에 오류가 발생하는 것을 런타임 에러
라고 합니다.
int main
이 부분은 main이라는 함수를 정의하는 부분이며 함수는 여러 명령의 묶음정도로 생각하면 됩니다.
여기서 main은 아주 중요한 역할인데 프로그램의 시작과 끝을 알려주는 아주 특별한 함수입니다. 즉, main함수가 실행되면 프로그램이 시작되고 main이 끝나면 프로그램이 종료합니다.
printf(“Hello World!”);
printf는 위에서 include한 표준입출력의 헤더파일에 들어있는 함수로 괄호안에 있는 것을 출력시켜라 정도로 해석가능합니다. 여기서 중요한 점은 함수를 ;세미콜론으로 C언어에선 한명령의 끝을 세미콜론으로 마무리 해줘야 합니다.
마치며
이렇게 정말 간단하게 C의 원리, 역사정도를 알아봤는데 이미 다 알고 있다고 생각했지만 약간씩 틀린부분이 있어서 도움이 되었습니다.
이후 작성하는 포스팅에서는 저가 부족하다고 생각되는 부분은 따로 포스팅하며 진행하겠습니다.
https://www.youtube.com/watch?v=q6fPjQAzll8 - C언어의 전체적인 강의내용을 담고있습니다.
두들낙서의C/C++한꺼번에 배우기 - 중점으로 학습할 책입니다.
댓글남기기