명령해석기

반응형

1.5. 명령해석기

'파이썬 시작하기' 강좌에서부터 정체를 알 수 없는 '이상한 프로그램'이라는 것을 써왔는데, 아직 설명을 안 해 드려서 많이 궁금하셨죠? 오늘 드디어 이 이상한 프로그램에 대해 알려드리려고 합니다.

컴퓨터가 알아듣는 말

엄청난 양의 정보들을 잘도 주무르는 이 컴퓨터란 녀석은 대체 어떻게 작동하는 걸까요? 컴퓨터는 전기가 통하는지 안 통하는지의 딱 두 가지 정보를 가지고 정보를 처리한답니다. 우리가 저녁이 되면 전깃불을 켜고, 잠잘 땐 끄는 것과 마찬가지입니다. 저는 불을 켜고도 잘 자지만요.^^ 이렇게 간단한 정보를 갖고 무엇을 할 수 있을까 싶지만, 스위치가 두 개 있으면 네 가지 정보를 표현할 수 있다는 걸 생각해보세요.

큰 방 불 켜고, 작은 방 불 꺼.
큰 방 불 켜고, 작은 방도 불 켜.
큰 방 불 끄고, 작은 방 불 켜.
큰 방 불 끄고, 작은 방도 불 꺼.

스위치가 10개 있으면 몇 가지 정보를 표현할 수 있을까요? 스위치가 두 개 있으면 2의 제곱인 4 가지 정보를 표현 할 수 있었구요, 스위치가 10개 있으면 2의 10 제곱, 그러니까 1024가지 정보를 표현할 수 있답니다.

컴퓨터에선 불이 켜지고 꺼진 것을 1과 0으로 나타내구요, 스위치 하나를 비트(bit)라고 말하지요. 그래서 컴퓨터에게 명령을 내리려면 컴퓨터가 알아들을 수 있도록 비트로 말을 해야합니다.

이럴 때 사용되는 프로그래밍 언어를 저급 언어라고 하지요. 저급 언어로는 기계어와 어셈블리어가 있습니다.

그런데 사람이 1과 0으로 프로그래밍하는 것이 가능할까요? "컴퓨터야, 10111101한 다음에 01001011하고, 만약에 10011010이면 10101100하고 그렇지 않으면 11010011 해다오, 알았징??" 얼마나 짜증나겠습니까?

저는 옛날에 기계어를 딱 한 번 써봤답니다. 프로그래밍 잡지에서 아기공룡 둘리를 오락으로 만들어서 놀라고 베이직이라는 언어와 기계어 코드를 실어뒀더군요. 요즘처럼 오락 프로그램을 CD로 마구 주던 시절이 아닙니다. 코드를 한참 치다가 넘 지루해서 실행을 시켜봤더니 컴퓨터가 바로 죽더군요… 그런 어려움이 있기 때문에 사람이 프로그램 작성을 쉽게 할 수 있도록, 방금 말씀드린 베이직이나, 요즘 많이 쓰는 자바, C/C++ 등등의 고급 언어가 생겨난 거랍니다.

그런데, 이런 고급 언어로 프로그램을 짠 다음엔 컴퓨터가 알아들을 수 있게 번역을 해 줄 필요가 있겠지요? 그렇게 번역을 하는 방법에도 두 종류가 있답니다. (예, 압니다. 저도 종류 많은 거 딱 질색입니다…^^;)

사람이 한 마디 할 때마다 동시통역해주는 방식을 인터프리트(interpret) 방식이라고 하구요, 사람이 말하는 것을 처음부터 끝까지 듣고 나서 한꺼번에 바꿔주는 것을 컴파일(compile) 방식이라고 하지요.

우리가 배우는 파이썬은 어떤 방식일까요? 물론 인터프리트 방식이겠죠? 우리의 명령을 한 줄 씩 해석해서 일을 하니까요. 바로 이 '이상한 프로그램'도 파이썬으로 작성된 프로그램을 컴퓨터에게 번역해주는 인터프리터(interpreter)랍니다.

그리 대단치도 않은 것을 너무 장황하게 설명드렸나요?

인터프리터를 대화식으로 사용하기

지금까지 우리가 사용했던, 인터프리터에 명령을 한 줄 씩 입력하면 인터프리터가 그때그때 답을 돌려주는 방법을 두고 '대화식으로 인터프리터를 사용한다'고 한답니다. 당연한 말이지만 대화식은 아주 쉽고 간단한 사용방법입니다. 우리도 파이썬에 대해 아무 것도 모르는 상태에서 당장 인터프리터를 계산기처럼 쓰기 시작할 수 있었지요.

대화식 사용방법은 그냥 쉽기만 한 것이 아니라, 파이썬의 문법을 배우고 연습해보거나, 복잡한 프로그램을 작성하기 위해 작은 부분을 테스트 할 때도 아주 편리하답니다.

인터프리터로 프로그램 파일을 실행하기

대화식 사용방법이 여러모로 편리하기는 하지만, 실제로 프로그램을 작성할 때는 역시 프로그램을 파일 형태로 만들어 두었다가 사용해야 겠죠? 파이썬에서는 프로그램 파일을 어떻게 만드는 걸까요?

여러분이 즐겨쓰는 텍스트 에디터(메모장 같은 프로그램)를 실행시켜서 아래의 예제를 입력해보세요.

# -*- coding: cp949 -*-

print('직각삼각형 그리기\n')
d = float(raw_input('변의 길이 : '))

for i in range(int(d)+1):
    print('* ' * i)

area = float((d ** 2) / 2)
print('넓이 : %s' % area)

raw_input()

처음보는 것들이 많지만 나중에 배울 것들이니 겁먹지 마시고 그냥 똑같이 쓰시면 됩니다. 주의하실 점은, 반드시 들여쓰기를 지켜주셔야 한다는 것입니다. 들여쓰기를 하실 땐 공백 네 칸 씩 들여쓰기하시면 됩니다.

그 다음엔 파이썬이 설치된 폴더 아래에 새로 폴더를 하나 만들어서 저장시켜주세요. 파이썬 프로그램 파일에는 py라는 확장자를 붙여주면 됩니다. 저는 D:\Python27 아래에 exam 폴더를 만들어서 triangle.py로 저장했지요. 끝이예요~ 별 것 아니죠? 보통의 텍스트 파일을 만드는 방법과 똑같습니다.

이제 이 프로그램을 돌려볼까요? 먼저 명령 프롬프트를 띄워보세요. Windows의 버전에 따라 조금씩 다르기는 하지만 아래와 비슷한 창이 뜰 거예요.

명령어 인터페이스가 사용하기 번거롭기는 해도 좀 더 자세한 조작을 하기에 적합하지요. 다른 언어로 프로그램을 작성할 때도 종종 쓰이니까 이번 기회에 익혀두자구요.

지금 제 컴퓨터의 명령 프롬프트 창에는 C:\Users\Yong Choi>라는 프롬프트가 떴는데, 이것은

"여기는 C:\Users\Yong Choi입니다.명령을 내려주십쇼, 형님!"

이라는 뜻입니다.

그럼 cd 명령으로 파이썬이 설치된 폴더로 이동하세요. 파이썬을 어디에 설치했는지는 dir 명령이나 윈도우 탐색기로 찾아보면 됩니다. 대부분의 경우는 아래와 같이 C:\로 이동했다가 파이썬이 설치된 폴더로 가면 됩니다.

C:\Users\Yong Choi>cd \

C:\>cd Python27

C:\Python27>

만약 현재 위치가 C:\인데 파이썬이 D:\Python27에 설치되어 있다면 D:로 넘어간 다음에 찾아가시면 되지요.

C:\>d:

D:\>cd Python27

D:\Python27>

파이썬이 설치된 폴더를 잘 찾아오셨으면 아래와 같이 명령을 내려주세요.

C:\Python27>python exam/triangle.py

python exam/triangle.py라고 써주면 '파이썬아, exam 폴더에 있는 triangle.py를 실행시키자꾸나'라는 뜻이랍니다. 그러면 파이썬 인터프리터가 이 프로그램 전체를 번역하면서 실행시켜 줄 거예요.

직각삼각형 그리기

변의 길이 : 4

*
* *
* * *
* * * *
넓이 :  8.0

만약 여기에서 그냥 python이라고만 입력하면 어디서 많이 본 것이 나타날 겁니다. 바로 대화식 인터프리터죠.

프로그램 파일의 실행이 잘 안 되는 분은 예제와 자신이 직접 짠 프로그램을 잘 비교해서 잘못된 부분이 있는지 잘 찾아보세요. 연습할 때 실수하는 부분이 많을수록 공부에 더 많은 도움이 된답니다. 그래도 잘 안되시는 분은 게시판에서 triangle.py를 검색해보시구요.

자, 이렇게 해서 인터프리터를 사용해서 프로그램 파일을 실행시키는 방법도 알아보았습니다. 마지막으로 알려드릴 것은, 이 파일을 그냥 더블클릭해도 실행된다는 사실… 하지만 더블 클릭이 항상 편한 방법이 아니라는 것은 금방 알게 되실 거예요.