나를 만든 언어

2008. 9. 13. 18:31Software Engineering/Agile

애자일 컨설팅 대표 김창준씨가 "나를 만든 언어"라는 제목으로
그동안 학습하고 배워왔던 언어들에 대하여 감사의 인사를 한다.

김창준의 나를 만든 언어

어떻게 보면 딱딱한 프로그래밍 언어를 의인화 하여 구체적으로 감사의 인사를
할 수 있다니!! 이거 참 재미있고 유익할 발상이 아닌가!

여러 해 동안 개발을 해 왔지만 나를 있게 해준 언어에 대하여 진지하게 고민해본 적은
없는 것 같다. 이 참에 나를 있게 해준 언어에 대하여 생각해 본다.

GW-BASIC
1990년인가 보다. 동네 오락실에서 "더블 드래곤"을 즐겨 하던 나에게 집에서 게임을 할 수 있었던
Apple PC는 나에게 신성한 충격을 선사했고, 수원으로 이사를 오자마자 피곤한 어머니를 이끌고
세종 컴퓨터 학원(동네 학원)을 들었가게 된다. 모든 것이 새로웠던 그 시절 알파벳부터 배우고
프로그래밍 세계로 입문을 하게 된다. 내 기억으로는 그 시절 for문을 배우기 위해 GW-BASIC을
한 달정도를 배웠던 생각이 난다. 왜 그렇게 for문을 배우고 싶었었는지는 잘 모르겠다. 아무튼
나의 미래를 프로그래밍에 투자하겠다는 열정을 불을 붙였던 언어였다.

Quick-Basic
물론 문법이야 GW-BASIC과 동일했지만 Dos 환경에서의 일종의 IDE를 제공을 해주었으며,
Dos Prompt에서 바로 실행할 수 있는 실행파일을 만들 수 있게 해줬다. Dos Prompt 상에서
실행을 할 수 있다는 것은 내가 만든 프로그램을 배포할 수 있다는(코드를 제외한) 의미를
나타낸다. 학원 환경이 8088에서(8086이던가) CGA 모니터였는데 5.25인치 디스켓을 학원에서
최초로 소유하는 영애를 안게 된다^^

Fortran, COBOL
GW-BASIC을 1여년 동안 배우고 학원에서는 포트란과 코볼을 가르쳤다. 그 시절 1992년 정도?
에는 은행 전산 시스템은 대부분 COBOL로 구현되어 있었다고 한다. 물론 직접 본 적은 없지만
포트란을 수치연산을 전문으로 하는 언어였지만 초등학생인 나로서는 수학에 대한 이론도 부족한
상황이었기 때문에 큰 흥미를 느끼지 못한다. 뿐만 아니라 COBOL의 Procedure 개념은 이해하는데
한 참을 걸렸던 것 같다. 그 시절 많은 벽에 부딪힌 나로서는 새로운 돌파구를 찾고자 노력한다.

Pascal(Turbo-Pascal)
간결한 구조, 모듈간의 독립적인 구현 뿐만 아니라 GUI 지원까지 COBOL에 많은 흥미를 잃은 나에겐
BEGIN과 END로 정리되는 Pascal은 다시금 큰 흥미를 불어 넣어 준다. 중1의 나이에 Pascal로 슈팅
게임을 구현했을 정도였으니 그 시절 Pascal은 나의 친구와 같은 존재였다. 통신이라는 것을 알게 되고
온라인을 통하여 Pascal에 대한 정보를 얻는 도중 Turbo-C라는 빅뱅을 만나게 된다. 온라인에서는
Pascal에 대한 자료보다는 C에 대한 자료가 훨씬 많았고, 그 시절 온라인에서 느낀 C 언어에 대한
평가는 Pascal의 그것보다 훨씬 뛰어났기 때문에 Pascal을 슬슬 접게 된다.

C(Turbo-C, Borland-C)
한글을 출력하기 위하여 한글 라이브러리르 구현해 보고자 용돈을 모아 한글 오토마타와 관련된 책을
사서 공부 했던 기억이 난다. 한글 한자를 출력하기 위한 어려움을 깨닫고 그 시절 "한" 라이브러리와
"허르미" 라이브러리등은 나의 작업을 쉽게 포기할 수 있게 해 주었다. 그 시절 나우누리를 통하여
C언어로 제작된 "진짜사나이"라는 게임을 배포하여 큰 돈을 벌게 된다. 1인칭 Offline Mud게임인
진짜 사나이는 그 인기로 인하여 II버전까지 제작하게 되었고, Hacking까지 당하게 된다.

Clipper
잠시 등장했다가 사라졌던 Database 지향형 언어였는데, 난 이 언어에 푹 빠지게 된다. Pascal과 C
같은 언어들은 Quiz 프로그램과 같은 단순한 프로그램을 만든다 해도 자료구조부터 파일 시스템까지
모두 알아야지만 개발이 가능했기 때문에 한 개의 프로그램을 만들기가 굉장히 까다로웠다. 그러나
Clipper는 이러한 것들을 고민하지 않아도 DB 구축을 쉽게 해 줄 수 있는 장점이 있어서 생산성
향상에 큰 도움이 되었다. 주소록, 책 관리, 퀴즈 프로그램 등 그래픽 라이브러리르 이용하여 그럴싸한
화면으로 쉽게 구현이 가능했다. DB를 만들어 주는 프로그램을 구현한 적이 있었는데 크게 호응을
얻진 못했던 기억이다.

C++
난 처음 C++은 C의 확장버전 정도로만 생각했다. C로도 많은 기능을 할 수 있는데 단순히 자료구조
정도만 Class 개념으로 처리하는 것이 내 생각엔 그리 획기적이지 못했던 것 같다. 대학에 와서야
OO에 대한 개념이 생기면서 문제 접근 개념 자체가 다른 언어로 알게 되었고 현재 현업에서 가장
많이 사용하는 언어가 되었지만 20대의 나를 먹여 살리고 키워준 황금과 같은 존재였다. 지금은
SaaS니 RIA니 Web Application시대로 전환되면서 그 역할이 많이 축소되었고, Java에게 그 역할을
많은 부분 위임했지만 그래도 나에겐 언제 친숙한 그런 언어이다.

Java, C# 등...
먹고 살기 위하여 개념과 문법 정도만 익혀두었던 언어들이지만 그 개념과 기능과 호환성이 뛰어나서
앞으로 주목받을 언어로 생각된다. 물론 아직도 Java진영과 Microsoft 진영 사이의 경쟁은
지속되고 있지만 난 두가지 언어 모두 뛰어난 언어라고 생각한다. Project의 목적과 Output의 형태에 따라서
골라 쓰면 되니 그 얼마나 좋은가... 문법도 유사하고......
사물에 대한 관점의 차이를 보면 모두 장/단점이 있기 마련이니 어떤 언어가 더 좋다 나쁘다는
논하지 않는 것이 좋겠다.

* 이제 필요한 것은

나를 만들어 온 언어들을 정리해 보니 주로 대중적인 언어들을 접해 온 것 같다. 어찌 보면 나이가 어릴 때에는 개발을 하면서 언어에 좀 집착을 했던 것 같다. 새로운 언어를 배우고 시행착오를 겪으며 문제를 해결하는 과정 자체가 재미있었던 시절이었으니까. 하지만 이제는 좋은 Solution을 위해서는 개발 언어 뿐만 아니라 특정 기술에 대한 심도 있는 이해, SE적인 Mind, Bug Free를 위한 Testing, 사용자 편의를 위한 UI, 개발자들 사이의 Communication까지 정말 많은 것들이 필요하고 그 것으로 부터 재미를 찾고 느껴야 할 것이다.