컴퓨팅의 정수 - 컴퓨팅 사고력을 키우는 100가지 기술 문제
우쥔 지음, 신준기 옮김 / 제이펍 / 2023년 8월
평점 :
장바구니담기


『컴퓨팅의 정수』는 컴퓨팅 사고력을 키우는 199가지 기술 문제로 컴퓨터 과학에 대한 이해와 함께 IT 기업의 면접을 준비할 수 있는 책입니다.



단순한 개발자를 넘어 타인에게 긍정적인 영향을 주는 최고의 개발자가 되기위해서 무엇이 필요할까요? 이 책을 통해 컴퓨터의 근본적인 원리를 깨우치면서 자신감을 가지고, 저자가 제시한 예제와 사고력 문제를 차근차근 해결을 한다면 가능할 것입니다.







책은 총 11장으로 구성되어 있습니다. 

책을 본격적으로 시작하기 전에 컴퓨터의 정의부터 시작하여 컴퓨터의 발전 과정을 통해 컴퓨팅의 본질에 대해 설명합니다. 이후 1장에서는 Big O 개념, 2장에서는 재귀, 3장에서는 추상화, 4장에서는 분류, 5장에서는 그래프, 6장에서는 분할 정복 알고리즘, 7장에서는 스토리지(저장), 8장에서는 분산 컴퓨팅, 9장에서는 상태를 추상화하는 도구인 등가성과 상태간의 연결을 설정하는 인과관계를 다루고, 10장에서는 확률론적 알고리즘, 11장에서는 실전 면접에서 추려낸 8개의 문제를 풀어봅니다.


책에서 인상 깊게 읽은 부분입니다.


좋은 개발자가 되려면 다음 네 가지 조건이 필요하다.

  1. 컴퓨터 과학이 할 수 있는 일과 할 수 없는 일을 구분한다.

  2. 어떤 중대한 발명이라도 전제 조건이 필요하다.

  3. 컴퓨터 과학을 깊이 있게 이해해야 한다.

  4. 컴퓨터 과학의 예술을 배워야 한다.

시작하며 XXIV


세상의 모든 문제는 수학 문제가 아니다. 모든 수학 문제를 컴퓨터로 계산할 수 없다. 튜링의 위대함은 전자 컴퓨터가 존재하지도 않았을 때 계산 가능한 문제의 경계를 정의했다는 사실에 있다.

p.20


컴퓨팅 사고는 사람들이 일반적으로 생각하는 방식과 다르다. 일반적으로는 작은 것에서 큰 것, 가까운 곳에서 먼 곳으로 인식을 확장하는 데 익숙하다. 그러나 컴퓨팅 사고는 재귀적 사고다. 위에서 아래로, 전역적에서 부분으로 순환적인 분해를 강조한다. 

p.81


컴퓨터 과학의 첫 번째 중요한 개념이 ‘재귀’라면 두 번째로 중요한 개념은 ‘분할 정복 알고리즘’이다. 분할 정복 알고리즘의 이해 수준과 실무 적용 수준은 개발자의 컴퓨터 과학 소양을 측정하는 척도다.

p.176


컴퓨터가 자동으로 할 수 있는 것은 계산밖에 없다. 어떻게 계산하고 무엇을 계산하며, 구체적인 문제를 어떻게 계산 문제로 만들 것인가는 개발자가 해결해야 할 문제다.

p.272


단순한 개발자와 컴퓨터 공학자 사이에는 큰 차이가 있는데, 이는 주로 이론의 토대에서 드러난다. 아무리 이론을 많이 배우고 시험에서 좋은 점수를 받아도 새롭고 복잡한 문제를 만났을 때 작고 단순한 문제로 분해하지 못한다면 전문가라고 할 수 없다.

p.289


책의 장점은 다음과 같습니다.

개발자의 능력에 따라 7개의 등급을 나누고 예제로 등급에 따른 사고방식의 차이와 해법을 알려주면서 자신의 수준을 파악할 수 있었습니다. 

알고리즘에 대한 설명과 자세한 그림으로 이해를 돕고, 심화 사고 문제와 부록으로 더 배우고 싶은 부분을 채울 수 있습니다. 

문제에 대한 잘못된 답을 제시한 대다수의 접근 방법을 제시하고 다음으로 정답을 제시하면서 면접관의 입장에서 지원자의 무엇을 평가하려는지 알아보는 것이 인상적이었습니다. 

문제를 해결하는 데에 필요한 마인드를 함양할 수 있습니다. 문제를 만났을 때 긍정적인 마인드가 중요하다는 것을 강조하며, 문제를 해결하기 위해서는 문제를 대하는 태도에 따라 달려있다는 것을 알 수 있었습니다.







추천 독자로는 먼저 컴퓨터 분야 종사자입니다. 이 책을 읽고 더 발전하여 커리어의 한계를 부수는 데에 도움을 줄 것입니다.

다음으로 IT에 관심이 많은 독자로 컴퓨터 과학의 사고방식을 이해하고 싶은 사람에게 추천합니다. 자세한 알고리즘과 문제 풀이에서 벗어나 책의 흐름에 따라 나오는 재귀, 분할 정복과 같은 컴퓨터 사고에 집중한다면 컴퓨터 과학의 이해에 도움이 될 것입니다. 

마지막으로 컴퓨터 과학을 공부하는 사람입니다. 저자의 자연어 처리와 웹 크롤링 업무를 담당하면서 터득한 노하우와 행렬 곱셈과 맵리듀스, 구글 브레인, 스토리지에 대한 설명을 통해 컴퓨터 과학을 이해하고 과학적인 방법을 습득할 수 있을 것입니다.



책을 읽으면서 나왔던 2권의 도서를 추천하고 싶습니다. 

첫째는 《컴퓨터 프로그래밍의 예술 1》(도널드 커누스 지음,  류광 옮김, 한빛미디어, 2006)입니다. 해당 책으로 알고리즘을 배운 빌 게이츠는 훌륭한 프로그래머가 되고 싶다면 이 책을 읽을 것을 추천했다고 합니다. 하지만 이 책의 저자인 도널드 커누스는 “이 책을 읽을 수 없다면 프로그래머가 되지마시오”라고 했다고 합니다. 해당 책은 도널드 커누스 교수의 역작으로 알고리즘을 좀 더 깊게 파고들 필요가 있는 독자를 위해 모든 알고리즘의 수학적 원리를 아주 상세하게 기술하고 있습니다. 이 책을 포함하여 총 4권이 번역되었습니다.

둘째는 《Introduction to Algorithms》(토머스 코멘·찰스 레이서손·로날드 리베스트 ·클리포드 스타인 지음, 문병로·심규석·이충세 옮김, 한빛미디어, 2014)입니다. 알고리즘에 대한 부연 설명을 할 때 참고 도서로 나왔습니다. 컴퓨터 공학과 대학교수인 저자들이 모여 쓴 책으로,  다양한 알고리즘을 심도 있게 다룹니다.


이 책을 평가하자면 ‘맛있게 매운’ 책입니다. 자세한 이론적 설명과 실전에 맞춘 어려운 예제가 잘 어우러졌다고 생각합니다. 높은 등급의 개발자가 되기 위해서는 다양한 알고리즘과 컴퓨팅 사고력에 대하여 스스로 공부하고 발전하고자 하는 동기부여가 되어 있어야 할 것입니다. 책에 나오는 문제를 통해 사고력을 높인다면 개발자, 엔지니어로서의 취업뿐만 아니라 인생의 문제를 슬기롭게 해결하는 자신을 발견할 수 있을 것입니다.


해당 서평은 출판사로부터 책을 제공받아 작성되었습니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo