cleanUrl: /idea/long/9-2
adsense: true
theme: light
pagePassword: false
cherry: false
utterances:
  repo: ProtossDragoon/ProtossDragoon

추상화(일반화) 능력 덕분에 발전한 인간

추상화는 복잡한 개념을 숨겨 간단하게 만드는 특징이 있고, 이러한 특징은 인간이 더욱 고등한 생각을 가능하도록 돕는다. 모든 생명체에는 수명이라는 것이 있다. 인간도 마찬가지다. 그래서 자신 인생의 모든 경험을 그대로 후대에 전달할 수 없다. 선대의 인간이 겪었던 경험을 그대로 100% 온전히 전달해야만 지식이 전수될수 있었다면, 후대의 지식은 선대의 지식과 1:1 대응이 될 뿐이다. 100년동안 겪은 경험을 전수받기 위해 100년동안 설명해야 한다고 생각해 보라. 인간은 여느 동물과 다를 바 없는 삶을 살았을 것이다. 그런데 왜 선대의 시행착오를 받아들이고 더 나은 세상을 구축하는 데 책 한 몇 권이면 충분할까? 내 결론은 추상이다. 인간은 경험을 일반화하거나 중요한 부분만을 추상화한 지식만을 빠르게 전달하면서 문명을 발전시켰다(from1:우리가 무언가에 이름을 부르는 것도 같은 이치이다).

이때 인간이 경험을 문자나 언어라는 매체를 통해 100% 전달하는 것이 아니라, ‘일반화’ 하거나 ‘중요한 부분을 추상화’ 시켜 지식을 전달한다는 성질(to7)은 귀납과 매우 비슷한 특징을 가진다. 귀납지식을 개척하는 동시에 사실을 숨기는 성질이 있는만큼 추상화된 정보를 기반으로 의사결정을 하거나 추상적인 개념을 바탕으로 사고를 발전시키는 일에는 큰 위험이 따르기도 한다(참고1).

Untitled

Untitled

Untitled

인간이 얼마나 많은 것을 추상적으로 받아들이고 있는지를 잠깐 구체적으로 고민해 보자. ‘도덕성’ 이나 ‘사랑’(to3:사랑이란 무엇인가)이란 구체적으로 무엇인가? 이렇게 구체적으로 이해하기 어려운 단어들조차 사람은 ‘추상적’ 으로 정의하고 그것을 빠르게 공유하고 습득해 버린다. 위 사진 속 교수님의 표현을 빌리면 ‘너무 깊어서 이해하기 어려운 것’ 조차도 추상적인 생각 덕분에 빠르게 이해할 수 있는 것이다.

하지만 이렇게 추상적으로 공유되는 생각에는 문제가 있다. 대부분의 사람이 ‘의미론적 표현’ 으로 이해하고 있다는 ‘도덕’ 이라는 것의 시대주류적 생각 또한 끊임없이 달라져 왔다는 것이 그 증거이다. 모두가 도덕에 대해 고민하지만 도덕이라는 것의 정의는 시간이 흘러가며 계속 변화하고 사람들은 서로 다툰다. 십자군 전쟁은 당시 도덕적이었을 것이고, 마녀 사냥도 당시에는 도덕적인 행위였을 것이고, 오늘날의 자본주의와 양성평등주의도 많은 사람들이 도덕적이라고 합리적이라고 여기고, 몇마디 조언을 잘못 건넨 기성세대가 꼰대라고 불리게 되는 현상도 ‘도덕’ 에 대해서 가지는 관점이 끊임없이 변화한다는 것을 증명한다.

추상화(일반화)된 표현은 이해하기 어렵다는 편견

다시 추상화 논의로 돌아와 보자. 추상화와 비슷한 의미를 가진 단어로 일반화(수학에서 자주 사용함)가 있다. 추상화와 일반화는 지식 확장의 측면에서 약간의 차이가 있곤 하지만 그것이 당장 중요한 논의는 아니다. 추상화된 표현이든 일반화된 표현이든 곧이곧대로 이해하기 어려울 수 있다는 측면에서 매우 비슷하다. ‘철학자들의 물음들이나 명제들은 대부분 우리가 우리의 언어 논리를 이해하지 못하는 데에서 기인한다.’ 따위의 추상화된 표현은 직관적으로 이해하기 어렵다. 수학의 일반식(to6:이상엽이 말한 일반화의 관점)도 마찬가지다. 수학의 일반화 과정을 통해 만들어진 간단한 수식은 해당 일반식을 증명하거나 분해해보지 않은 사람에게 더 이해하기 어려운 모습이 된다(참고3:동은이형의 의견).

고등학교 수학 지식 정도만을 갖춘 친구에게 다항식을 이해시켜야 한다고 생각해 보자. 위와 같이 일반화된 표현을 사용해서 가르칠 것인가? 나는 아니다. $ax+b, ax^2+bx+c, ax^3+bx^2+cx+d, ...$ 이런게 다항식이란다~ 라고 설명할 것이다. 일반화된 정보보다 일반화가 내포하는 구체적인 사례가 훨씬 직관적이다.

고등학교 수학 지식 정도만을 갖춘 친구에게 다항식을 이해시켜야 한다고 생각해 보자. 위와 같이 일반화된 표현을 사용해서 가르칠 것인가? 나는 아니다. $ax+b, ax^2+bx+c, ax^3+bx^2+cx+d, ...$ 이런게 다항식이란다~ 라고 설명할 것이다. 일반화된 정보보다 일반화가 내포하는 구체적인 사례가 훨씬 직관적이다.

추상화(일반화)한다고 무엇인가가 어려워지지 않아

그렇다고 추상적인 표현이 어려운 표현과 동치라는 것은 아니다(참고13). 애초에 추상화(abstraction)는 몬드리안이 그렸던 나무의 추상화(nonobjective art) 와 같이 '객체(object)가 아닌 분위기(mood)를' 표현하는 과정(참고6), 즉, '더 본질만, 더 특징만 남기려고 하는 과정' 이다(참고5). 테슬라의 수석 엔지니어 안드레 카파시(Andrej Karpathy) 는 이 과정을 ‘증류하는 과정’(distill) 라고 표현했고(참고7), 테슬라의 CEO 일론 머스크(Elon Musk)와 삼성의 회장 이건희는 추상화란 ‘본질에 대해 고민하는 과정’ 이라고 표현했다(참고8). 추상적인 표현이 이해하기 어려운 것은 일부 추상화 과정에서 나타나는 부수적인 현상일 뿐이다.

추상적인 표현도, 구체적인 표현도 무엇이 나쁘다고 할 수 없다. <얼마나 직관적으로 알아듣기 쉬운 표현으로 풀어가면서까지 비전문가들에게 와닿게 만드는 데 집중할 것이냐(구체적), 새로운 각도에서 좋은 표현을 정의하고 표현을 이해하는 전문가 집단 내에서 빠르고 정확한 소통을 할 것이냐(추상적)> 논의의 tradeoff 일 뿐이다.

몬드리안의 나무 추상화

몬드리안의 나무 추상화

이때 이 '전문가 집단' 이라고 함은, 어떤 추상화된 표현에 대해서 가지고 있는 관념이 매우 높은 유사성을 가지고 있는 집단을 의미한다. 몬드리안의 추상화 <나무> 를 온전히 이해하기 위해서 단순히 창밖의 나무를 쳐다보는 행위는 별 도움이 되지 않는다. 창 밖의 나무를 바라보며 저 나무들의 공통점을 무엇이라고 생각했는지, 내가 지금 바라보고 있는 나무뿐 아니라 온 세상의 나무들의 공통점이 무엇인지, 이것들을 하나의 도화지 안에 그려 넣으려면 어떻게 해야 하는지 먼저 고민해 보자. 그러면 당신도 해당 추상적 표현을 공유하는 ‘전문가 집단’ 이 될 수 있다. 그리고 나서 다시 작품을 바라보면 은은한 감동을 느낄 수 있다. 비슷하게 앞서 살펴 보았던 수학의 일반식을 이해하기 위한 노력을 이미 충분히 거쳤던 ‘전문가 집단’ 은 일반식을 그 자체로 이해할 수 있기 때문에 구체적인 표현을 사용하는 것보다 후렀니 효율적이라고 느낀다(to6).

python 에서 나무를 그려내는 방법

python 에서 나무를 그려내는 방법

C언어에서 나무를 그려내는 방법

C언어에서 나무를 그려내는 방법

컴퓨터 언어에도 추상화가 일어난다. 책 <컴퓨터 구조와 디자인(Computer Organization and Design MIPS Edition)>은 컴퓨터 설계자가 전기회로를 설계하는 일부터 우리의 삶을 윤택하게 만드는 프로그램이 작성되기까지의 전 과정에서 추상화된 개념을 이용해 많은 사람들이 컴퓨터의 전기 회로까지 이해하지 않고도 복잡한 프로그램을 작성할 수 있는 과정을 설명한다.

어셈블리보다 추상화된(high level) 언어는 C언어, C언어보다 추상화된 언어는 파이썬이라고 알려져 있다. 한편 그 반대 표현은 잘 알려져 있지 않다. 파이썬보다 구체적인(low level) 언어는 C언어, C언어보다 구체적인 언어는 어셈블리다. 이해를 돕기 위해 눈에 보이는 예시들을 가져왔다. 아래 등장하는 코드를 모두 이해할 필요는 전혀 없다. 동일한 기능을 만들기 위해서 어셈블리, C, 파이썬이 얼마나 많이 무섭게 생겼는지, 얼마나 구체적인지, 얼마나 추상적인지만 한번 비교해 보자. 나는 앞서 추상과 소통의 관계를 이야기했다. 과연 프로그래머라는 전문가 집단은 어떤 코드로 의사소통하는 것을 훨씬 선호할지 고민해 보라.