6 … 학습 과정의 구성
247
근원을 따라가는 일은 중요한 연습이며, 앞으로 새로운 것을 학습할 때 많
은 도움을 주는 습관이 될 것이다.
튜토리얼을 읽을 때는, 복사해서 갖다 쓸 코드를 찾지 말고 새로 습득한
지식을 마음 속 어디에 두면 좋을지 찾도록 하라. 당신의 목표는 그 개념의
역사적인 맥락이 어떤 것인지, 그것이 다른 무언가의 특별한 경우에 해당하
는지 이해하는 것이 되어야 한다. 당신이 학습 중인 주제의 이면에 혹시 어떤
전산학적 개념이 깔려 있을지, 그리고 그 개념과 당신이 사용 중인 구현본
사이에는 어떤 절충이 이루어졌는지 알아보라. 이처럼 심도 있는 지식으로
무장하고 나면, 나중에 문제에 맞닥뜨렸을 때 처음의 튜토리얼 수준은 넘어
설 수 있을 것이다.
예를 하나 들면, 사람들은 정규 표현식
regular expression
에 대해 피상적인
이해만 가지고 있어서 가끔 곤란한 처지에 빠지기도 한다. 당신은 DFA와
NFA
9
의 차이점을 확실히 알지 못하더라도 몇 년, 아마도 수십 년은 아무 일
없이 지낼 수 있을 것이다. 그러다가 어느 날 당신의 위키가 동작을 멈춰 버
린다. 조사해 보니 정규 표현식 엔진이 재귀적으로 구현된 경우에, 백트래킹
을 필요로 하는 특정한 입력값이 들어오면 아주 오랫동안 실행되다가 결국
StackOverflowException을 내고 만다는 것을 알게 된다. 애디는 이 사실을
힘들게 알아냈는데, 다행히도 실제 환경이 아니라 그가 만든 장난감 버전에
서 일어난 일이었다.
9
(옮긴 ...