자주 사용하는 스크립트 언어들의 장단점

들어가기 전에

스크립트 언어는 컴파일을 하는 언어와는 달리 텍스트로 되어 있는 파일을 인터프리터가 라인마다 해석을 해서 실행하는 방식이라서, 작성 및 디버깅이 간편하여 배워두면 간단한 작업을 할 때 매우 여러가지로 도움이 되는 언어입니다.

수많은 스크립트 언어들이 있고 역사가 매우 깊은 언어도 있고, 최근에 변화가 많은 언어도 있습니다. 이 글에서는 제가 익숙하게 사용했던 언어들 위주로 설명을 하도록 하겠습니다. 그리고 윈도우도 지원하는 스크립트 언어들이 많이 생겼지만 설명은 linux를 위주로 하겠습니다.

보통 스크립트 언어를 작성할 때 첫줄에 다음과 같은 구문을 적는 것을 많이 보셨을텐데요

#!/bin/sh

이것은 shell에게 이 파일을 어떤 인터프리터를 사용해서 실행할 것인지 지정하는 구문입니다.
스크립트 파일을 실행할 때 두가지 방법이 있습니다.

$ python a.py

위와 같이 실행할 때는 인터프리터를 지정할 필요가 없고, 실행파일일 필요도 없습니다.

$ ./a.py

위와 같이 실행할 때는 인터프리터를 지정해야하고, 실행파일로 설정되어 있어야 합니다.

Unix shell script (bash, sh, ksh, csh, zsh...)

단순한 문법 때문에 주로 간단한 작업을 할 때 사용합니다.

장점

  1. Shell이 있는 linux(거의 모든 배포판)라면 실행이 가능합니다.
  2. 시스템 콜을 위주로 사용하기 때문에 확장성이 좋습니다.

단점

  1. 문법만큼이나 기능이 너무 단순합니다.
  2. 관리하는 저장소가 없기 때문에 필요할 때마다 만들어서 사용해야합니다.

Perl

문자열 가공에 강력하고 다른 스크립트 언어들이 나오기 전에 shell script보다는 다양한 기능이 있어 많이 사용했었습니다.

장점

  1. Shell script에 비해서 기능이 다양합니다.
  2. 정규표현식을 사용한 문자열 처리 관련한 기능이 다양합니다.

단점

  1. 정규표현식을 많이 사용할 경우 가독성이 매우 떨어지기 때문에 "Write once, read never"라는 말이 있을 정도입니다.
  2. Shell script와 마찬가지로 관리되는 저장소가 없어서 그렇지 않아도 가독성이 떨어지는 언어라서 관리가 매우 어렵습니다.

Python

최근 주요 배포판에서 기본으로 python이 포함되어 있고, perl에 비해 가독성이 좋고 다른 언어와는 달리 특이하게 중괄호({, })등의 기호 대신에 들여쓰기를 사용하여 코드를 그룹핑합니다.

장점

  1. 이때까지의 오래된 스크립트 언어와는 달리 관리되고 있는 저장소가 있습니다.
  2. 수학적 계산에 속도가 매우 빠릅니다.
  3. C/C++로 module을 작성할 수 있기 때문에 확장성이 좋습니다.

단점

  1. 버전 3.x으로 가면서 2.x와의 호환성을 너무 버려서 곤경에 빠져 있습니다. 아직까지 많은 유명한 패키지들은 2.x로 되어있으며, 3.x로 마이그레이션을 하지 않고 있습니다.
  2. 각 패키지별 의존성이 처리되지 않습니다. 관리되고 있는 저장소가 있지만, 여전히 dependency 처리가 되지 않아 불편함이 많습니다.
  3. OOP를 추구하지만 완벽하지 않습니다.

Ruby

몇 년전에 ruby on rails가 급부상하면서 덩달아 주목을 받게된 스크립트 언어로, 그 당시 언어적인 트렌드가 많이 반영되어 화려한 기능이 많은 것이 장점입니다.

장점

  1. 최근 트렌드가 많이 반영되어 있어서 옛날 스크립트 언어로 매우 복잡하게 구현해야 하는 것들을 간단하게 구현할 수 있습니다.
  2. 가독성이 좋습니다. (특히, 영어권 문화인 사람이 볼 때 가독성이 좋습니다.) 다만, 화려한 기능만큼이나 가독성을 염두에 두고 작성하지 않으면 오히려 더 읽기 어려운 경우도 많습니다.
  3. 패키지를 Gem이라는 파일로 묶어서 관리하고, 의존성을 처리할 수 있도록 되어있습니다. 따라서 어떤 패키지를 설치할 때 의존성이 있는 다른 패키지들을 특정 버전에 맞추어서 설치합니다.
  4. Python도 문자열 처리에 특화가 되어있지만, Ruby는 한술 더 떠서 훨씬 더 특화가 되어있습니다.

단점

  1. Ruby는 제가 친숙하지 않다는 것외에는 크게 느껴졌던 단점은 없었던 것 같습니다.

Java script

Java script도 매우 오래된 스크립트 언어입니다. 인터넷 초창기때 client-side java script를 사용하여 많은 팁들이 공유되기도 했었죠. 그러다가 구글의 v8 engine의 막강한 성능과 더불어 아직도 인기몰이 중인 node.js가 급부상하면서 ruby를 제치고 가장 핫한 스크립트 언어가 되고 있습니다.
제가 java script는 아직까지 깊히 다루어본적이 없어서 장단점을 논하기에는 역부족일 듯 합니다.

마치며

PHP, elrang, VBscript, Lua, groovy... 등등 위에 언급한 스크립트 언어 외에도 정말 많은 종류의 언어들이 있습니다. 컴파일을 하는 언어들만 너무 치중하지 마시고, 하나정도 마음에 드는 스크립트 언어를 배워두면 개발하는 중간중간에 유용하게 써먹을 수 있습니다.