코딩으로 풀어가는 수학
창조성이란 무엇일까? 그것은 어떻게 발현되고, 증진시킬 수 있을까?
"생각의 탄생 (Spark of Genius)"이라는 책에서는 천재들이 창조성에 두각을 나타내는 생각도구가 있고, 그것을 다음 13가지로 분류하였다.
이중에서 3가지만 꼽자면 나는 추상화, 유추, 통합을 들고 싶다. 특히 유추(Analogy)하는 능력이 매우 중요하다고 생각한다.
학교에 다닐 때는 수학은 좋아했지만, 영어, 국어는 재미가 없었다. 어학에는 소질이 없다고 스스로 생각했다. 코딩을 배우면서는 시간가는 줄 모르고 그 재미에 빠졌었던 적이 있다.
대다수의 사람들이 나와 비슷한 생각을 가질 것이다. 나는 어떤 것은 잘 하는데, 어떤 것은 잼병이다라고.
과연 수학, 영어, 국어, 코딩이 얼마나 다를까? 차이점을 찾으려면 끝도 없을 것이고, 유사점을 찾아 볼 수 없을까? 단순 유사성(Similarity)이 아니라, 거기서 한걸음 더 나아가 유추를 통해 한 분야에서 배운 지식을 확장하고, 궁극에는 통합할 수 없을까?
그 시작점은 각 분야의 특징을 추상화 하는 것이 될 것이다.
우선 언어라는 관점에서 국어, 영어, 수학, 코딩(C++)을 비교해 보자. 하기 테이블은 가장 기본적인 것들을 나열해 본 것이다. 언어(국어, 영어)에서의 추상화, 즉 특정 단어를 들으면 떠오르는 의미나 그것에 얽힌 많은 배경 지식 및 생각들은 수학에서는 함수나 공식, 코딩에서는 함수나 클래스와 유사하다. 이러한 배경지식 및 추상화된 단어를 잘 사용할 줄 모르면 언어 능력이 떨어진다고 이야기 한다. 저차원과 고차원, 저급과 고급을 나누는 기준이 된다. 느낌이나 애매한 문장이 아닌 정량화가 가능한 문장 또는 참/거짓을 판별할 수 있는 문장, 어떤 일을 진행하는 문장 등을 예를 들어 생각해 보자.
언어는, 특히 문자로 기록되는 언어는 첫째로 문자(훈민정음, 알파벳, 아라비아 숫자, ...)가 있어야 하고, 두번째로는 최소의 의미를 가지는 문자들의 단위이 단어(Word)가 있어야 한다. 이 단어들은 그 역할에 따라 명사, 동사, 형용사 등으로 나뉠 수 있다. 세번째로 이런 단어들을 어떻게 나열하여 원하는 뜻을 전달할 수 있는 문장(Sentence)을 구성하는 문법(Grammar)이 있어야 한다. 마지막으로 효율성을 위해 문장을 하나의 단어와 같이 취급하여 문장을 문장내에 포함시키거나, 문장과 문장을 연결하는 방법들이 있어야 한다. 영어에서는 대명사, 접속사, 관계대명사 등등이 여기에 해당한다. 수학에서는 함수가 그런 역할을 하고, 코딩에서는 클래스와 함수가 있다.
코딩에 익숙지 않은 분들은 아직은 잘 이해가 되는 않을 수 있는데, 굳이 지금 이해하려고 하지 않아도 된다. 실제 해보지 않고 남이 내린 결론을 머리로만 받아들이려고 할 필요는 없다. 이것은 어떻고 저것은 저렇다느니 하는 말들은 굳이 외우려 할 필요가 없다. 추상화는 개별적인 대상에 대한 깊은 이해가 없으면 안되기 때문이다.
어쨌는 결론을 내리자면, 국어, 영어, 수학, 코딩은 유사성이 많기 때문에, 하나에 통달하면 유추를 통해 다른 것들도 잘 해낼 수 있다고 생각한다.
참고할 만한 글들
댓글
댓글 쓰기