"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."
그림으로 개념을 이해하는 그로킹 알고리즘
이 책은 Etsy의 소프트웨어 엔지니어인 Aditya Y. Bhargava가 2016년에 낸 책입니다.
이분의 블로그를 가보니 직접 그린 삽화를 이용한 아티클들이 눈에 띕니다.
지금 리뷰하는 책의 경우 8년 만에 나온 개정판으로서, 기존 내용을 보완하고 최신 트렌드, 추가 알고리즘 등이 개선되었다고 합니다 .
Grokking이란?
Grokking(그로킹)은 단순한 이해를 넘어, 어떤 개념을 완전히 터득하고 직관적으로 깨닫는 것을 의미합니다. 단순히 정보를 외우는 것이 아니라, 그것이 자연스럽게 내 것이 되어 자유롭게 응용할 수 있는 상태를 뜻합니다.
이 개념은 **로버트 A. 하인라인(Robert A. Heinlein)**의 SF 소설 "낯선 땅에서 온 이방인(Stranger in a Strange Land)" 에서 유래했습니다. 소설 속에서 'grok'이라는 단어는 완전히 하나가 되어 이해하는 것을 의미하는 외계 언어에서 온 말입니다. 이후 프로그래밍, 학습, 문제 해결 등 다양한 분야에서 사용되며 널리 퍼졌습니다.
이 책은 Grokking을 표방하는 만큼, 알고리즘을 학습할 때 아래 세 가지를 확실히 도와줍니다.
- 직관적인 이해
- 경험을 통한 체화
- 개념 간의 깊은 연결
Grok-3: 최근 핫한 AI 모델도 여기서 유래!
최근 AI 업계에서 핫한 Grok-3는 일론 머스크가 설립한 xAI에서 개발한 인공지능 모델입니다. Grok이라는 이름도 그로킹(Grokking)에서 따온 것으로, AI가 단순히 정보를 출력하는 것이 아니라, 진짜로 이해하는 AI가 되길 바라는 철학이 담겨 있습니다.
즉, Grok-3는 단순한 데이터 처리 엔진이 아니라, 정보를 깊이 있게 이해하고 유연하게 활용하는 AI를 목표로 하고 있죠. 이처럼 그로킹은 인간뿐만 아니라, AI 발전에도 중요한 개념이 되고 있습니다!
자료구조 혹은 알고리즘 서적을 좋아하시나요?
저는 알고리즘 관련 책을 좋아하지 않습니다. 알고리즘은 좋아합니다. Leetcode 같은 곳에서 알고리즘 문제 푸는 건 재밌죠. 문제를 해결하고 실행했을 때의 그 쾌감을 느낍니다. 하지만 알고리즘 관련 책들은 뭔가 알고리즘 대회에 나가서 푸는 데 초점을 두고 있는 듯하고, 실제로 코드 구현 및 성능 최적화에 초점이 맞춰져 있습니다. 자료구조 책은 너무 따분합니다.
또한 현업에서 알고리즘을 사용해야 할 때는 직접 구현하는 일이 많이 없기도 합니다. 왜냐하면 이미 구현 및 최적화되어 있는 라이브러리를 쓰기 때문입니다.
하지만 이 책은 제가 가지고 있던 편견들을 깨기에 충분했습니다.
이런 분들에게 추천합니다
이 책은 반대로 그로킹이라는 제목처럼 코드에 2를 쓴다면 설명과 예시에 8을 할애합니다. 간단한 파이썬 구현 코드는 있지만, 어떻게 구현하느냐와 최적화보다, 언제 어디서 어떤 상황에 쓰는지에 대해 더 많이 설명하고 있습니다.
그런 이유로 아래와 같은 대상에게 추천합니다
- 초보 개발자
- 현업에 필수적으로 사용되는 알고리즘 및 문제 해결 방식이 대부분 있습니다.
- 자료구조, 알고리즘에 대해서 쉽게 이해하고 싶은 개발자에게 적합합니다.
- 복습하고 싶은 Intermediate, Senior 개발자
- 내가 알고 있는 지식을 복습할 수 있습니다.
- 비유가 너무 찰떡입니다. 알고 있는 지식을 누군가에게 설명하기 쉽지 않은데, 더 쉽게 설명할 수 있는 방법에 대한 통찰을 얻을 수 있습니다.
- 알고리즘에 관심이 있는 일반인
- 이해하기 쉬운 삽화와 예제 제공
- 연습문제로 복습 가능
또한 머신러닝 공부할 때 자주 볼 수 있는 KNN이나 선형회귀 같은 알고리즘 및 Cosine Similarity 등도 가볍게 다루기 때문에 굉장히 흥미롭게 볼 수 있습니다.
삽화와 비유들
다시 책으로 돌아와서, 이 책은 이해를 돕기 위한 수많은 비유와 삽화로 이루어져 있습니다. 그리고 실제로 해당 알고리즘을 자주 사용하는 Real world examples도 이야기 합니다.
실제 스텝별 결과를 보여줍니다.
코드는 간단한 파이썬 코드를 사용하는데, 코드가 페이지의 전반을 할애하는 다른 책들과 달리 진짜 간단하게 표현합니다.
log(n)을 종이접기로 표현하고, 유머도 놓치지 않습니다. 파인만 알고리즘 보고 실소가 ㅋㅋ.
챕터 리스트
어떤 내용을 다루는지 간단하게 책의 구성을 소개합니다.
- 알고리즘 소개
- 선택 정렬
- 재귀
- 퀵 정렬
- 해시 테이블
- 너비 우선 탐색
- 트리
- 균형 트리
- 다익스트라 알고리즘
- 탐욕 알고리즘
- 동적 프로그래밍
- KNN 알고리즘
- 더 공부해야 할 것들
보너스 챕터
사실 12가지 챕터만으로도 중요한 알고리즘을 다룰 수 없기 때문에 마지막 챕터인 "더 공부해야 할 것"에서는 중요한 10개의 자료구조 및 알고리즘을 소개합니다.
용어의 영어 명칭도 잘 보여주고 있습니다. 예전 책들은 한자로 번역된 용어들만 써있어서 머리가 지끈지끈해지는데 최근 기술서적들은 아래와 같이 잘 보여줘서 좋습니다.
마치며
책을 보다 보면 학생 때 자료구조 수업에서 이 책을 봤다면 더 빠르게 이해했을 텐데!라는 생각이 듭니다. 물론 이 책의 초판이 16년도에 나온 거라 시기가 안 맞지만요. ㅋㅋ