모든 일에는 속도보다 방향성이 중요하다고 생각한다.
비록 느리게 가더라도, 올바른 방향으로 갈 수만 있다면 오래도록 방향성을 고민하고 들인 많은 시간은 그만큼 가치가 있다고 생각한다.
요즘은 많은 취업준비생과 현업에서 일하는 사람들이 융합인재, 통섭적인재를 지향하며 프로그래밍에 많은 관심을 가지고 있다.많은 사람들이 저마다의 가치를 높이고자 노력하는 건 긍정적인 사회적 현상이라고 생각한다.
단, 목적을 이루기 위한 수단으로서만 프로그래밍을 접하는 게 아니라 조금 더 근본적으로 논리적인 사고를 요구하는 프로그래밍을 공부하는 동기와 재미를 깨닫고 사물의 원리를 깨달아가는 지식인으로서 성장해나가길 기원한다.
이 책을 읽고자 집어들었을 때, 가장 먼저 든 생각은 "아 이 책은 컴퓨터가 이해하는 프로그래밍이 아니라 사람이 이해할 수 있는 프로그래밍을 할 수 있게 도와줄 수 있는 책일 것 같다..."라는 생각이다.
어려운 코드를 어렵게, 컴퓨터가 이해할 수 있는 코드를 컴퓨터만 이해할 수 있게 코딩하는 건 오히려 쉬운 일이라고 생각합한다.
정말 어려운 것은 어려운 코드를 쉽게, 컴퓨터가 이해할 수 있는 코드를 사람도 이해할 수 있게 코딩하는 게 정말 어렵고 고난한 일이라고 생각한다.
이 책을 통해 사람을 생각하고, 사람이 이해하기 쉬운 코드를 만드는 사람들이 많아질 거라고 생각하고 그런 사람들에게 많은 도움을 줄 것이라고 확신한다.
이 책은 11개의 장과 2개의 부록으로 구성되어 있다.
1번째 장은 프로세스를 사용한 프로그래밍이 어렵다고 느껴지시는 분들을 위해 기본적인 수학적 사고를 소개하는 장이다.
2번째 장부터 6장까지는 물리와 관련된 기본적인 내용을 설명하고 있으며, 2번째 장에서는 벡터라는 요소에 대해 설명하고 있다.
3번째 장에서는 힘과 가속도의 관계를 설명하고 있다.
4번째 장에서는 삼각법 혹은 삼각형의 수학이라고 하는 것을 활용한 사인 함수와 코사인 함수를 살펴보며 진동에 관해 설명하고 있다.
5번째 장에서는 컴퓨터 그래픽에서 일반적으로 사용되는 파티클 시스템이라는 기술을 코드로 표현하는 방법에 대해 설명하고 있다.
6번째 장에서는 지금까지 설명한 각각의 물리 엔진을 살펴보며 장 단점을 알아보고 왜 사용해야 하는지 알아보도록 한다.
7번째 장부터는 조금 내용이 바뀐다.
6장까지가 움직인이나 물리현상을 구현하는 무생물적 방법을 살펴보았다면, 7장에서부터는 객체 스스로가 내부에서 어떤 행동을 할 지 결정하는 객체에 대해 설명한다. 이 부분이 많이 이해하기 힘들었지만 굉장히 흥미있는 부분이었다.
8장부터는 시스템과 알고리즘에 관한 이야기로써, 8장은 세포 오토마타라는 새로운 용어에 대해 설명하고 있다.
9장에서는 기하학과 관련있는 프랙털 이라는 용어에 대해 설명하고 있다.
10장에서는 변수에 대해 설명하며, 유전 알고리즘에 대해 관련성있게 설명하고 있다.
마지막 11장에서는 객체가 어떻게 학습하고 어떻게 학습한 내용을 기반으로 의사결정을 하는지 인간의 뇌(뉴럴 네트워크)와 빗대어 설명하고 있다.
자연현상을 프로그래밍으로 코드화하고 표현하는 일련의 작업들이 다소 어색하고 어떤 의미가 있을 지 계속 갸우뚱하게 하면서도 신기한 내용의 연속이었다.
또한 제가 프로그래밍의 만들어지게 된 취지나 자연현상의 기원에 대해 궁금증을 갖게 된 일은 기대하지 않았지만 상당히 고무적인 성과라고 생각한다.
부록에서는 "프로세싱"이라고 하는 책에 나온 이론들을 실습해 볼 수 있는 프로그램을 설치하는 방법과 간단한 사용법이 가이드되어 있어서 눈으로 읽고 머리로 떠올리는 것 뿐만 아니라, 손으로 입력하고 코드로 출력되는 실습을 병행할 수 있어서 좋았다.
비록 이 책이 많이 어렵고, 추상적인 자연현상을 정적인 코드로 표현하는 데는 한계가 있다고 생각한다.
하지만 전공자 뿐 아니라 비전공자에게 있어 시뮬레이션을 구상하고, 수학이나 물리법칙을 가지고 구현하고 실행결과를 반복해서 원리를 깨닫게 하는 방법은 어떤 방법보다 논리적이고 효율적으로 연구에 몰두할 수 있게 기반을 만들어줄 수 있다고 생각한다.
방향성을 제대로 세우기 위해 책을 집어들었지만, 원리를 꺠우치는 재미와 자연현상을 탐구하고 싶은 욕구가 생기게 해 준 이 책이 무척이나 고맙게 느껴진다.
깊지 않은 이해와 짧은 리뷰시간이었지만 앞으로도 반복과 결과분석을 통해 어제보다 조금 더 나은 내일을 꿈꾸며 공부해보고자 한다.
사실 어떻게 보면 가장 단순한 (프로그래밍)책일지도 모르는 이 책처럼 저도 언젠가는 가장 단순할 지 모르지만 초보자들의 마음을 관통하는 그런 책을 쓰고 싶다.