About Perl‎ > ‎

Perl의 장점

Perl은 스크립트 언어로서, 참으로 많은 장점들을 지니고 있습니다. 어떤 사람들은 Perl이 스크립트 언어이기 때문에 무시하는 경우도 있지만, 어떤 언어의 장단점에 대한 기준은 컴파일 여부에 있지 않다는 것입니다. 다음은 Perl 혹은 Perl을 사용할 때의 장점입니다.
  • 배우기 쉽다(Easy to learn)

    Perl은 정말 배우기 쉽습니다.
    이것은 사용자들이 문법의 구조나, 논리와 무관한 C 언어 스타일의 엄격한 데이터관리 등에 대해 신경쓰지 않고, 논리구현에 집중할 수 있도록 언어가 고안되었기 때문입니다.
    정말 놀라운 것은, Perl을 활용하기 위해 Perl에 대해 완벽하게 알 필요는 없다는 것입니다. Perl을 사용하면 현재 자신이 알고있는 수준에 맞는 해결책을 만들 수 있습니다. 하지만, C나 Java와 같은 언어로는 ``어느정도만'' 공부해서는 가치있는 프로그램 혹은 해결책을 만들기가 어렵습니다.

  • 많은 운영체제에 포팅되었다(Portability)

    처음에는 유닉스를 위해 만들어졌지만, Perl의 우수성들은 많은 사람들이 자신의 운영체제에서 Perl을 사용하고 싶도록 만들었을 것입니다. 만일 여러분이 C 프로그래머이고, 같은 프로그램을 다른 운영체제에서 컴파일하도록 만들어 본적이 있다면, 아마도, 엄청나게 많은 #ifdef문을 사용했을 것입니다. 하지만, Perl로 씌여진 프로그램들은 서로 다른 운영체제에서 소스를 수정하지 않고도, (혹은 아주 약간만 수정하고도) 같이 사용할 수 있습니다. 결국, 지금은 거의 모든 운영체제에서 Perl을 사용할 수 있게 되었습니다. 심지어는 MS Windows와 Mac에서까지 말입니다. (Perl로 MS Excel용 파일을 만들 수 있다는 사실에 대해 어떻게 생각하십니까? Tab/Comma separated file이 아닙니다)

  • 무료로 사용할 수 있다(Free to use and/or distribute)

    Perl은 GNU GPL 또는 ``Artistic License''에 따라 사용하고 복제할 수 있습니다. 한마디로 말하면 무료입니다. 우리는 인터넷상에서 다양한 배포장소를 찾을 수 있고, 언제든 다운로드 받아서 여러분의 시스템에 설치할 수 있습니다.

  • 인터프리팅 언어라는 점(Interpreting language)

    인터프리팅 언어라는 점은 장점이 될 수도, 단점이 될 수도 있는 특징입니다만, 개발사이클을 짧게 만드는 특성이 되기 때문에 전체 개발과정 역시 짧게 해 줍니다. 따라서, 어떤 시급한 업무를 처리하는 데 있어서는 강력한 장점이 될 것입니다.
    또한, 네트웍관련 작업처럼 복잡하고 기술적으로 어려운 일에서는 먼저 Perl언어로 구현해 보고, 성공이 확인되면 그 때 다시 C 언어로 코드를 다시 작성하는, 표본언어(prototyping language)로 사용할 수 있습니다. 특히 Perl은 타 언어보다 C와 비슷한 부분이 많기 때문에, 이를 표본언어로 사용한다면 잇점이 많을 것입니다.
    하지만, sh 같은 진짜 인터프리팅 언어(번역과 실행이 동시에 되는)와 약간 다른점은 Perl은 먼저 Perl의 바이트코드로 완벽하게 번역을 한 후, 오류가 없으면 그 바이트 코드를 실행합니다. 이 것은 연이어 거의 동시에 이루어지지만, ``진짜''인터프리팅 언어와는 중요한 차이(장점)를 보여줍니다. ``진짜''인터프리팅 언어는 스크립트에 오류가 있건 없건 일단 실행해 나갑니다. 중간에 오류를 만나면 빠져나오더라도 이미 한 일에 대해서는 복원시킬 수 없기 때문에 종종 뜻하지 않는 재앙을 줄 수도 있습니다. 하지만 Perl의 방식은 프로그램이 완전히 번역이 된 후에야 실제 실행을 시작하기 때문에 그러한 재앙의 가능성을 최소화해 줍니다.

  • 실용적이다(Practical to make job done)

    Perl이 실용적인 것은 Perl의 세가지 지향점인 완전한(Complete) 언어, 사용하기 쉬운 언어(Easy to learn), 효율적인 언어(Efficiency)를 달성했기 때문입니다.

  • 완전한 언어(Complete)

    ``완전한''이란 Perl을 칭송하기 위한 단순한 수사(修辭)가 아닙니다. (물론 Perl만이 완전한 언어라는 뜻은 아닙니다. 이 ``완전한''의 의미는 ``완벽하게 지원하는'' 혹은 ``풍부한(rich)''의 의미로 이해해도 좋을 것입니다.) Perl은 awk, sed, C, sh 등의 언어들의 장점을 조합한 언어입니다. awk의 정규식(Regular Expression), sed의 치환 편집, C언어와 유사한 문법구조와 함수들, sh 스크립트의 단순함 등이 Perl속에 녹아들어 있습니다. 위 언어들 중 하나만 사용해서는 할 수 없거나, 혹은 너무 어렵거나, 몇가지를 조합하면 너무 복잡해질 수 있는 일들이, Perl 언어를 사용하면 간결해지는 것을 많이 경험할 수 있을 것입니다. 또 기능적으로는, 텍스트, 숫자, 파일과 디렉토리, 네트웍 등에 대한 다양한 처리능력을 가지고 있어서 여러분의 발등을 찍어대는 문제들을 Perl만으로 완벽하고 신속하게 해결할 수 있습니다.

  • 사용하기 쉽다(Easy to use)

    마치 sh 스크립트처럼 사용하기 쉽습니다. ``Hello world''라는 문장을 출력하기 위한 다음 세 가지 언어로 각각 구현된 모양을 보십시오.

    /* in C language */
    
    #include 
    void main() {
    	printf( "Hello world\n" );
    }
    	
    그리고 gcc -o hello hello.c 한 후 실행할 수 있습니다.
다음은 shell입니다..
#!/bin/sh

echo Hello world
	
Perl은 C와 비슷한 문법이지만 sh처럼 단순합니다.
#!/usr/bin/perl

print "Hello world\n";
	
그리고 sh 스크립트처럼 즉시 실행하면 됩니다. 많은 C 프로그래머들이 Perl을 좀 사용하고 나면, 허탈감마저 느끼곤 합니다. 너무 쉽고, 너무 효율적이기 때문입니다.
  • 효율적이다(Efficiency)

    효율은 구현에 투입된 비용(시간, 인력)에 비례한 생산물의 가치라고 볼 때, Perl은 매우 효율적입니다. 텍스트, 네트웍, 데이터처리 등에 관한 다양한 처리능력을 갖추고 있으며, 사용자는 이러한 능력을 쉽게 이끌어 내 사용할 수 있습니다. 즉, 적은 시간에 적은 인력으로 구현하고도, 다양한 능력을 활용하여 문제 처리에는 강한 효율적인 면을 보여줍니다.

  • 텍스트 데이터에 최적화되었다

    Perl은 초기에 유닉스 운영체제를 위한 도우미 언어(glue language)로 고안되었습니다. 대부분의 유닉스 설정파일이나 로그파일들은 텍스트로 씌여져 있는 만큼 Perl은 텍스트 데이터 처리에 최적화 될 수 밖에 없습니다. 지금도 Perl은 유닉스 계열에서 다양한 시스템 관리에 활용되고 있습니다. 또한, php와 같은 웹 전용 스크립트가 생기기 전에는 CGI를 구현하기 위해 많이 이용되었던 것도 Perl이 갖는 텍스트 처리능력 때문입니다. 물론, 지금도 Perl은 많은 CGI 프로그래머들이 애용하고 있습니다.

  • C언어에 삽입할 수 있다(Embedible)

    C언어로 직접할 수도 있지만, Perl을 사용하면 더욱 편리한 경우가 종종있습니다. Perl은 C 프로그램에 내장(호출이 아닌)할 수 있고, C 코드와 Perl 스크립트가 데이터를 교환할 수 있는 메카니즘을 갖고 있습니다.

  • C언어를 이용한 확장성(Expandable)

    Perl은 C 언어로 작성된 만큼, 확장 역시 C 언어로 할 수 있습니다. C언어를 이용한 확장성은 Perl의 성공한 가장 큰 이유중 하나일 것입니다. 특히 객체지향적인 특성을 활용한 확장모듈의 작성방법은 은 많은 프로그래머들이 Perl의 확장에 쉽게 참여할 수 있게 해 주었고, 또 많은 사용자들이 이 모듈을 쉽게 설치하여 사용하게 함으로써 Perl의 사용확대를 가속하였습니다.

  • TCP/IP 네트웍(Network support)

    TCP/IP에 대한 지원은 특히 유닉스계열에서 다양한 네트웍관련 작업을 쉽게 합니다. 더구나 인터넷 환경에서는 이러한 지원이 필수적입니다. 만일 TCP/IP에 대한 지원이 없는 언어라면, 요즘같은 환경에서 어떤 사람이 범용적인 도구로 활용하고자 할까요? Perl로 직접 웹서버를 만들 수도 있습니다!

  • 내장된 디버깅 환경(Integrated Debugger)

    Perl은 디버거를 내장하고 있습니다. perl -d script_file와 같은 식으로 실행하면 디버거를 작동시킵니다. 브레이크 포인트를 설정하고, 코드를 실행시키며, 변수의 값을 보면서 프로그램의 오류를 찾아낼 수 있습니다.

  • 어디서든 도움을 받을 수 있다

    Perl은 조용하면서도 열열한 지지자들을 엄청나게 확보하고 있습니다. 많은 news 그룹, 메일링 리스트들, 웹사이트 들이 Perl을 이용한 다양한 정보를 교환하는 장소로 활용되고 있습니다.

Comments