본문 바로 가기

[ 테크 ]

코딩은 샌드박스 세상에 도전하는 일

by김국현

1. 게임을 만드는 게임

지난주 구글은 비디오 게임을 만들 수 있는 비디오 게임을 발표했다. 구글 제품답게 무료로 플레이할 수 있고, 윈도와 맥 모두에서 사용할 수 있다. 이 게임은 실험적 프로젝트를 만들고 있는 것으로 알려진 구글의 얼렁뚱땅 연구소이자 인큐베이터인 에어리어(Area) 120가 뽑아냈다. 게임의 이름은 게임 빌더. 생산적인 냄새는 부모의 경계심을 덜어준다.


간단한 마인크래프트(Minecraft) 풍 게임을 게임하듯이 만들 수 있다는 것인데, 협동 모드까지 있어서 여러 사람이 동시에 게임을 만들 수도 있다. 친구와 함께 가상 세계에 들어가서 실시간으로 게임을 만들며 더불어 노는 바람직한 일이 실제로 벌어지게 되었다.


코딩이나 소프트웨어 개발에 대한 두려움을 없애고, 과학적 사고에 흥미를 끌게 해준다는 점에서는 재미있는 시도다. 하지만 근본적으로는 마인크래프트적 세계관에서 크게 달라진 것은 없다. 게임을 만들 수는 있지만, 설정된 세계 안에 갇힌다는 점에서 결국 게임은 게임이다.

2. 샌드박스

샌드박스라는 IT 용어가 있다. 말 그대로 모래 놀이터라는 뜻이다. 모래 놀이터 안에서 아이들은 마음껏 상상력을 발휘해 모래성을 짓고, 물길을 내 해자를 만들기도 한다. 아이들은 그 순간만큼은 내 세상의 아키텍트다. 하지만 이는 그저 어른들이 아이들을 모래 놀이터에 풀어(혹은 가둬) 놓고 그 안에서만 놀게끔 하고 있는 풍경이다.


어른들이 설정한 샌드박스 안에서만 놀게끔 하는 유사 프로그래밍 환경은 스크래치, 쯔꾸루에서 스위프트 플레이그라운드에 이르기까지 그 역사와 범위가 다양하다.


개중에는 어엿한 실행파일을 뽑아주는 꽤 본격적인 것들도 있지만, 그 결과물은 애초에 설정한 한계를 벗어날 수 없다는 단점이 있다. 샌드박스의 본질이다.


하지만 동시에 샌드박스가 근대 컴퓨팅의 본질이기도 하다. 컴퓨터는 이미 너무 복잡해져 버렸기에, 이를 억지로라도 단순한 세상처럼 보이게 하지 않는다면, 즉 추상화하지 않으면 그 위에서 무언가를 만드는 일은 너무나도 고단하기 때문이다.


이제 더는 CPU를 바로 건드리는 어셈블리어 코딩은 좀처럼 하지 않는다. 이제 다들 자바든 자바스크립트든 추상화된 샌드박스 안에서 프로그래밍한다.


내가 선택한 샌드박스의 한계는 나의 세계의 한계다.

3. 세계의 한계를 비집어 열어 보는 일에 대하여

비트겐슈타인은 나의 언어의 한계는 나의 세계의 한계라는 말을 한 적이 있다. 언어로 나타낼 수 없는 것은 결국 없는 것과 마찬가지이기에 이에 관해서는 침묵할 수밖에 없다며. 더 나아가 나는 누구냐 묻는다면 나란 결국 내가 사용하는 언어일 뿐이라 그는 말하는 듯하다. 그런데 우리는 컴퓨터 속에서도 비슷한 말을 할 수 있다. 컴퓨터의 세계도 샌드박스의 한계만큼일 뿐이다. 실은 더 무궁무진하더라도 컴퓨터가 우리에게 보여줄 수 있는 세상은 샌드박스의 한계까지다.


따라서 조금이라도 더 논리적이든 치밀하든 세상을 정말 보여줄 수 있는 샌드박스가 있다면 이를 배우게 하고 싶다. 지나치게 단순화하여 유아적인 환경과 언어를 만들어 여기에 안주하게 하는 일에는 위화감이 생긴다. 사실 초등학교 고학년만 되어도 대개의 모던 컴퓨터 언어를 배우기에는 충분히 성숙하다.


우리가 코딩을 배워야 하는 이유는 조건분기(IF)와 루프(FOR, WHILE)의 개념을 블록 쌓기로 이해하기 위해서가 아니라, 세상이 우리에게 미리 만들어 놓은 규칙을 비집어 뒤틀고 그 틈에 끼어들어, 새로운 규칙을 만들어 보는 패기를 배우기 위함이다.


그렇게 세상의 한계를 밀어붙이고, 결국은 그 주어진 샌드박스를 의심하고 틀을 깨고 나가는 쾌감. 코딩이란 이런 활동이고, 어른이 가르쳐야 할 일이 있다면 이 쾌감을 맛보게 하는 일. 어른들이 만들어 놓은 상자의 틈을 벌리고 세상을 향해 고개를 내미는 일이다.


기성세대가 만들어 놓은 스파게티 같은 세계를 해커의 정신으로 풀어헤치자. 분기도 루프도 모두 그 순간을 위해서다.