Today
-
Yesterday
-
Total
-
  • 간결하고 효율적인 프로그래밍
    Programmer/Programming 2013. 7. 22. 15:24

    예전에 인터넷에서 중국 격투가의 동영상이 화제가 된 적이 있었다. 정확히 기억이 나지는 않지만 1900년대 중반에 촬영된 것으로 중국의 고수 2명 링에서 실전 격투를 벌이는 영상이었다. 나는 중국의 무술 영화의 한장면을 기대하며 시청했는데, 막상 그들은 무술을 전혀 배우지 않은 사람들처럼 마구잡이 난타전이 벌였다.[각주:1]


    눈을 돌려서 최근에 이종 격투기를 살펴보자. 이들의 기술은 단순하고 효율적이다. 실전 격투에서는 화려하기 보다는 간결하고 파괴적인 동작, 이론으로만 존재하는 것이 아니라 실전에서 검증된 기술이 살아남는다.



    현대의 이종 격투기와 같이, 중국 무예의 창시자는 대부분 실전 무술가로써 명성을 얻는 경우가 많다. 후대에서는 이 창시자가 어떤 생각을 가지고 무예의 동작과 훈련을 만들었는지는 무시되고, 스승에게 배운 동작과 훈련 자체에 매몰된다. (어쩌면 질문하지 않고 스승의 가르침을 무조껀 수용하는 문화가 문제일 수도 있다.) 실전에서 이기는 원리는 잊혀지고 스승의 동작만 춤사위처럼 전승되고 이상한 개똥 철학과 화려한 언변으로 이 춤사위를 설명한다.


    고대의 중국 무술과 같이 상황을 프로그래밍에서도 종종 본다. 더 나은 개발을 위해서 새로운 프로그래밍 기술이 등장한다. 이후 이 기술의 추종자들은 애초에 목적은 상관없이 기술 자체에 몰입이 된다. 손가락은 달을 가르키는데, 손가락 자체에 매몰된 경우이다.


    예를 들면, 간단한 기능에 객체지향(줄여서 OO) 프로그래밍을 하는 경우가 대표적인 경우이다. "hello world" 정도의 간단한 작업인데, OO로 짜야 한다면서 수백줄의 코딩을 하고 있다. 여기에서 OO의 재사용성과 유지보수의 장점을 찾아볼 수 없다.


    내가 생각하는 실전 프로그램이란 정확한 동작, 논리가 간결하고 쉬움, 자원의 효율적인 사용, 코드의 유연성 등이 있다. 위 예에서 언급한 비대해진 "hello world"는 직관적으로 생각해보다도 정확성, 간결함, 쉬움, 효율성을 잃어 버렸을 뿐만 아니라, 누군가 코드를 쉽게 고치고 개션하기 힘든 유연성 마저 기대하기 힘들 것이다.

    1. 이 글에서 중국 무술을 깍아내릴 생각은 추호도 없다. 무술의 본질을 망각한 기술과 훈련 방식을 따르는 일부에 대해서 프로그래밍과 비교하기 위함이다. [본문으로]

    댓글

Designed by Tistory.