Public Notebook/Syphon의 코딩모험

코딩모험[2] // 외국인학교 - 이게 코딩... 이구나?

Syphon 2022. 12. 2. 16:24

Syphon의 코딩모험 - 목차


외국인학교를 가고 2011년에 ICT 과목이 처음 생겼다.

하지만 개교한 지 얼마 되지 않았던지라 IT 선생님이 없었다. ICT 수업 시간에는 과학 선생님이 그냥 MS Excel을 하는 둥 마는 둥 가르쳤다. 그래도 이때 엑셀 함수들을 작성하면서, 코딩할 때와 유사한 느낌을 받았던 것 같다. 어떠한 작업을 하는 방법을 단계별로 쪼개서, 컴퓨터에게 설명하는 느낌?

설명하기를 좋아하는 내가 컴퓨터에게 하는 설명에도 재능이 어느정도 있다는 것을 깨닫는 계기였다.

그리고 1년 후에 진짜 IT 선생님이 왔다.

2012-2013년에는 RAM, HDD, CPU와 같은 컴퓨터 부품들의 역할을 배웠고, Linux(Ubuntu 12.04 LTS였다)에서 MIDI 음악편집과 크로마 키 배경치환을 이용한 영상편집 등을 배웠다.

당시 채점받은 과제물인 듯 하다.

Ubuntu를 처음 접한 것도 이때이니, 사실상 코딩을 하기 전에 리눅스와 친해진 셈이다. (학교서 Ubuntu를 써본 이후, 내 맥북에 macOS/Windows/Linux를 동시에 얹는 트리플 부팅을 위한 삽질과 고생이 시작된다.)

아무튼 이렇게 진짜 IT 교육이 시작됐고, 고학년으로 올라감에 따라 Adobe Dreamweaver에서 HTML/CSS로 웹사이트 만들기, MIT App Inventor를 이용한 안드로이드 앱 개발, Visual Basic을 이용한 윈도우 프로그램 개발 등을 진행하게 된다.

Adobe Illustrator에서 직접 그린 GIF, 온갖 애니메이션 효과가 들어가 있다. 2013년경의 작품.

물론 여기서도 이미 흥미있게 잘 따라가고 있었지만, 진짜 변화는 학년이 더 올라가 IGCSE 선택과목으로 Computer Science를 듣게 되면서 시작된다.

Cambridge IGCSE Computer Science는 조금 많이 쉽게 수정된 (중학생을 위한) 컴공 커리큘럼이다.

이에 따라 2014년부터 CPU의 fetch-execute cycle, 논리 게이트, 코딩 등을 배운다.

내 코딩 모국어인 Python을 접하게 된 것은 2015년 초이다. 사실 Visual Basic을 배울 때만 해도 '아 뭐지 이거 재미 없는데'의 상태였는데(GUI 구성을 위한 드래그 & 드랍 노가다 + 입문자에게 이해 불가능한 객체지향), 문법이 간단하고 생각한 대로 표현이 가능한 Python이 모든 것을 바꿔놓았다.

Python으로 작성된 나의 첫 Hello World이다. Python 2 문법이다.


학교에서는 코드카데미라는 온라인 interactive 강의 사이트를 통해 Python을 독학하도록 시켰었는데, 강의는 대충 빠르게 넘기고, 내가 만들고 싶은 프로그램들을 작성하며 많은 시간을 보내기 시작한다.

간단한 소인수분해 프로그램, $\pi$값 계산 프로그램 등을 매일 만들다가... 어느 날 갑자기 맥 터미널에서 Dunnet이라는 90년대 텍스트 어드벤처 게임을 발견하고는 신선한 충격을 받게 된다.

Dunnet. 환경 설명과 명령을 모두 CLI로 주고받는 텍스트 어드벤처이다.

Dunnet에서는 명령어를 통해 주변 환경과 상호작용한다. 게임 내에서는 Unix 시스템도 등장하며, 플레이어 본인과 아이템들을 Unix 명령어로 압축하여 Arpanet상의 다른 장소로 텔레포팅하는 등, SF적인 요소도 가미되어있다. (이 때 Unix shell 환경을 인생 처음으로 접했다. cd, ls 등등.. CLI를 통해 어떻게 컴퓨터와 상호작용할 수 있는지 이때 알게 되었다.) 최종 오브젝티브는 점수를 모으는 일종의 퍼즐 게임인데, Dunnet은 CLI 환경에서 구현된 세계관임에도 엄청난 몰입감과 그 특유의 분위기를 뽐냈다.

비슷한 게임을 만들 수 있을 것만 같았다.

객체지향도 모르던 시절인데, 결국 3개월동안 if/else만 3000 라인을 chaining해서 텍스트 기반 어드벤처 게임, Adventureland를 만들어내고야 만다(모든 위치, 모든 명령어의 조합을 다 if/else로 처리했다). Dunnet처럼 플레이어의 환경에 대한 설명이 줄글로 나오면, 명령어로 입력을 넣는 방식의 퍼즐 게임이다.

Adventureland 시작 화면

당시 무엇을 만들 때마다 느끼던 '와 이게 되네'를 강하게 느낀 작품이다.

이쯤에 난 이미 코딩의 매력에 푹 빠져 진로를 컴퓨터공학으로 정한 상태가 된다. Adventureland를 친구들에게 배포함과 함께 나는 외국인학교를 떠나 세화고에 입학한다.

# 중간점검 - [제어문 - 자료형 - 함수]를 배웠다.


다음 글: 3. 고등학교 - 하라는 공부는 안하고