나의 프로그래밍 공부법 - 에피소드1:나의 베이직 프로그래밍 공부법

2012. 11. 4. 16:53기타/나의 프로그래밍 공부법



<에피소드1 - 나의 베이직 프로그래밍 공부법>


필자가 Apple //+로 베이직을 배운 것은 초등학교 4학년 때였다. 당시에는 알파벳만 겨우 알던 나이였는데, 베이직 명령어와 DOS 명령어를 달달 외우면서 프로그래밍을 시작했다. 예를 들어 MS-DOS에서의 “dir”이나, UNIX에서의 “ls” 명령어와 같이 8비트 Apple 컴퓨터에서 사용하는 DOS에도 “catalog”라는 명령이 있었는데, 그것을 필자는 무슨 뜻인지도 모르고 “씨-에이--에이---지”라고 외워서 쓰곤 했다. 그것이 “카탈로그”라는 단어라는 것을 알게 된 것은 한참이 지나서이다.


그럼에도 불구하고 필자가 나름 프로그래밍이라는 것을 할 수 있었던 것은, 반복 학습을 통해서 언어나 명령어의 기능을 몸으로 익혔기 때문이다. 어린 시절의 필자는 똑같은 소스를 수도 없이 반복 입력하면서 구동 로직을 잘 몰라도 어떠한 결과를 얻기 위해서 어떻게 코드를 작성하면 되는지를 알고 있었다. 친구들과 누가 빨리 소스 코드를 타이핑해서 결과를 출력하는지를 시합하기도 하였고, 컴퓨터 잡지나 컴퓨터 서적에 수록된 소스 코드를 따라 입력하면서 새로운 로직이나 테크닉에 대해서 배우기도 했다. 이 모든 것은 많은 시간을 할애하면서 그것들을 익히기 위해 꾸준히 노력을 한 것 뿐이었다.


 

[그림 1-1] 필자가 초등학교, 중학교, 고등학교 때까지 구독했던 컴퓨터 잡지인 “컴퓨터학습”과 “학생과컴퓨터”


여전히 필자가 가지고 있는 1980년대에 출간된 “컴퓨터학습”이나 “학생과컴퓨터”라는 컴퓨터 잡지들에는 항상 여러 가지 참고할 만한 소스들이 수록되어 있었다. 재미있어 보이는 게임과 같은 프로그램의 소스는 엄청나게 길어서 그것을 입력하는 것만 해도 반나절이 걸리기도 했다. 한번은 효성에서 나온 APPLE //+ 호환 기종을 가지고 있던 친구 집에 놀러 가서, 하루 종일 둘이서 번갈아 가면서 입력을 하고는 몇 번 해보지도 못하고 집으로 되돌아 가야 했었던 적이 있었다. 당시에는 플로피 디스크 드라이브 조차 귀한 시절이라 열심히 입력한 코드는 컴퓨터 전원을 끄면 모두 날라 가버렸었다.


초등학교 6학년 때, 아버님께서 거금을 들여서 APPLE //+ 호환 기종을 풀 세트로 구입해주셨을 때부터 본격적으로 베이직 프로그래밍을 공부하기 시작할 수 있었다. 세운상가에 갈 때마다 몇 가지의 게임을 복사해와서 즐기는 것도 좋았지만, 무엇보다도 재미있었던 것은 프로그램을 만드는 일이었다. 나이가 어리고 경험도 많지 않았기 때문에 만들고자 했던 것을 끝까지 만들어본 적은 없었지만 간단한 성적 관리 프로그램은 물론 교육용 프로그램, 어드벤쳐 게임, RPG 게임 등등 여러 가지 프로그램을 만들기 위해서 이리저리 고민을 하기도 했었다.


[그림 1-2] 필자가 1986년부터 지금까지 소유하고 있는 ROMAX-2000 (Apple //+ 호환 기종)


볼품은 없었지만, 필자의 첫 번째 프로그램은 “Result Handling”이라는 성적 계산 프로그램이었다. 각 과목의 점수를 일일이 입력하면 그 결과를 화면에 적당히 포매팅하여 출력해주는 것이 프로그램이 가진 기능 전부였었다. 단순한 프로그램이었지만, 여러 가지 버전을 만들면서 다양한 시도를 해보면서 계속 발전 시켜나갔다.


그 다음에는 몇 가지 게임들을 기획하고 구현을 해보았었다. 깊은 인상을 받았던 어드벤처 게임의 영향을 받아서 아마존을 배경으로 하는 텍스트 어드벤처 게임을 만들다가 말거나, “울티마” 시리즈의 아류작(“Sed Tell’s Story”라는 타이틀을 가지고 있었다)을 본격적으로 기획하여 엄청난 단순 노가다 작업을 통해 겉모습을 그럴 듯하게 만들다가 제풀에 지쳐서 그만두기도 했었다. 중요한 것은 이렇게 무언가를 만들기 위해서 구체적인 노력을 계속 했다는 점일 것이다. 덕분에 베이직 언어를 공부하는 것이 일회성으로 끝나지 않고 조금씩 계속 성장할 수 있는 계기를 만들어 갔기 때문이다.


지금도 기억이 나는 것은 대형 서점의 컴퓨터 서적 코너에 있는 외국 서적을 번역하여 출간된 책들을 펴놓고, 연습장에 책에 적혀 있는 소스 코드를 베껴와서 집에서 입력해보기도 했다는 것이다. 그 때 필자에게 프로그래밍은 “일”이 아니라 “놀이”에 가까웠기 때문에 많은 시간을 투자해서 결과를 만들기 위한 시행 착오를 겪어 볼 수 있는 기회를 만들어 준 것 같다.


이렇게 조금씩 쌓이기 시작한 경험을 바탕으로, 필자는 고등학교 1학년 때 비로소 하나의 프로그램을 기획해서 완성할 수 있었다. 그것은 당시에 재미있게 즐겼던 “카멘센디에고”라는 교육 요소가 포함된 게임을 따라서 만든 것으로 “한반도”라는 거창한 이름을 가진 프로그램이었다. 매년 가을에 열리는 축제에서 컴퓨터 동아리 전시회를 열었는데, 그때 출품하기 위해서 여름 방학 내내 열심 만든 프로그램이었다. 고등학교 컴퓨터 동아리 전시회에서 전시하는 프로그램이라면 간단한 퀴즈 게임 스타일의 프로그램이 대부분이었는데, 필자는 그래픽 유틸리티와 라이브러리까지 활용하여 그럴 듯한 게임으로 만들어낼 수 있었다.


대학교 1학년 때에는 GW-BASIC으로 스프레드시트 프로그램인 “큰종이”를 만들었다. 학교 전산실에서 GW-BASIC으로 열심히 코딩을 하면서 만든 프로그램인데, 간단한 표 계산과 그래프 그리기가 가능했다. 이것을 마지막으로 약 10년간 사용하던 베이직 언어를 더 이상 사용하지 않게 되었지만, 필자가 한 사람의 개발자로써 자리매김을 하는데 많은 기여를 했던 프로그래밍 경험이었다. , GW-BASIC으로 만든 “큰종이 1.0”은 필자의 베이직 프로그래밍 시절을 결산하는 의미를 담고 있는 “결정판”이라고 할 수 있다.






[그림 1-3] GW-BASIC으로 만든 “큰종이 1.0”의 실행 화면


학교 수업이 끝나거나 수업 중간 중간에 시간이 나면 학과 전산실에 가서 만들었던 “큰종이 1.0”은 그 해 11월에 개최된 전산학과 소프트웨어 공모전에서 선배들을 제치고 당당하게 대상을 수상하게 만들어 주었다. 어쩌면 이 때부터 공부하기 위해 만든 프로그램으로 공모전에 출품하여 상을 타는 공식을 만들어가기 시작한 것 같다.


필자가 초등학교, 중학교, 그리고 고등학교까지 아마추어 시절 내내 사용했던 “베이직 언어”를 공부했던 방법은, 베이직 언어를 이용하여 내 스스로 만들고 싶었던 게임이나 프로그램을 직접 만들어 보는 방법이었다. 그것이 성공할 때도 있고, 실패할 때도 있었지만 어떠한 목표를 가지고 프로그래밍 언어를 활용하기 위해 고민을 하다 보면 더 빨리 프로그래밍 언어를 배울 수 있었고 실력도 금방 늘 수 있었다는 것을 깨달았다는 사실이 더욱 중요한 교훈이었다.