10세 미만이던 시절

  - BASIC 코딩

    10 HOME ( 이러면 콘솔의 cls 처럼 화면을 지우고 커서를 좌우측 최상단으로 옮김 )

  - RUN


    이거 보면서 야구장을 떠올리고 상단과 좌측으로 넘어가는건 파울이라고 생각했음.

    

    대학물 먹고는 coordinate system 의 origin 이 더 일반화된 표현이란걸 깨닫게 되었지만,

    화면 청소는 일단 주자를 다 홈으로 불러들이는것과 비슷하니까 나쁘지 않은 네이밍이라 생각.


    이시기에 나에게 있어 소스 코드는 영어단어로 되어 있어도

    제작자의 의도를 한 눈에 캐치할 수 없어서 기호와 다를바 없었음.

    낭만적 상상들이 가득하던 시절.


20세 미만이던 시절

    점점 관용구들이 머리에 들어오면서, 척하면 척인데 구구절절하게 쓰는게 싫었음.

    아예 instruction machine code 를 보는게 편했던 시절.

    상상을 개입시키면 복잡도 높은 구체적 코드를 해석하는데는 도움이 되지 않는다는걸 깨달음.

    코드를 있는 그대로 읽어나가는 요령을 습득.

    배열, 링키드 리스트, 피타고라스의 정리 ( 유클리드 거리 ) 만으로도

    세상 탈탈 털 수 있을 것 같았음.


20대 중반까지의 시절

    저급언어와 고급언어 사이에 갈등하던 시절.

    뭔가 내가 쉽게 아는걸 남이 쉽게 모르게 하려는 자기방어적인 코드였다고 봄.

    꼬고 또 꼬고 엔트로피가 적으면 한 번 더 생략했지.

    그래서 다들 내 코드보면 혀를 내둘렀음. 이런 슈발 미친!!! 한 줄인데 알아볼 수가 없어! 막 이런 반응

    내 코드는 CPU와 메모리 구조를 모르고는 이해할 수 없는 코드였음.

    기능적으로 분명 상위 함수인데 60층 꼭대기에서 지하 500미터 암반수를 조달하는 코드.

    성능은 개쩔었지. 나말곤 손을 못대서 그렇지.


30대 미만이던 시절

    적절히 학구적 표현이 담긴( 교과서에 나옴직한 ) 간결하고 짧은 코드에 만족했음.

    여전히 변수명 함수명 따위는 친절과 거리가 멈. 그냥 뼈대만 간결.

    몇 달 몇 년짜리 방대한 컨텍스트를 기억할 수 있던 시절이라. 네이밍따위 훗. 거추장스럽.

    그러다 보니 오히려 동일 연산이 중복되는 함수들이 눈에 잘 들어왔고,

    함수의 볼륨을 효과적으로 줄여나갈 수 있었음.


30대 중반까지의 시절

    좋은 OOP 기반 프레임웍들을 사용했던 경험을 살려 네이밍을 최대한 따랐음.

    하지만, 굳이 손품 열심히 팔지 않아도 코드 파악과 수정이 손쉬웠기 때문에 배려라곤 그닥 없었음.

    비슷한 프레임웍을 써 본 사람들은 쉽게 접근하는 정도.

    멋스러운 낙타법을 고수함.

    성능을 위해 ( 처리속도 ) 재사용성을 희생함.

    그래도 로우레벨 코드는 따로 옥상 물탱크에서 조달하기 시작함. ( back-end 분리 )


그후 다시 10대가 된 지금

    이젠 쉬프트 치기도 귀찮고, 대소문자를 단어단위로 일일이 기억하는것도 귀찮음.

    에디터에서 다 보여주는데 타입을 네이밍에 넣는것도 개미련해 보임. ( 헝가리안 꺼져 )

    오밀 조밀한 코드는 한 눈에 들어오지 않기 시작함.

    대문자들이 그득한 코드는 소문자의 가독성을 가림, 시끄러운 술집에서 대화나누는 기분.

    ( 소문자로 된 다른 코드가 눈에들어오지 않게 되어 덩달아 목소리를 키워야됨. 악순환 )

    그래서 최대한 큰소리 내는 녀석들을 줄이고 소문자 위주의 코딩으로 바꿈.

    그덕에 소스코드들이 [남고 점심시간]에서 [레스토랑 디너타임]으로 바뀜.


    코드를 읽는 템포가 느려졌기 때문에 내 안에 있는 리듬보다 빠른 템포의 음악에선 그루브가 느껴지지 않음.

    중괄호의 여는 위치도 위에는 뒤, 아래는 앞에 나오면 시선이 대각선으로 움직이게 되는데 불편해짐.

    모든 코드는 있어야 할 곳에 있어야 함.

    ( 농담같겠지만 나이들면 시선 옮기는 속도와 정확도도 떨어짐 )

    들쭉 날쭉 거리면 괜히 복잡도만 높아보이고 있는 규칙성도 안보임.

    느긋한 리듬을 만들기 시작함.


    어떻게 하면 지금의 scope 를 해석하는데 필요한 context 의 량을 줄이느냐에 집중.

    사람이 이족보행을 하게 되면서 손이 지면으로부터 자유로와지자 도구를 쓸 수 있게 된거임.

    ( 요통의 시작은 안습 )

    마찬가지로 기본적인 코드를 다루는데 필요한 사고력의 비용을 줄이면,

    거시적 사고에 선순환적 투자를 할 수 있음.


    여전히 성능딸은 치지만 10% 정도는 떼어서 편의성과 간결함에 투자함.

    성능과 편의성은 재사용성에 대해 곱하기의 관계 ( balance ) 라,

    조금 양보해주면 무척 편해지고 재사용성이 높아짐.


    수식으로 보자면


        C/C++ 의 재사용성 = 성능 * sqrt( 사용 편의성 * 일반화 범위 )


    처음 짜는데 드는 비용 조금 아껴봐야,

    두고 두고 쓰고, 나중에 분석해야 할 때 비용을 생각하면 그건 새발의 피임.

    쇠뿔도 단김에, 컨텍스트도 머리에 넣은 김에 좀 응용력 있게 일반화 해서 만들어 두는게 좋음.

    그렇다고 첨 짤때 10번 생각하진 말고, 쓰기 편하게 세 번만 생각하자.

    나중에 실제 요구가 바뀌었을때 세 번 더 생각하는게 10 + 1번 생각하는거 보다 나음.