컴파일러는 실수하지 않는다.

컴파일러에 버그가 있다면 그건 제작자의 실수지.


즉 주어진 룰에 따라 구문을 해석할 뿐이다.


컴파일러는 컴퓨터의 역사에서 아주 초기에 등장했다.

FTP고 OS고 마찬가지.

덧셈밖에 모르는 바보 전자장치에게 가르칠수 있는건 한계가 있기 때문에,

아주 기본적인 부분들에서 효과적인 녀석들만 먼저 도입된거다.

그 말은 짜달아 복잡할게 없다는 거고.


복잡한건 소스코드를 읽는 사람 대가리일 뿐.


코드에는 스타일이 있고,

사람이 말하는데도 스타일이 있다.


같은 말을해도 인내심이 없으면 짜증날 정도로 정리되지 않은 나열을 하는 사람들이 있고,

어려운 이야기도 잘 정리해서 이야기 하는 사람이 있다.


이때 필요한것은?

호흡과 템포, 용어의 정리.

즉, 코드의 끊어읽기와 변수명 / 함수명의 정리가 중요하단거다.


난 처음 남의 소스코드를 읽을 때, 띄어쓰기와 개행을 내가 읽기 좋은 스타일로 정리하면서

변수명도 조정하며 읽었다.


그게 익숙해지면 개략적인 형태만 봐도 '아 이샛기 왜 이걸 이따위로 짰어?' 하게 되지만,

니가 지금 남의 코드를 읽어야 한다는건,

니가 아직 파악하지 못한 분야를 선행자로 부터 전수 받는다는걸 의미하는거지.


왜 필요한지에 대해 알고, 어떻게 하면 되는지 알면 남의 코드를 볼 필요가 없다.

걍 니가 짤 수 있음.


그렇다면, 니가 그걸 못할때, 남의 코드를 보는 시점에서

이게 왜 필요한지와, 어떻게 필요한 요소들을 채워갔는지 지켜보면 되겠지.


조건반복문의 흐름이 안잡히나?

테이블에 그려라.

for 문의 반복자 들을 가로 세로 등으로 배치하고,

각 반복자가 변할때 상태나 결과값이 어떻게 반영되는지 표에 그려라.


그게 익숙해지면 종이가 없어도 머리에 표가 그려진다.


사람은 납득하지 못했을때 상상을 하고,

상상이 곧 발전의 원동력이자 노이즈의 소스이기도 하다.


남의 코드를 볼땐, 악보를 외울때 처럼 각색없이 달달 외어야 한다.

그리고 니가 연주할 땐, 상상력을 폭발시켜야 된다.


코드를 해독하는데 왜? 이렇게? 정도에 상상력을 발휘하더라도.

남의 코드는 있는 그대로 받아들여라.

그게 컴파일러가 하는 짓이다.


몇 가지 연산에 완전히 익숙해지는데는 많은 시간이 걸리지 않는다.

그게 익숙하지 않다는건,

니가 억수로 안짜봤거나, 대충 이해하고 넘어갔다는 의미다.