현재 수강하고 있는 David Malan 교수의 하버드 대학교 CS50 강의는 C언어를 기반으로 하여 진행된다. 

 

처음 5강정도는 컴퓨터의 원리부터 어떻게 컴퓨터가 언어를 받아들이고 출력하는지 등의 이론을 배우고 MIT에서 개발한 스크래치를 통해 코딩이 어떻게 적용되는지를 배웠다면 6강부터는 직접 C언어를 타이핑하며 실습과정에 들어간다. 

 

몇몇 강의를 들었지만 항상 코딩의 시작은 Hello, world로 시작하나보다. 파이썬 강의때도 그랬지만 이 CS50강의 역시 가장 먼저 시작하는 것은 Hello, world라는 글자를 출력하는 것이었다. 그런데 여기서부터 C언어가 왜 어렵고 복잡하다고 하는지 왜 파이썬이 배우기 쉬운 언어라고 하는 것이 체감됐다. 

 

hello world라는 글을 출력하기 위해 파이썬에서는 아래와 같이 작성한다. 매우 직관적이며 군더더기가 없다. 

print("hello, world")

 

C언어에서는 hello world라는 글을 출력하기 위해서는 아래와 같이 작성한다.

#include <stdio.h>

int main(void)
{
	printf("hello, world");
}

?????????????????????????

 

이 첫 코드에서부터 약간 멘붕이 왔다. 저 코드에서 중괄호, 세미콜론 등을 빼먹는다면 에러가 나서 출력되지 않는다. 더군다나 hello, world를 출력하기 위해서 파이썬에서는 그냥 실행버튼을 누르기만 하면 출력이 되는 것을 C언어에서는 저 코드 (소스코드)를 컴퓨터가 읽을 수 있는 이진법 숫자 (머신코드)로 변경하는 컴파일링을 한 후 출력이 가능했다. 이 부분은 대학강의에서 기초적인 이해를 위해 일부러 넣은것 같은 느낌이 들기도 하지만 어쨌든 매우 복잡한 것은 사실이다.

 

그런데 이상한 것은 코드는 분명히 더 복잡하고 해괴망측하지만 컴퓨터 동작 원리를 아는데는 분명 더 잘 이해가 되는것 같다. C언어는 컴퓨터 언어와 가까운 낮은 수준의 언어 (low level language)이며 변환과정을 단축시킬 수 있어 메모리는 적게 차지하고 신속한 명령수행이 가능하다고 한다. 그래서 나온지 50년정도 된 이 불편한 언어를 아직까지 일부분야에서는 사용하고 있는 것 같다. 물론 많은 장점을 가진 언어이나 나는 컴공 기초를 이해하는 정도까지하고 다른 언어로 갈아타려고 한다 (씨익)   

+ Recent posts