엄청난 양의 정보들을 잘도 주무르는 이 컴퓨터란 녀석은 대체 어떻게 작동하는 걸까요? 컴퓨터는 전기가 통하는지 안 통하는지의 딱 두 가지 정보를 가지고 정보를 처리한답니다. 우리가 저녁이 되면 전깃불을 켜고, 잠잘 땐 끄는 것과 마찬가지입니다. 이렇게 간단한 정보를 갖고 무엇을 할 수 있을까 싶지만, 스위치가 두 개 있으면 네 가지 정보를 표현할 수 있다는 걸 생각해 보세요.
큰 방 불 켜고, 작은 방 불 꺼.
큰 방 불 켜고, 작은 방도 불 켜.
큰 방 불 끄고, 작은 방 불 켜.
큰 방 불 끄고, 작은 방도 불 꺼.
스위치가 10개 있으면 몇 가지 정보를 표현할 수 있을까요? 스위치가 두 개 있으면 2의 제곱인 4 가지 정보를 표현할 수 있었고요, 스위치가 10개 있으면 2의 10 제곱, 그러니까 1024가지 정보를 표현할 수 있답니다.
컴퓨터에선 불이 켜지고 꺼진 것을 1과 0으로 나타내고요, 스위치 하나에 해당하는 것을 비트(bit)라고 말하지요. 컴퓨터에 일을 시키려면 컴퓨터가 알아들을 수 있는 말로 지시(instruction)를 내려야 합니다.
이럴 때 쓰이는 프로그래밍 언어를 저급 언어(low-level language)라고 합니다. 저급 언어로는 기계어와 어셈블리어가 있습니다.
그런데 사람이 1과 0으로 프로그래밍하는 것이 가능할까요?
“컴퓨터야, 10111101한 다음에 01001011하고, 만약에 10011010이면 10101100하고 그렇지 않으면 11010011 해다오, 알았지??”
얼마나 짜증 나겠습니까? 그런 어려움이 있기 때문에 사람이 프로그램 작성을 쉽게 할 수 있도록 요즘 많이 쓰는 C/C++, 파이썬, 자바 같은 고급 언어(high-level language)가 생겨났답니다.
인터프리터와 컴파일러
그런데 이런 고급 언어로 프로그램을 짠 다음엔 컴퓨터가 알아들을 수 있게 번역을 해 줄 필요가 있겠죠? 그렇게 번역을 하는 방법에도 두 종류가 있답니다. (예, 압니다. 저도 종류 많은 거 딱 질색입니다…^^;)
한마디 할 때마다 동시통역해주는 방식을 인터프리트(interpret) 방식이라고 하고, 말하는 것을 처음부터 끝까지 듣고 나서 한꺼번에 바꿔주는 것을 컴파일(compile) 방식이라고 합니다.
우리가 배우는 파이썬은 어떤 방식일까요? 파이썬은 우리의 명령을 한 줄씩 해석해서 일을 하는 인터프리트 방식입니다. 사람이 파이썬 언어로 작성한 프로그램을 컴퓨터에 번역해주는 파이썬 셸이 바로 인터프리터(interpreter)랍니다.