사다리는 생각하지 마

1.

컴퓨터 언어 중에 함수형 언어라는 게 있다. Lisp, ML, F# 등의 언어가 여기에 들어가는데, 이 언어들은 아주 재미있는 특징을 가지고 있다. 첫 번째는 컴퓨터 전공자들이 이 특이한 언어를 배우느라 고생을 좀 한다는 것이고, 두 번째는 그렇게 고생을 해서 배워 놓고서는 강의실 밖으로 가면 이 언어를 안 쓴다는 것이다. 농담 아니고 정말 하나도 안 쓴다. 산업 현장에서 쓰는 언어들은 c나 java 같은 언어들, 소위 “기계식 언어”가 거의 다기 때문이다1. 그렇다고 해서 이 언어가 배워도 그만 안배워도 그만인 것도 아니다. 예를 들어 우리 학교는 관련 수업이 아예 전공 필수라, 수업 안 들으면 졸업을 못 한다(!).

수업을 듣다 보면 과장 안하고 정말 교수님이 이렇게 보인다(…).

도대체 왜 이 고행을 하는 것일까? 실은, 나도 처음 이 언어를 배울 때 고생을 좀 심하게 했다. 그러고도 안 써서 그때 배운 것들을 거의 다 까먹었다. 하지만 나는 지금, 프로그래머라면 누구나 예외없이 함수형 언어를 배워봐야 한다고 주장한다. 나도 당해봤으니 니들도 당해보라는 얘기가 아니다. 함수형 언어를 배우는 것은 단순히 언어 사용법을 암기하는 것 이상이기 때문이다.

2.

컴퓨터 프로그램은 영어나 한국어로 쓴 글들과 마찬가지로 인간의 생각을 표현한 것이다. 여기서 문제가 되는 것은 바로 “생각하는 방법”이다. 프로그램 작성에 접근하는 사고방식으로는 기계식 사고와 함수형 사고가 있다. 기계식 사고는 처음 배우기엔 쉬워 보이고 아주 직관적이다. 하지만 문제가 있다. 같은 기계식 언어로 프로그램을 짜도 함수형으로 생각하고 짠 프로그램과 기계식으로 생각하고 짠 프로그램이 다르다는 것이다. 함수형 사고를 바탕으로 짠 프로그램들이 기계식으로 짠 프로그램보다 훨씬 더 버그가 적으며 테스트하기 좋고 다른 사람이 알아보기도 쉽다. 그래서 소위 프로그램 좀 짠다는 사람들은 정도 차이는 있지만 대개 함수형으로 생각하는 경우가 많다.

재미있는 건, 이 사람들의 상당수가 함수형 사고라는 말을 모른다는 것이다. 사실 나도 한달 전까지 함수형 사고라는 말을 몰랐다. 하지만 나는 매일 함수형으로 생각하면서 프로그램을 짰다. 나는 대체 어디서 저걸 배운 것일까? 정답을 말하자면, 앞에서 말한 바로 그 수업 시간에 배웠다. 기계식 언어는 기계식으로 생각해도 쓸 수 있고, 함수형으로 생각해도 쓸 수 있다. 하지만 함수형 언어는 함수형으로 생각해야만 사용할 수 있다. 과제를 하면서, 나는 익숙하지도 않은 함수형 사고를 하느라 끙끙대야 했다2. 시간이 흐르면서 그 때 배웠던 구체적인 문법들은 잊혀졌지만, 그 과정에서 암묵적으로 배운 함수형으로 사고하는 습관은 머릿속에 남았던 거다.3

3.

우리는 보통 명시적으로 배운 것들에 매우 집착하는 경향이 있다. ‘나는 함수형 언어를 배웠어’ 이런 식으로 말이다. 하지만 어떻게 보면, 명시적으로 배우는 것들은 대개 사다리와 비슷하다. 사람이 사다리에 매달리는 것은 그게 좋아서가 아니라, 지붕에 올라가기 위해서다. 함수형 사고를 익히고 체화시키기 위해서 함수형 언어를 배우는 것과 마찬가지다. 이렇게, 명시적인 지식은 진짜 필요한 암묵적인 지식을 체득하기 위한 과정에 불과한 경우가 많다.

일단 지붕에 올라가고 나면, 사다리 같은 건 이제 아무래도 좋게 된다. 실제로 나는 함수형 언어 문법을 일치감치 다 까먹었다. 하지만 전혀 문제가 되지 않는다. 중요한 건 함수형으로 사고하는 능력이지 인터넷에 굴러다니는 시시콜콜한 문법 사항 같은 게 아니기 때문이다.

사실, 세상의 거의 모든 지식들이 이런 식이다. 철학을 배웠다고 해서 온갖 시시콜콜한 주장과 논증들을 다 기억하지는 않는다. 하지만 논리적으로 생각하는 능력은 남는다.4 역사를 공부했다고 해서 역사상의 자잘한 사건들을 연대기순으로 기억하지는 않는다. 하지만 사물이 지나온 내력을 통해 현재와 같은 모습이 된 내력을 판단하는 능력은 남는다. 컴퓨터 프로그래밍을 배웠다고 해서 전문 프로그래머만큼 프로그램을 잘 짤 수도 없고, 프로그램 언어의 문법도 다 기억하지 못한다. 하지만 자기가 생각하는 바를 기계가 알아들을 수 있을 정도로 명확하게 표현하는 능력은 남는다.5 회계학 수업을 들었다고 해서 대차대조표의 항목들을 모두 기억하지는 않는다. 하지만 기업 내부에 얼마나 다양한 특성을 가진 자산이 있으며, 이들이 어떤 식으로 상호 연계되어 있는지6에 대한 개념은 머릿속에 남는다. 지붕이 뭐가 됐건, 중요한 건 사다리가 아닌 것이다.

4.

진보신당에서 최근 펴낸 공약집 내용을 보다가 뒤집어졌다. “미적분 같은 건 선택으로 하고 모든 학생이 악기 같은 걸 하나씩 연주할 수 있도록 교육과정을 개혁하겠다.” 란다. 커다란 사다리가 보기 싫으니 치워 버리겠다는 얘기다. 죄송한 얘긴데, 나도 그 사다리가 별로 마음에 들지 않는다. 그 사다리 없어도 먹고 사는 데 지장 없다. 하지만 그 사다리가 없으면, 근대 이후 인간 세상을 혁명적으로 발전시켰던 사고 방식에 대해 어린 학생들에게 설명할 도리가 없다. 지붕 위로 못 올라간단 말이다.

그런데 내가 좋아하는 악기도 가르쳐 줄라나? 이건 한국에서 가르치는 데가 한 곳 뿐인데(…)

물론 그 사다리, 문제 많다. 지붕 위로 머리를 내밀어도 모자랄 판국에 사다리 오르락 내리락만 하는 교육도 한심하고, 그 지붕 말고 올라가야 할 다른 지붕도 많은데 거기에만 붙들려 있는 꼴도 못 봐주겠다. 하지만 그것이 사다리를 치워 버려도 되는 이유가 되지는 못한다. 아니, 그보다 그 사다리가 왜 필요한지에 대해 생각이라도 해봤는지 궁금하다. 생각을 해 봤다면 저런 소리 못 할 것이고, 생각 안하고 저런 걸 공약집에 넣었다면 공당으로서의 자격이 없을 터다.

5.

아마 많은 사람들이 헬스장에서 운동을 할 게다. 하지만 우리가 헬스장에서 아령을 드는 이유는 실생활에서 아령을 들 일이 있어서가 아니라, 그렇게 함으로써 근육이 붙고 더 건강해지기를 바라기 때문이다. 학문도 이와 그리 다르지 않다. 아령이나 미적분학이나, 결과적으로는 그저 사다리에 불과한 것이다. 몸을 위한 사다리는 마다하지 않으면서 머리를 위한 사다리는 치워 버리고 싶다는 건, 머리는 팔다리보다 덜 중요하다는 이야기인가?

사다리는 뭐가 됐든 대체로 거추장스럽게 크기 때문에, 치워 버리고 싶은 생각이 드는 건 이해한다. 하지만 그거 없으면, 지붕 위로 못 올라간다. 그러니까 제발, 사다리는 생각하지 마.


  1. 이 글에서는 함수형 언어와 기계식 언어 두 가지만 언급하지만, 실제로는 몇 가지 종류의 언어가 더 있다. 하지만 그 부분에 대해서는 언급하지 않기로 한다. 

  2. 정확히 이야기하면 시험은 없고 과제만으로 채점하는 수업이었는데, 차라리 시험 봤으면 좋겠다는 생각이 굴뚝같았다. 

  3. 사실 여기서 함수형 언어에 대한 설명은 매우 비학문적인 범위에 초점을 맞춘 설명이고, 학문적으로는 조금 그 의미가 다르다. 

  4. 괜히 외국계 기업들이 철학 전공자를 좋아하는 게 아니다. 

  5. 괜히 게임회사에서 기획자들에게 프로그램 공부하라고 하는 게 아니다. 게임 기획이란 쉽게말해 게임의 룰을 정하는 작업인데, 이게 두리뭉실하면 프로그램 구현 중 문제가 생기거나 밸런스가 붕괴될 위험이 높다. 같은 이유에서 컴퓨터를 다룰 일이 많은 이공계생 대부분도 어느 정도 프로그래밍을 배운다. 

  6. 실제로 내가 회계원리를 가르쳐 주신 교수님은(나이가 좀 많으셨는데) 가능하면 이런 쪽으로 많이 설명해 주셨다. 지금도 감사한다. 

34 thoughts on “사다리는 생각하지 마

    • 곰과의 생물을 설명하면서 반드시 판다의 예를 들 필요는 없다능. 크릉. :)

    • 판다는 너구리과요(…..)

    • 아이추판다 // 버럭!!

      박하사탕 // 저도 그런 줄 알고 찾아봤더니 곰과라고 나오더군요. 아무래도 분류에 있어 논란이 있는 생물이라 그런 것 아닐까요.

    • 잉 곰과였다니 틀림없이 80년대에는 너구리과라고 배웠는데

    • 박하사탕 // 아무래도 워낙에 희귀한 동물이라… 연구가 잘 안되어 있던 게 아닌가 합니다.

  1. 경영학을 전공한 사람 입장에서
    사실 학부 때 경영학을 가르친다는 것에 대해 매우 반대하는 사람입니다
    경영학은 지붕 위에 올라간 다음에 필요한 학문이라고 생각하기 때문입니다

    (회계는 좀 예외입니다. 회계는 ‘사다리’의 자격이 충분하다고 생각합니다
    다만,모든 학생이 꼭 배워야 한다는 것에 대해서는 아직도 의문입니다)

    지붕과 사다리의 비유 참 좋네요^^

    진보신당 입장에서는 사교육비에 지출액 때문에 저런 공약을 했나 싶은데
    저 공약이 실현되면 필시 악기과외가 성행하겠죠…
    수학과 전공자 대신 음대 전공자가 과외 시장에서 좀 더 유리해 지는 것
    그 이상도 그 이하도 아니게 될 것 같습니다

    사다리 생각좀 안 했으면 좋겠네요

    • 1. 흠, 경영학에 대해 비슷한 말씀 많이 듣는데, 그 이유가 뭔지 궁금합니다. 어떤 분들이 “실제 업무를 처리해보지 않고 이론만 배운 순수 경영학 전공자는 그리 많이 필요하지 않다. 대체로 학부에서는 해당 분야 학문을 전공하거나 업무 처리 경험을 한 뒤 배우는 것이 낫다.” 고 하시는 걸 들었거든요. 심지어 제가 수강했던 수업 교수님도 “솔직히 자동차 회사 경영자는 경영대 졸업자보다 경영 수업을 받은 기계 공학 박사가 나은 것 같은데.” 라고 그러시더랍니다.

      비슷한 이야기가 반복적으로 나오는 걸 보면 뭔가 이유가 있어 보이는데… 구체적으로 실제 경험자 분들이 현실에서 느끼신 바가 어떠한지 궁금합니다.

      2. 현실적으로 현재 개설되어 있는 회계 수업들은 모두 전공자용 수업이기 때문에, 비전공자들에게는 알맞지 않을 수도 있다는 생각이 듭니다.(함께 수업들은 친구들 사이에서도 비슷한 이야기가 나왔습니다.)

      사실 컴퓨터 같은 경우도 전공자용하고 일반 이공계용 수업 내용이 다르거든요. 이공계용 교양 수업의 경우 비교적 개념들만 짚는 정도지만 전공자용 수업의 경우 내용도 어렵고 분량도 훨씬 많습니다. 수강생에 따라 가볍고 편리한 사다리부터 제대로 땀 뺄 수 있는 사다리까지 다양하게 구비되어 있다는 이야기인데, 이런 게 흔하지는 않죠.

      모 사립대학교의 회계학 필수과목 지정도, 실제로 비전공자들을 위해 충분히 준비된 사다리인지 궁금합니다. 모기업의 행각으로 봐서 실제로는 일종의 “사상교육”이 아닐까 하는 의심도 드는 바입니다.

      어쨌든, 기초 경제학 / 회계원리 등의 지식을 어떤 식으로 교육해야 하는가에 대해서는 사회적인 논의가 될 만한 사안이라고 생각합니다. 귀한 의견 감사합니다. :)

    • 순수하게 경영학만 전공해서 할 수 있는 직업은
      경영컨설팅이나 회계법인(자격증이 있다는 전제에서)
      정도가 있다고 생각합니다

      전자의 경우에도 사실 순수한 경영학 전공자가 할 수 있는
      일이라고 보이지 않습니다.

      사실 소규모 자영업자를 위한
      경영 컨설팅이라고 해도 입지 조건에서 부동산 권리관계에 이르는 아주 세세한 부분까지 알고 었어야 컨설팅 료를 받을 수 있을 것이고

      SK텔레콤 사장님이 무선인터넷 기술에 대해 아무것도 모르고
      귀남 추론으로 도출한 몇 가지 마케팅 이론만 아는 사람에게
      비싼 컨설팅 료를 지급하지는 않겠죠

      제가 속해 있던 업계는 광고업계 였습니다
      그 업계에서도 결국 진정한 의미의 경영은
      카피라이터나, CF감독 같은 전문적인 능력을 가진 사람들이나
      가능하더군요. 경영학과만 나와서 할 수 있는 일은
      그냥 영업 뿐입니다.

      고어핀드님 같은 인재가 MBA등의 과정을 통해 경영학을
      배우시는건 정말 바람직한 일입니다만

      경영학 학사과정은

      1.회계 전문가
      2.금융 전문가 (이 또한 사실 최고의 자리는 수학전공자가
      포진하고 있지요)
      3.아까운 인재들을 대상으로 중간관리자를 양성하는 것

      그 이상 그 이하도 아니라고 보입니다.

    • 아… 그런 배경이 있었군요. 좋은 경험 나눠주신 것 감사합니다.

  2. 정말 좋은 글입니다.

    말이 난 김에, 그런 이유로 저도 함수형 언어를 (여지껏 하나도 해 본 적이 없음) 조금 익혀보고 싶은데, 물론 바보같은 질문인 건 알지만 그래도 ‘무난하게 할만한’ 언어는 뭐가 좋을까요. 문서 잘 되어 있고 구글링으로 도움 얻을 게 많고 윈도에서 쓰기 문제없고…

    아니면 말씀하신 그 수업은 무슨 과목이죠? 그 과목 강의자료를 보며 따라가볼까 싶기도.

    • 함수형 언어 중에서는 Haskell이 가장 괜찮지 않을까 싶습니다. 제가 경험한 중에서는 가장 간결하더군요.

    • 비슷한 경험을 하시고 싶으시다면, (솔직히 저희 수업은 지나치게 이론적이고 전공자 위주이므로) “컴퓨터 프로그램의 구조와 해석” 이라는 책을 공부하시는 걸 추천합니다. 실제로 해당 교수님이 감수하셨구요, 여기 나와 있는 내용과 연습문제가 아주 좋습니다.

      언어에 대해서는… 저는 scheme을 조금, 주로 ocaml을 배웠습니다. 후자의 경우 strong-type system을 기반으로 하기 때문에 프로그램에 대한 사전 검증이 훨씬 강력합니다. 실제로 교수님 연구 주제가 이쪽이기도 하구요.

    • 책 추천 감사합니다.

      이광근 교수님 수업이겠거니 생각은 했는데, 교수님 홈페이지에서 (전에 우연히 들어갔다가 값 중심의 프로그래밍 얘기 등 글 몇개 봤던 기억이) 봤던 언어 이름은 nML인데 막상 여기 리플은 또 haskell scheme ocaml 한 표씩입니까ㅋ 두 표 이상을 받는 게 있어야 제가 그걸 딱 집을텐데 어째서! ^^;;

      정작 저는 어제 ibm 사이트에서 “바쁜 자바 프로그래머를 위한 스칼라 입문”이라는 솔깃한 제목(왠지 속성으로 될 것 같은)의 시리즈가 있길래 그걸 먼저 보고 있습니다. JVM위에서 돌릴 수 있는 바이트코드를 만드는 Scala라는 언어로군요.

    • 핫핫, ibm developerworks가 좀 많이 명작이죠! 이건 집단협업을 해서라도 번역할 가치가 있음.

  3. 사다리 비유와 언어에 대한 설명이 참 좋았습니다.
    비슷한 생각을 하긴 했지만 어렴풋했었는데, 잘 정리된 것 같습니다.
    고맘습니다. ^^

    • 감사합니다. 사실 철학 경구에서 따온 비유였는데… 마음에 들어하시는 분이 많아서 가슴 뿌듯합니다. :)

  4. 오랫동안 RSS를 읽었왔는데 이번 글은 정말 댓글을 남기지 않을 수 없는 좋은 글입니다. (물론 다른 글도 다 좋았습니다만)
    예전 기타노 다케시 감독도 비슷한 의미의 말을 한 적이 있었지만 공부라는 것이 그저 공부 자체가 목적이 아니라 더 높은 곳으로 올라가기 위한 사다리라는 점은 정말 공감합니다.

    확실히 정치인들의 사고방식은 우리가 모르는 뭔가가 있나봅니다 ;;;;

    • 사실 같은 정치인이라 해도 다른 당에서는 저런 무개념한 공약을 넣지 않은 걸로 봐서 진보신당에 국한된 문제라고 보는 게 맞겠죠.

      청소 비정규직 노동자를 비례대표 1번으로써 국회에 진입시키겠다는 진보신당의 선거 방침은 그리 좋아하지는 않지만 나름 의미가 있다고 생각합니다. 하지만 이런 무개념한 내용을 넣은 걸 놓고 생각해보자면 정책이라는 걸 제대로 연구하고 내놓고 있는지 의심도 들고… 그래서 솔직히 좀 걱정입니다.

  5. 흠 전적으로 ㄱ도리 엔지니어입장에서 쓴 글이군염.

    취지는 좋으나 중고딩때 차라리 기타나 배우는게 인생에 더 좋을지도 몰라염.

    • 글을 읽어는 본 거냐 새꺄?

      고딩 때 공부 안하고 띵가띵가 거리면 틀림없이 너같은 새끼 되겠지.

  6. 전공자 입장에서 볼때, 진보신당의 입장도 그렇게까지 황당한건 아닙니다. 어쨌든 지금 고등학교 미적분학은 (기초 테크닉인 삼각치환도 포함하지 않는) 정말 어중간한 내용만을 가르치면서 비중은 또 엄청나게 크기 때문입니다.

    비유를 하자면 “컴공과 커리큘럼에서 함수형 언어를 제외하자”는 주장은 편협할지 몰라도, 컴공과 커리큘럼에서 함수형언어가 차지하는 비중이 3-40학점 정도 된다면, 비중을 좀 줄이고 다른 실용적인 과목으로 대체하자는 주장도 일리가 있는것이지요.

    장기적으로 본다면 고등학교 과정에서 미적분 부분 자체를 선택으로 돌리고 대신 선택하는 사람에 한해서 현재 대학에서 가르치는 수준의 미적분을 교육하는 방향이, 대다수의 수학전공자들이 찬성할만한 ‘정답 ‘에 가깝습니다.

    물론 이 정답을 바로 적용하기는 불가능하죠. 윗분이 언급한 사교육문제와 수능의 변별력 문제등 얽힌 문제가 너무도 많으니까요. 그러나 다시한번 지적하자면 진보신당의 정책 그 자체는 비웃을만한 접근은 아닙니다.

    그리고 전공자 입장에서 볼때는 “미적분보다는 음악이 더 인간적이다”는 관점이나 “미적분은 기술문명의 기본이므로 음악에 비할바가 아니다”는 관점이나 둘다 조악한 버젼의 낭만주의에 불과합니다.

    이상 최근 진보신당 교육정책 관련 일부 냉소적인 반응에 대한 수학도의 관전평이었습니다.

    • 의견 감사합니다. 사실 수학계 내부의 소수의견도 언급하고 싶었습니다만, 너무 양이 많아져서 생략했습니다.

  7. 사다리만 생각했던 제 자신이 부끄럽네요…
    비록 원했던 사다리를 타는 것은 불가능했지만,
    지붕으로 올라가기 위한 다른 사다리도 있는데 말이죠.
    꿈을 위해서 노력해봐야겠습니다. 좋은 글 잘 읽고가요.

    요즘 문득 고어핀드님의 영향으로 일기를 씁니다.
    쓸 게 없을 거라고 생각했는데 의외로 쓸 게 많더군요.
    그리고 하루가 지나서 다시 펼쳐보면 내가 아닌 듯한 오묘함.
    괜히 일기를 쓰라는 게 아니더군요 ㅋㅋ

    • 헛, 과찬의 말씀 감사합니다. 그리고 덧붙이자면 뭔가 기록을 남기는 습관은 아주 훌륭한 것이라고 생각합니다. 여기에 대해서는 조만간 글 하나 또 씁죠. ㅎㅎㅎ

  8. 요즈음 스스로의 사고 방식을 되돌아 볼 때, 20대의 10년이 끼친 영향을 서서히 알겠더라구요. 얼마나 이산된 방식의ㅋ 사고를 하고 있는지 놀라워하며, 이게 바로 전공의 힘이구나 생각했었죠.
    그리고 MBA 수업을 받으면서 경영학의 과목과 CS를 매칭시켜본 적이 있었는데, 당시 회계기초는 자료구조였습니다 ㅎㅎ

    • 제가 알기에, 사람의 사고 방식은 사춘기를 포함한 약 10년 사이에 거의 결정된다고 합니다. 현실적으로 이 시기의 끄트머리에 전공 공부를 하게 되니까, 그만큼 절대적인 영향을 미치는 것은 당연한 일이라 할 수 있겠죠 ㅎㅎㅎ

      * 그럼 시스템 프로그래밍은 어디에 해당할까요? 인사관리? 마케팅? ㅎㅎㅎ

    • 생산관리나 조직행위론과 연관지어 생각해 본 적이 있었네요 ㅎㅎ

    • 아하, 그러고보니 그게 경영학계의 “운영체제” 관련 과목들이군요.

  9. 이 글을 지금에서야 보내요. 굉장한 글입니다. 하나하나의 비유들이 ㄷㄷ;;; 제자들에게 꼭 들려주고 싶은 글입니다.

  10. 매우 흥미로운 글입니다. 그런데 저 말고는 다 아는 눈치니(OTL) 민망스럽습니다만, ‘함수형 사고’가 뭔지 궁금하네요…

Comments are closed.