나는 프로그래밍을 C언어로 시작했다.
C언어는 정적언어다. 메모리를 다루기 위해 변수의 타입과 크기가 아주 아주 중요한 언어다.
심지어는 C99이전 C언어에서는 (C++을 비롯한 뒤를 잇는 대다수 C 계열언어는 그렇지 않지만) 사용할 변수는 모두 상위에 선언해야 한다.
즉, 계획하에 선언되지 않은 변수는 낭비로 여겨지는 문화권에서 개발을 시작했다는 점이다.
임시 변수도 스택 변수인지, 힙에 할당한 것인지가 중요하게 여겨질 만큼, 변수를 세심하게 다뤘어야 함을 의미한다.
이를 세심하게 다루는데에 실패한다면 크래시나 메모리 부족등의 현상을 겪게 됨은 물론이었다.
동적 타입 기반의 스크립트 언어의 다수는 변수 선언에 자유롭다. 선언 용법 자체가 없는 언어들도 여럿 있다.
언어의 규칙이 코드 작성시에 영향을 크게 준다.
평소 신경 써오던 부분을 신경써야되거나, 신경쓰지 않아도 되는 상황이 되는데, 스크립트 언어 사용 초기엔 이 부분에서 괴리감이 들었다.
나의 경우에는 스크립트 언어로 주로 서버 머신 제어 및 모니터링, 로컬 머신 업무 지원 유틸리티용으로 JScript 와 Batch Script로 스크립팅을 시작했다.
동적 타입언어를 처음 사용하게 된 게 JScript 였다고 볼 수 있는데, 철저히 계획하에 그리고 정적 타입언어의 엄격한 규칙과 컴파일러의 감시하에 해오던 코딩이, 수많은 런타임 오류 환경에 놓여졌을 때의 막막함…
가장 막막했던 것은, 늘어난 런타임 오류였다.
과연 스크립트 언어가 생산성이 좋다는 것은 누가한 얘긴가…!!
궁시렁 거리며, 작업을 하다보니 자연스레 조금 더 계획하에 프로그램을 작성하게 됐다.
어라? 이게 스크립트 언어의 장점인가???
당시 고민에 빠졌지만, 돌이켜 생각해보면 그건 아닌거 같다.
정적 타입 언어를 써도 계획하에 잘 짜는 것은 당연히 중요하다.
그렇다면 스크립트 언어의 장점은 무엇인가?
빌드 & 배포 자동화던, 배포만 자동화던 스크립트 언어도 마찬가지로 손이 간다.
그 과정에서 빌드는 아주 작은 과정에 불과하기 때문에 이것도 아주 큰 장벽은 아니었다. 빌드가 10분이 넘어가는 경우에는 이것도 단점이 되긴 했으나…대개 작은 프로그램으로 구성되는 유틸리티 프로그램이 빌드가 재앙의 원인이 될만큼 크진 않았다.
그게 아니라면 왜 나는 스크립트 언어를 배우고 사용하는가?
우선 나는 문자열을 다루기 쉽다는 점을 아주 높게 평가했다.
당시 내가 주로 다루던 C, C++의 문자열 다루기는 곡예사같은 수준이어야 했기 때문에 이 장점이 컸다.
물론 C#은 문자열 다루기가 아주 쉬운 편이지만… C++은 여전히 쉽지 않다
C++에서의 문자열 다루기도 std::string만 써도 조금 낫고, 유틸리티 함수를 만들어놓고 사용하면 그럭저럭 쓸 수 있을 정도가 되지만, 여타 언어에 비할바는 아니다.
스크립트들 다수는 perl을 비롯해 문자열 다루기가 아주 아주 유연하다. 위에 언급한 쉬운편인 C# 문자열 다루는게 불편해 보일 정도니 말 다했다.
문자열을 다루기 쉬워지면 자연스레 컨텐츠 코딩이 쉬워진다.
파일, 폴더 다루기를 비롯해 다른 프로그램과의 연동 등 다양한 작업이 문자열 기반이다.
이 작업이 쉽고 유연해지면 자연스레 작업시간이 줄어든다. 작은 기능을 구현하게 될 수록 오류도 줄어들기 마련이고.
실제 스크립트 언어의 주 역할이 연동 작업이나 간단한 기능이었던 것도, 스크립트 언어 자체가 복잡한 요구사항을 수행하기 보다는 간단한 기능을 개발하는 것에 좀 더 적합하다는 판단에서 였다고 생각한다.
메인 스트림 언어 하나를 알면, 다른 언어를 배우는 것은 일주일 내외라는 말은 쉽게 동의하기 어렵다.
내가 본 다수의 뛰어난 프로그래머들도 언어 적응에 시간이 꽤 들었고, 나역시 꽤나 많은 시간 사용해보고 나서야 해당 언어가 익숙해졌다는 표현을 할 수 있었다.
그렇기에 더더욱 다양한 언어를 써봐야 하는데, 그 계기가 나에겐 스크립트 언어에 대한 적응부터였던 거 같다.
JScript를 그럭저럭 서버 운용 및 유틸리티 스크립트 언어로써 사용할 수 있게되자, 그제서야 다른 언어들에 대한 거부감과 진입 장벽에 낮아진 느낌이다.
아직 스크립트 언어에 익숙해지지 못했다면, 혹은 스크립트 언어만 사용해봤다면 패러다임이 다른 언어를 접해보는 건 어떨까?
그 노력이 당장은 아닐지라도 몇년 후에는 꽤나 큰 차이를 가져다준다고 믿는다.