정파는 그대에게 컴퓨터처럼 생각을 하고 컴퓨터처럼 사고해야 한다고 가르친다.
그 결과 그대는 그대가 사용하고 있거나 개발하고 있는 컴퓨터, 소스코드 혹은 하드웨어를
아주 신중하게 설계를 해야 하며, 조심해서 만들어야 하고 신중하게 다뤄야 하는
존재인 것 처럼 가르친다.
하지만 사파는 그대에게 컴퓨터와 소스코드 그리고 하드웨어는 그대의 노예에 불과하며
따라서 일단 일을 시키고 그 다음에 말을 안들으면 학대를 하라고 가르친다.
우리 사파에 전해 내려오는 전통적인 디버깅 비급은 다음과 같다.
1. 모든 것을 절반으로 나누어서 디버깅을 해라!
사파의 이 비급은 초창기시절의 H/W 디버깅으로 부터 그 전통이 시작이 된다.
TTL로 모든 것을 만들던 시절, 그 당시 H/W엔지니어들이 가장 먼저 배웠던 궁극의 스킬은
아크릴 칼로 PCB를 두동강 내는 것이었다. (물론 사파의 문중에서 사용하던 스킬이다.)
이를테면 이분법적(Bisection Method) 디버깅이라고 할 수 있다.
뭔가 영어로 적으니까 그럴 듯 하지 않는가?
하지만 그럴듯한 영문명칭의 부여는 정파의 장문인들이 주로 쓰는 수법이고...
사파에서는 그냥...
문제영역을 반으로 갈라서 여긴가? 아니면 이쪽? 하는 식으로 버그를 뒤진다라고 생각을 한다.
2. 넌 고귀한 인간이다...
따라서 네 고귀한 머리로 노예인 컴퓨터를 시뮬레이션 하지 말아라!
정파에서는 디버깅을 할 때 자꾸만 소스코드가 왜 틀렸는지 생각을 하라고 가르킨다.
하지만 사파에서는 그런 쓸데없는 짓을 하지 말라고 가르킨다.
그건 노예에 불과한 컴퓨터를 고귀한 인간의 두뇌로 시뮬레이션 하려는 시도이기 때문이다.
그리고 그렇게 생각을 해서 잡힐 버그면 진즉에 그렇게 코딩도 하지 않았을 것이기 때문이다.
사파에서는 그 대신에...
컴퓨터나 소스코드 그리고 하드웨어를 학대하라고 가르킨다.
'온 사방에 디버깅용 코드를 삽입하거나 점퍼선을 날리라고...'
소스코드가 걸레가 되어도 상관이 없고.. 하드웨어가 망가져도 상관이 없으니 네 맘대로
디버깅용 장치를 삽입하라고 가르킨다.
하다하다 안되면 모든 라인마다 printf를 추가하라고 가르킨다.
정파의 문하생들을 보면 소스코드를 신주단지 모시듯이 모니터에 띄워 놓고
열심히 자신의 머리를 학대하는 것을 볼 수 있다.
그것은 바보같은 짓이라고 우리 사파에서는 생각을 한다.
"생각을 하기전에 먼저 printf로 찍어 봐라!"
이것이 우리 사파의 전통이다.
다시한번 이야기하지만...
"프로그램과 하드웨어를 학대해라! 그것들은 우리의 노예일 뿐이다."
다만 학대를 하기전에 백업은 꼭 받어 놓아라...