여러분은 머리속에서 생각할 때 어떤 방법으로 생각하십니까? 세계적인 수학자들은 어떻게 생각하고, 또 뛰어난 프로그래머들은 어떨까요?

저는 얼마전 앨런 케이(Alan Kay)의 Doing with Images Makes Symbols라는 강의를 언급했고, 이 강의의 제목에 대해 차후에 한번 글을 쓰겠다는 암시를 했습니다. (참고로 아래 글은 앨런의 강의에서 많은 도움을 받았습니다.)

교육심리학자 삐아제(Jean Piaget)는 사람의 정신(mentality)이 단계를 거치며 발전한다고 봤습니다.

그 단계는

Doing -> Images -> Symbols

처음 행하는 단계에서는 아이들은 결과에 대해 생각하지 않고 그냥 "해버립니다". 그들에게 있어 사고(thinking)라는 것은 행함이고 근육에 의한 것(muscular things)들입니다.

다섯살 즈음을 넘어서면서는 시각 단계로 올라섭니다. 눈에 보이는 이미지에 의해 생각이 주도되는 것이죠. 예를 들어 넓고 낮은 컵에 담긴 물을 길고 얇은 컵(실린더를 연상하세요)에 옮겨 붓고 나면, 이 시기의 아이들은 "물이 더 많다"고 생각합니다. 눈으로 보면 컵에 담긴 물의 높이가 높아져서 시각적으로 많아 보이며, 이 시기의 아이들은 시각적 논리(visual logic)에 의해 사고하기 때문입니다.

11살, 12살 정도가 되면서는 사실과 논리의 단계로 접어듭니다. 눈에 보이는 직접적인 것들에서부터 떨어져서 말이죠. 이때부터 기호(현실과는 관련이 적어보이는)를 사용하게 됩니다.

미국의 심리학자인 제롬 브루너(Jerome Bruner)는 재미있는 실험을 했습니다. 삐아제의 실험을 그대로 했고, 아이는 얇고 기다란 컵에 물이 더 많다고 했습니다. 그러고는 한가지 실험을 더 했습니다. 그 기다란 컵이 안보이게 뭔가로 가려봤습니다. 그러자 아이가, "똑같은 양의 물이 있을 거에요. 그 물이 어디 가겠어요?"라고 말했습니다. 그러고는 기다란 컵을 드러냈습니다. 그러자, "어, 잠깐요. 물이 더 많네요."라고 말합니다. 다시 컵을 감추면, "똑같은 양의 물이 있을 거에요. 어디 가겠어요?"라고 말합니다. (댁에 어린이가 있으면 실험해 보세요)

브루너의 이론은, 이런 단계들이 직선상에 있는 것이 아니며, 아이는 복수계의 단계를 점유하고 있다는 것입니다. 그래서 이미지 단계에 있는 아이는 시각적인 것에 의해 주도되긴 하지만, 시각적 정보를 감추면 행하는 단계나 기호적 단계가 스위치가 켜지는 것이라고 말합니다.



자크 아다마르(Jacques Hadamard)라는 프랑스의 수학자는 창의성에 대한 선구적 연구로 유명하기도 합니다. 그는 수학자가 어떻게 사고하는지 알기 위해 자신을 포함 100여명의 수학자와 물리학자들을 조사했습니다 -- 아인슈타인을 포함, 당시 지구 최고의 수학자와 과학자들이었습니다. 그 작업 결과 나온 책이 The Mathematician's Mind입니다(참고로, 이 책을 거칠게 요약하자면, 하나는 수학자들이 새로운 것을 만들어 낼 때 무의식과 인큐베이션이 매우 중요한 역할을 한다는 점과, 다른 하나는 그들이 사고할 때, 뭔가 새로운 아이디어를 만들어 낼 때 쓰는 정신의 언어는 이미지와 운동감각적인 것이 주가 되었다는 점입니다).

흥미롭게도 100여명의 사람 중 수학적이고 기호적인 단계의 사고를 중심으로 생각한다는 사람은 거의 없었습니다. 대부분은 시각적인 이미지 중심의 사고를 하고, 아인슈타인을 포함 30% 가까이는 몸으로 행하는 사고를 주로 한다고 했습니다. 아인슈타인은 자신이 다루는 추상적 공간을 자기 팔과 손가락의 근육에서 느끼면서 사고하기도 한다고 했습니다. 아인슈타인의 편지가 이 책에 포함되어 있는데 아래에 몇 문장을 인용해 보았습니다.

The words or the language, as they are written or spoken, do not seem to play any role in my mechanism of thought. The psychical entities which seem to serve as elements in thought are certain signs and more or less clear images which can be "voluntarily" reproduced and combined. ... But taken from a psychological viewpoint, this combinatory play seems to be the essential feature in productive thought -- before there is any connection with logical construction in words or other kinds of signs which can be communicated to others.

The above mentioned elements are, in my case, of visual and some of muscular type. Conventional words or other signs have to be sought for laboriously only in a second stage, when the mentioned associative play is sufficiently established and can be reproduced at will.

The Mathematician's Mind, A Testimonial from Professor Einstein, pp. 142-143 에서 인용

브루너의 입장에서 봤을 때 매우 창의적인 사람들은 자신이 속한 정신적 단계(기호)를 벗어나 여러 종류의 정신적 단계(행동, 시각, 기호)를 이용한다고 생각할 수 있습니다.

슬픈 사실은 모든 아이들이 수학과 물리학을 배울 때 마지막 단계 즉 기호의 채널을 통해서만 교육을 받는다는 점입니다. 그런데 그 채널은 창의적인 성인 수학자와 물리학자들이 수학과 물리학을 할 때 별로 사용하지 않습니다. 그 사람들은 의사소통하기 위해서 그 채널을 쓰기는 하지만 그 채널을 통해 스스로 사고하는 경우는 드뭅니다.

우리는 시각적 사고, 시각적 논리, 운동 감각적 사고를 저열한 것으로 치부합니다. 그리고 아이들이 가급적 그런 사고를 버리도록 교육하고 있습니다. 하지만 최고 수준의 수학자와 물리학자는 그런 사고에 의존합니다.

아이들이 어떤 의미에서는 퇴행하는 것입니다. 앨런 케이는 한가지 극명한 예를 보여줍니다.  5살, 10살, 15살 아이들에게 로고(컴퓨터 화면이나 종이 위에서 로봇 거북이를 이동시키면 그 자리에 선이 그려짐)라는 프로그래밍 언어를 이용해서 원을 그리라고 했습니다.

운동감각적 사고를 하는 5세의 아이들은 다음과 같은 프로그램을 만듭니다.

조금 앞으로 가
오른쪽으로 조금 돌아
이걸 반복

시각적 사고에 지배되는 10살의 아이들은 다음과 같이 작성합니다.

펜을 들어
앞으로 100만큼 가
점을 찍어
뒤로 100만큼 돌아와
오른쪽으로 조금 돌아
이걸 반복

기호적 사고 단계의 "나이 많은" 15살 아이들은?

x^2 + y^2 = r^2

이라고만 적어놓고 원을 그리지 못합니다. 이 수식에 정복 당해서 다른 생각을 못합니다. 이 수식은 그 자체로 기능적(operational)이지 못합니다. 원을 그리려면 너무 복잡해져 버립니다. 나이가 들면서 오히려 능력이 감퇴해 버린 것이죠. 컨텍스트와 사고(혹은 논리)의 모드가 잘 맞지 않는 것이라고 볼 수도 있겠습니다. 로마숫자는 더하기는 쉽지만 곱하기가 무진장 어렵습니다. 천재만 여러 숫자의 로마숫자 곱하기를 할 수 있습니다. 하지만 아라비아 숫자로는 열 살 정도 어린이도 여러 자리 숫자 곱셈을 할 수 있습니다.

아다마르 이후 관련된 연구가 많이 진행되었습니다. 과학적 발견에 있어 심상(imagery)가 갖는 중요성에 대한 연구도 있었고, 엔지니어들이 설계를 할 때 심상이 주된 역할을 한다는 연구 등이 있습니다.




프로그래머들은 어떨까요?

The first step in programming is imagining. Just making it crystall clear in my mind what is going to happen. In this initial stage, I use paper and pencil, I just doodle, I don't write code. I might draw a few boxes or a few arrows, but it's just mostly doodles, because the real picture is in my mind. I like to imagine the structures that are being maintained, the structures that represent the reality I want to code. Once I have the structure fairly firm and clear in mymind, then I write the code. I sit down at my terminal -- or with a piece of paper in the old days -- and write it. --Charles Simonyi, Programmers at Work, p. 15

매리언 피트리(Marian Petre)와 앨런 블랙웰(Alan Blackwell)은 10년 이상 경력에 주변에서 뛰어난 평가를 받는 전문 프로그래머들이 설계를 할 때 어떤 "머리속 언어"를 쓰는지 연구했습니다(A Glimps of Expert Programmers' Mental Imagery, Mental Imagery in Program Design and Visual Programming 등의 논문 참고). 전문 프로그래머들의 인터뷰 내용 중 일부를 보시죠.

“One of the earliest things is to visualize this structure in my head, a dynamic structure, so I can think about how things fit together and how they work … and once I have the structure fairly strong and clear in my mind, I move it around and move around inside it, examining it and tweaking it … ”

“I think of these systems of relationships as alive, interacting beings … I make this dirty dynamic mental representation, a sort of organic thing … ”

"Visualization of the code is primary for me; visualization allows for more global, higherlevel thinking; [I] “visualize” graphically my programs which lets me “see” them, create them, and modify them; [the] program becomes easier to visualize; find a solution to a problem visually."


운동감각에 의존하는 사람도 있었고, 심상을 이용하는 사람도 있었습니다. 특히 대부분의 사람들이 심상을 사용했고, 스타일은 모두 차이가 있었지만 놀랄 정도의 공통점도 발견됐습니다. 예를 들면 동적인 이미지이고, 속도를 조절할 수 있으며 원하는 시점에 멈출 수 있고, 심지어는 거꾸로 돌릴 수 있는 특징이 있습니다. 그들은 이런 머리속 시뮬레이션을 매우 적극적으로 활용했습니다. 머리속에서 어떤 심적 모델을 만들고 시뮬레이션 돌려보고, 아니다 싶으면 머리속에서 고치고를 반복합니다. 이때 운동감각과 시감각은 중요한 역할을 합니다.

결언

다시 처음으로 돌아옵니다. 앨런 케이의 강의 제목은 Doing with Images Makes Symbols입니다. 운동감각은 매우 유용합니다. 시각적 사고 또한 그 파워가 엄청납니다(예를 들어 수십년 전에 본 영화를 몇 프레임만 다시 봐도 자신이 봤다는 사실을 쉽게 기억해 내고 그 다음 장면까지 기억해 낼 수 있습니다). 논리와 기호 또한 중요합니다. 다른 두가지에서 잘 제공하지 못하는 "추론"을 가능하게 해줍니다.

중요한 것은 어느 멘탈리티가 최선이냐는 아닐 것입니다. 복수개의 멘탈리티를 필요에 맞게 적절히 바꿔가며 섞어 쓸 수 있는 능력이 중요하리라 생각합니다. 하지만 우리는 상대적으로 운동감각적 사고와 시각적 사고를 억누르도록 교육 받아 왔습니다. 그래서 될 수 있으면 이런 요소들을 장려하고 훈련하는 것이 필요할 것입니다. (프로그래머를 위한 훈련에 대해서는 다음 기회에 글을 쓰겠습니다)

앨런 케이는 함(doing)으로 이미지에 도달하고 거기에서 기호에 도달해서, 세가지를 함께 엮어야 한다고 합니다. 행함과 이미지의 구체적 세계와, 기호와 논리의 추상적 세계의 연결을 이야기하는 것입니다. (사실 앨런의 강의는 HCI에 대한 것이고 이 개념을 HCI에 적용하는 예를 많이 이야기 합니다).

여러분은 자신의 숨겨진 다양한 능력들을 얼마나 잘 활용하고 계신가요?

--김창준