-
-
C++로 배우는 프로그래밍의 원리와 실제
Bjarne Stroustrup 지음, 류광 옮김 / 대웅 / 2010년 8월
평점 :
품절
아침마다 틈나는대로 읽어서 3개월 걸린 끝에 다 보았다. 읽은 것은 지난 달 일이지만, 피일차일 미룬 끝에 이제야 쓰게 된다. 기술 서적이 소설도 아니고 한번 읽은 것 따위로는 어림도 없지만... 어쨌든 티끌모아 태산을 간만에 실천해봐서 기뻤다. 다 읽고 나서 들은 생각은 이렇다. '대학 때 이걸로 공부했으면 얼마나 좋았을까'. 프로그래머를 지망하면서 내가 봤던 책은 하나같이 문법이나 테크닉을 전달해주는데 바쁜 책이었다. 지금 떠올리니 내 마음도 급했지만. 이 책을 보면 생각을 하게 된다. 특히 연습 문제. 워낙 엄청난 분량 - 1300쪽이 넘는다 - 탓에 진득하게 훈련 과제/복습/연습 문제까지 푼다면 1년 안에 끝낼 수 있을까 싶을 정도로 많다. 게다가 그 깊이란. 또한 부가적으로 얻은 것이 있다. 복습 문제를 풀어보면서, 내가 책을 훑어서 읽는 습관이 있다는 걸 알게 되었다. 이 책을 읽은 후부터는 좀 더 신중히 읽으려고 노력하게 되었다. 괜찮은 보너스이다.
복습 문제 이야기로 돌아가보자. 처음에는 이런 것들로 시작한다. 답은 최대한 책에서 찾고, 없으면 내 주관대로 썼다. 저자도 밝혔지만 대충 뒤져도 쓸만한 면접 문제가 너무도 많다.
- 소프트웨어란 무엇인가? 답: 컴퓨터를 원하는 목적으로 동작시키는 코드
- 소프트웨어 개발자는 어떤 모습인가? 답: 다른 사람과 의사소통하면서 의도대로 동작되는 코드를 작성하는 사람
- '프로그래밍은 이해이다'가 뜻하는 바는 무엇일까? 답: 프로그램 작성은 문제를 해결하는데 목적이 있고, 문제를 이해하는 것이 프로그램을 잘 작성할 수 있게 하기 때문이다
후반부로 가면...
- 회귀 검사가 무엇이고 왜 중요한가? 답: 과거에 오류를 찾는데 쓰인 검사. 시스템의 행동이 합의를 본 적절한 행동으로부터 멀어지는 일을 막는다
- 클래스 객체의 기본적인 복사 의미론은 무엇인가? 답: 자료 멤버들을 모두 복사한다
- 일반적 프로그래밍과 객체지향적 프로그래밍은 어떻게 다른가? 답: 전자는 다양한 인수들의 형식에 의해 작동하는 코드를 만들고 컴파일 타임에 실행할 함수를 선택한다. 후자는 클래스와 가상 함수를 이용해서 런타임 시점에 실행할 함수를 선택한다.
정말 훌륭한 내용들이 너무나 많다. 분량이 대단한 관계로 모든 내용을 머리에 담아둘 수 없는 것이 안타까울 뿐이다. 읽을 수록 내가 그의 열렬 신도가 되가는 이유를 발견했다. 이 책은 정말 훌륭한 교재이며, C++이 아니더라도 프로그래머를 지향하는 사람에게 성경과 같다고 주장하고 싶다. 이 책을 사서 오랫동안 묵혀놨다고 해도, 1장 만은 꼭 보길 바란다. 모든 장이 빼놓을 구석없이 죄다 훌륭하지만 말이다. 그가 생각하는 좋은 프로그래머의 모습에 나 또한 그렇게 되리라 다짐했다... 인용해본다.
24쪽 하단: 현대적인 소프트웨어 개발은 팀 활동이므로, 다른 사람들과의 상호 작용을 선호하는 사람들이 그렇지 않은 사람들보다 프로그래머의 역할에 더 잘 적응한다. 이는 프로그래머에게 사교성과 의사소통 능력이 필수이며, 현실 프로그래머들은 미신 속의 프로그래머들에 비해 그런 것들에 더 큰 가치를 둔다는 뜻이다. (중략) 특히, "내가 신경 쓰는 것은 컴퓨터와 프로그래밍 뿐"이라는 태도를 가진 사람은 프로그래머가 아닌 동료들과의 의사소통에서 어려움을 겪게 된다. 그런 사람은 사람들과의 상호 작용(이는 곧 삶이다) 중 최고의 부분을 놓치게 될 뿐만 아니라 나쁜 소프트웨어 개발자로 전락하고 만다
너무나 멋진 문장이다. 이런 멋진 구절이 너무나 많아 모두 인용할 수 없는 것이 안타까울 뿐이다. 나는 한 가정의 가장이므로, 이걸 우리 집안의 주기도문으로 채택하고 싶을 정도이다. 자식들은 짜증낼지도 모르겠지만. 인생을 살면서 많은 것을 직접 몸으로 배웠지만, 이런 멋진 책으로 내 학창 시절을 시작했으면 어땠을까. 아마 포인터 때문에 프로그래머 생활을 늦게 시작하는 일은 없었을텐데... 괜시리 읽는 내내 아쉬웠다. 허나, 내가 살아있는 동안 이런 멋진 책이 번역되어 쉽게 읽을 수 있는 것에 기쁘다. 또한 원서로 읽어보고 싶다. 그의 필력을 직접적으로 느끼면서 전율하고 싶다. 틈나는 대로 연습 문제를 풀어보려 한다. 예전의 땀나게 공부하던 시절을 떠올리며 말이다.