프로그래밍과의 만남

다크소개 2013. 1. 28. 01:27

제가 컴퓨터를 처음 접한 것은 20살 때로 요즘에 비하면 상당히 늦은 편입니다. 요즘에야 원시인 취급 당하겠지만 당시에는 저같은 사람이 꽤 있었습니다 ^^. 우연히 친구가 컴퓨터에 플로피 디스켓을 넣고 타다닥 자판을 두드리는 것을 보고는 '이게 머야, 이런게 있었어?' 하며 멍~ 했던 기억이 아직도 생생합니다.


컴퓨터를 처음 접한 느낌이 신기함이었다면 그 안에서 실행되는 소프트웨어들이 누군가가 만든 것이며 나도 만들 수 있다는 것을 깨달은 것은 하나의 충격이었습니다. 어느날 선배 집에 놀러갔는데 아는 사람이 짠 거라며 제게 콘솔 형태로 구현된 지뢰찾기 게임을 보여주었습니다. 그 때 컴퓨터 안에서 돌아가는 프로그램도 사람이 짠 것이라는 것을 처음 깨달았습니다. 생각해보면 당연한 건데 바보라고 할지 모르겠지만 어쨌든 그 전까지는 어디 하늘에서 주어져 있는 것인줄로만 알았습니다. 아니 좀더 정확하게는 그런 생각 자체를 한 적이 없다는 것이 맞겠습니다. 당시 아는 사람이 짰다는 그 프로그램을 바라보면서 그저 '... 대단하다' 하며 내심 감탄만 했던 것 같습니다.


그 뒤로 서점에 가서 당시에 유행하던 Turbo C 책을 하나 사서는 C 프로그래밍을 독학하기 시작했습니다. 나도 게임을 하나 만들어 봐야겠다 생각하면서 당시 유행하던 테트리스라는 게임을 구현하는 것을 목표로 프로그래밍을 공부해 나갔습니다.


당시 책에 나와있는 예제 프로그램들을 일일히 타이핑해서 실행시켜보면서 책을 처음부터 끝까지 한번 정독을 했던 것 같습니다. 그런데, 프로그래밍 책을 한 권을 보긴 했는데 막상 스스로 프로그램을 짜려고 해 보니 처음에는 막막하기 그지없었습니다. 도대체 어디에서 어떻게 시작해야 하는지.. 그래도 마음을 다잡고 먼저 2~3일간 전체적인 프로그램 구조 및 알고리즘을 설계한 후, 이후에는 계속 C 책을 뒤적여가면서 어찌어찌 총 10일에 걸쳐서 두문불출하며 테트리스 프로그램을 완성하였습니다. 


당시 구현한 테트리스 게임은 나름 화려한 그래픽 처리와, 시간 경과에 따른 블럭들의 실시간 움직임 처리, 키보드를 통한 비동기적 사용자 입력 처리, 블록들의 회전, 이동 및 상호간섭 처리, 전체적인 게임 시스템의 상태 관리, 점수 계산 및 기록갱신을 위한 파일 입출력 처리 등 전반적인 프로그래밍 요소가 모두 포함되어 있다고 볼 수 있습니다. 사실 테트리스는 프로그래밍에 대해 아무런 감도 없는 초보가 책 한권 읽고 무작정 구현하기는 무리가 있다고 볼 수 있습니다. 하지만 꼭 테트리스는 아니더라도 어느 정도 규모가 있는 프로그램을 스스로 설계하고 완성해 보는 것은 좋은 경험이 될 것 같습니다. 제 경우에는 테트리스를 구현하고 나서 전반적인 프로그램에 대한 감 및 프로그래밍에 대한 틀이 잡혔다고 볼 수 있습니다. 그 이후로는 프로그램을 짜는 것이 그리 막막하지 않았고 어떤 프로그램도 짤 수 있겠다는 자신감이 생겼던 것 같습니다.


당시 구현했던 테트리스 게임은 지금은 어디로 갔는지 찾을 수 없네요.

상당히 아쉽습니다...


☞ 최근 아이들을 위해 테트리스를 새로 구현했습니다: [개발한 것들] - 테트리스 (Tetris)



by 다크 프로그래머

'다크소개' 카테고리의 다른 글

다크의 자유게시판  (225) 2013.04.25
프로필  (34) 2013.01.28
블로그 개설 목적 및 참고 사항  (38) 2013.01.28