계산적 사고 (computational thinking)
어떤 문제를 컴퓨터가, 혹은 사람이 기계처럼 따라 할 수 있는 형태로 풀어내기 위해, 큰 문제를 작은 조각으로 쪼개고(분해), 반복되는 결을 알아채고(패턴), 군더더기를 걷어내 핵심만 남기고(추상), 누가 따라 해도 같은 답이 나오는 단계들의 순서로 적어 내는(알고리즘) 사고법. 답을 직접 내는 것이 아니라, 답을 내는 절차 자체를 설계한다는 점이 핵심이다.
너, 누군가에게 길을 알려 줘 본 적 있지. 그것도 전화로, 상대가 지금 어디 서 있는지도 모르는 채로 말이다. 그럴 때 너는 무심코 굉장한 일을 한다. 머릿속 지도를 통째로 건네는 대신, 그걸 잘게 끊는다. 지금 보이는 큰 사거리까지 와라. 거기서 우체국을 등지고 왼쪽. 두 블록 직진. 빨간 간판 보이면 그 골목으로. 너는 한 번에 다 말하지 않는다. 상대가 한 단계를 끝내야 다음 단계가 의미를 갖는, 순서가 있는 작은 명령들로 길을 빻아 놓는 거다. 게다가 '예쁜 카페'나 '느낌 좋은 거리' 같은 네 머릿속에만 있는 말은 싹 빼고, 누가 들어도 똑같이 따라 할 수 있는 표지만 남긴다. 오늘 이야기는, 이 전화 통화 속 길 안내에 들어 있는 생각의 골격에 관한 거다. 그리고 이 골격에 이름이 붙은 건 의외로 최근이다.
먼저 짚을 게 있다. 이 사고법은 '컴퓨터를 쓰는 법'이 아니다. 컴퓨터가 단 한 대도 없던 시절에도 사람들은 이렇게 생각했다. 빵을 굽는 손맛을 글로 옮긴 요리법이 그렇고, 누가 해도 같은 결과가 나오도록 적힌 뜨개질 도안이 그렇고, 수천 년 전 두 수의 최대공약수를 구하던 유클리드의 절차가 그렇다. 큰 수를 작은 수로 나눠 나머지를 보고, 그 나머지로 또 나누기를 답이 나올 때까지 되풀이하라 — 이건 그가 누구의 머리도 빌리지 않고 손으로 따라 할 수 있게 적어 놓은, 아주 오래된 단계들의 순서다. 그러니까 절차로 생각하는 버릇은 인류만큼 오래됐다. 다만 그걸 한데 묶어 부를 이름이 오래도록 없었을 뿐이다.
그 이름의 씨앗을 뿌린 사람은 대략 1960년대 말에서 1980년 사이의 시모어 패퍼트다. 수학자이자 교육자였던 그는 아이들에게 수학을 가르치는 낡은 방식에 화가 나 있었다. 외워라, 풀어라, 틀리면 빨간 줄. 그는 거꾸로 가기로 했다. 아이에게 거북이 한 마리를 쥐여 준 것이다. 화면 위 작은 거북이가 아이의 명령을 그대로 따라 기어 다니며 선을 그리는, 로고라는 언어였다. 아이는 정사각형 하나를 그리고 싶어 한다. 그러려면 거북이에게 뭐라고 말해야 하나. 앞으로 백 걸음, 오른쪽으로 구십 도 돌아라 — 그리고 아이는 곧 깨닫는다. 이 두 마디를 네 번 되풀이하면 사각형이 닫힌다는 걸. 한 번 적은 동작의 묶음을 거듭 부른다는, 패턴을 잡아 절차로 가두는 그 생각을 아이가 스스로 발견하게 한 거다.
여기서 패퍼트가 남긴 진짜 보물은 사각형이 아니라 한 단어였다. 아이가 명령을 잘못 짜면 거북이는 엉뚱한 데로 기어가 이상한 그림을 그린다. 보통의 교실이라면 이건 '틀렸다'이고 부끄러움이다. 그런데 패퍼트는 아이들에게 다르게 말하게 했다. 이건 틀린 게 아니라 '버그가 있는' 거라고. 어디서 거북이가 어긋났는지 거슬러 짚어, 그 한 줄을 고치면 된다고. 실패가 수치가 아니라 고쳐야 할 한 줄로 바뀌는 순간, 아이는 두려움 없이 절차를 만지작거리기 시작한다. 끝까지 한 예제를 따라가 보자. 거북이로 별 모양 오각성을 그리려는 아이가 회전 각을 구십 도로 줬다 치자. 거북이는 별이 아니라 네모를 그리고 멈춘다. 아이는 머리를 싸맨다. 한 꼭짓점을 돌 때마다 거북이가 얼마나 틀어야 별이 닫힐까. 한 바퀴는 삼백육십 도, 별을 그리며 거북이는 그 바퀴를 두 번 감아 도니 도는 양은 다 합쳐 칠백이십 도, 꼭짓점은 다섯 개이니 한 점에서 백사십사 도. 각을 그렇게 고쳐 넣자 거북이는 비로소 별을 그린다. 아이가 방금 한 게 계산적 사고의 네 동작 전부다. 별이라는 막막한 덩어리를 '한 변 긋고 한 번 돌기'로 쪼갰고(분해), 그게 다섯 번 똑같이 되풀이됨을 알아챘고(패턴), '예쁜 별'이라는 느낌을 버리고 '몇 도냐'라는 숫자 하나로 핵심을 졸였고(추상), 그걸 거북이가 토씨 하나 안 틀리고 따라 할 순서로 적었다(알고리즘).
패퍼트가 거북이로 씨앗을 뿌렸다면, 그 씨앗에 '계산적 사고'라는 이름표를 정식으로 달아 세상에 퍼뜨린 사람은 카네기멜런의 지넷 윙이다. 2006년, 그는 짧은 글 하나를 내놓으며 도발적인 주장을 했다. 이건 컴퓨터 전공자만의 기술이 아니라 읽기 쓰기 셈하기처럼 모든 사람이 갖춰야 할 기초 소양이라고. 의사든 변호사든 사업가든, 큰 문제를 분해하고 반복을 알아채고 군더더기를 추상하고 절차로 적는 그 머리 쓰는 법은 누구에게나 무기가 된다고. 이 한 편의 글이 불씨가 되어, 이후 세계 곳곳의 학교가 코딩 자체보다 그 밑에 깔린 이 생각법을 아이들에게 가르치겠다고 나섰다. 오래전부터 사람들이 무심코 써 오던 절차적 사고가, 비로소 한 이름 아래 모여 가르칠 수 있는 대상이 된 것이다.
그런데 이 사고가 사람의 머릿속을 넘어 기계에게 넘어가는 자리에서, 생각의 가장 윗단추부터 다시 끼워야 했다. 사람끼리는 길을 알려 줄 때 '저기 큰 건물에서 적당히 꺾어'라고 해도 알아듣는다. 듣는 쪽이 알아서 빈틈을 메우는 거다. 그런데 기계는 그 '알아서'가 없다. 적당히가 얼마인지, 큰 건물이 어느 것인지, 꺾는다는 게 몇 도인지 — 사람이 당연하게 여겨 입 밖에 안 내던 모든 판단을, 단 하나도 빠뜨리지 않고 명시적으로 적어 줘야만 기계가 움직인다. 그래서 계산적 사고를 진짜로 한다는 건, 내 머릿속 직관에 숨어 있던 암묵의 판단들을 죄다 끄집어내 햇빛 아래 글로 박아 두는 고된 일이 된다. 모호함을 한 톨도 남기지 않을 것, 어떤 경우에도 답이 갈리지 않게 모든 갈림길을 미리 정해 둘 것. 컴퓨터가 이 사고의 무대가 되면서 사람은 비로소, 자기가 무엇을 '당연히' 가정하고 있었는지를 마주 보지 않을 수 없게 됐다.
그러니 너가 머릿속에서는 빤한데 막상 남에게 시키려니, 혹은 한 번이 아니라 백 번 똑같이 굴러가게 만들려니 막막해지는 일을 만나거든, 전화로 길 안내하던 그 마음으로 돌아가라. 이 일을 더 작은 단계로 어떻게 쪼갤까, 그중 되풀이되는 결은 무엇인가, '느낌'이라는 말을 빼고 누가 봐도 같은 표지만 남기면 무엇이 남는가, 그래서 나 없이도 누구든 그대로 따라 하면 같은 답에 닿는 순서로 적을 수 있는가. 답을 한 번 내주는 사람은 한 번을 돕지만, 답에 닿는 절차를 적어 두는 사람은 자기가 자리를 비운 뒤에도 천 번을 돕는다.