if (나는 자바의 상속과 인터페이스에 대해 잘 안다) {
openTheBook(390p);
readThisReview(ch.2);
} else {
readThisReview(ch.1);
}
...
ch.1
왜 북리뷰를 하면서 코딩을 하고 있냐고요?
...
프로그래밍이 "대화"라고 생각하기 때문입니다.
저는 고교 문과, 대학 호텔경영이라는 배경에서 프로그래밍이라곤 복수전공, 심지어 교양에서도 접해본 적이 없던 제가 직업훈련으로 6개월간 프로그래밍을 공부하며 느낀 바, 프로그래밍은 컴퓨터와 나누는 대화였습니다. 언어가 다른 두 사람이 서로의 언어체계를 이해하고 단어를 찾고 문법을 맞추어 뜻을 전달하고자 노력하듯 프로그래밍도 컴퓨터에게 자신의 의사를 전달하는 소통의 과정이었습니다.
알고리즘은 표준국어대사전에서는 "어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합 (후략)" 이라고 기술하고 있으나 제가 느낄때에는 행동과 생각의 흐름을 규칙으로서 나타낸 것이라고 생각합니다. 따라서, 우리가 너무나 자연스럽게 생각하고 행동하는 그 흐름을 규칙으로 풀어낸 알고리즘을 바탕으로 컴퓨터가 알아들을 수 있는 언어를 사용하여 전달하는 일련의 과정이 프로그래밍이라고 느낍니다.
언어의 첫걸음은 단어다.
영어를 처음 배울 때 "How are you?"부터 배웠나요? 그런 분이 있다면 존경합니다. 우리는 대부분 카드 앞면에는 그림, 뒷면에는 글자 식으로 된 카드를 뒤집어가며 어떤 존재 혹은 개념이 어떤 단어로 약속되어있는지를 가장 먼저 배웠습니다.
그래서 이 책도 환경설정에 대한 내용 이후 가장 먼저 변수와 상수에 대해 가르칩니다. 프로그래밍에서 단어에 해당하는 변수와 상수를 알아야 문장인 조건문, 반복문 등의 단계로 넘어갈 수 있으니까요. 우리가 주어, 동사를 배우듯 변수의 type(논리형, 문자형, 정수형, 실수형)도 학습하는 것입니다. 빨리 뭔가 입력하고 출력하고 싶어 죽겠는 분들, 어학을 공부하듯이 마음을 먹고 접근을 해보세요.
객체지향프로그래밍이라는 사상
단어와 기본적인 문장구조와 문법을 배웠다면 이제는 글을 쓸 시간입니다. 인류는 단어로 소통하는 시대를 지나 간단한 문장으로만 소통하던 시대도 넘어 "글"과 "완성된 의견"이라는 더 높은 차원의 소통을 해나갑니다. 그러기 위해서는 "글의 주제"를 이해할 수 있는 통찰과 이해가 필요하지요.
이 통찰과 이해를 위해서 두 화자(나와 컴퓨터)에게는 서로가 세상을 바라보는 시선에 대해 이해하는 것이 필수가 됩니다. 그리고 자바라는 언어로 컴퓨터와 소통을 할 때에는 그 시선은 객체지향적이라고 할 수 있습니다.
객체지향은 행동과 그 행동의 순서만이 중요하던 절차적인 프로그래밍에서 나아가 해당 행동의 주체나 대상이 되는 객체(object)를 다루는 프로그래밍이라고 볼 수 있습니다. 책을 인용하자면 "객체지향이론의 기본개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'"라고 설명하고 있습니다.
잘 모르겠다고요? 네. 그래서 책에서도 이 내용이 무려 230페이지에서 만나보게 되는 내용입니다. 어려운게 당연하겠지요. 단어부터 배우세요. (그럼에도 개념적인 내용을 꼭 더 쉽게 알고싶다면, 네이버 지식백과에서 '객체지향프로그래밍'을 검색하신 후 <천재학습백과 초등 소프트웨어 용어사전>의 설명을 참고하시기 바랍니다.)
...
ch.2
스타크래프트를 추억하는 당신이 이 책에 보낼 찬사
...
책의 390페이지를 펴세요. 그리고 읽습니다. 다읽고나면 박수를 치도록 합니다!
자바에 대한 개념적인 접근과 실습을 병행할 수 있도록 돕는 이 책의 장점은 실로 390페이지의 인터페이스의 장점을 설명하는 페이지에서 극대화 됩니다. 저는 여전히 이 책의 하이라이트는 바로 이 부분이라고 생각합니다.
스타크래프트를 떠올리는 독자는 어째서 상속관계와는 별도로 인터페이스를 통한 추상을 사용하는 것이 필요한지 정확하게 간파할 수 있습니다. SCV와 Dropship은 GroundUnit과 AirUnit으로 나뉘지만 Repairable을 구현하여 수리될 수 있다는 점을 공유할 수 있다! 정말 명쾌한 설명이 아닐 수 없었습니다.
...
ch.3
수학의 정석이 아직도 사랑받는 이유에 대하여
...
우리는 어떤 분야의 가장 정통한 책을 <OO의 정석>이라고 이름붙입니다. 가장 대표적인 것이 <수학의 정석>. <수학의 바이블>, <개념원리>와 같은 책들이 나와도 언제나 견고하게 <수학의 정석>이 자신의 자리를 유지하는 이유는 정석이 수학학습의 큰 뼈대를 언제나 견고히 다지는 학습법을 유지하고 있기 때문일 것이지요. 이는 수학이라는 새로운 개념을 탐구하기 위한 독자와의 효과적인 소통을 하고 있다고도 생각해볼 수 있습니다.
<Java의 정석> 또한 괜히 이 타이틀을 얻은 것이 아닙니다. 책 제목에 대한 법적보호와는 별개로 그 타이틀의 무게를 견디느냐는 다르지요. 하지만 저는 이 책이 그 무게를 충분히 견딜 수 있다고 생각합니다. 자바를 공부하는 큰 뼈대를 견고히 다지고 있기 때문입니다. 게다가 초심자부터 중급, 고급 스킬을 가진 독자들까지 저자의 표현과 설명을 토대로 개념을 보다 견고히 다지며 언어를 공부할 수 있다는 점에서 독자와 효과적인 소통을 하고 있다고 보이기 때문입니다.
마치며,
<Java의 정석>은 실용서입니다. 하지만 좋은 개념서이기도 하며 좋은 학습의 토대를 제공해 줄 좋은 책입니다. 컴퓨터와의 소통의 시작과 깊은 이해를 위해 Java를 공부해볼 생각이라면 꼭 읽어보세요. 숨은대화법을 찾으실 수 있으실테니까요.
