'Ruby'에 해당되는 글 1건

  1. 2007.06.28 어떤 언어가 좋을까? - 스크립트 언어 (44)
요즘 루비건 파이썬이건 이래저래 이야기가 많다. 루비는 Ruby on Rails 라는 걸출한 프레임웍 덕분에 한창 뜨는 언어이고, 파이썬은 방대한 라이브러리의 지원으로 인기몰이를 하고 있다.

자 웹에서 사용되는 고전적인 스크립트 언어인 PHP를 두고 보자 이녀석을 웹에 붙였을때는 상당히 빠르게 작동하며, 리소스 사용량도 그다지 크지 않다. 캐슁 모듈을 덧붙였을경우에는 상당히 경이적인 속도를 자랑한다. 거기다 APM이라는 사실상 표준적인 구성과 C와 비슷한 스타일의 문법은 프로그래머의 진입장벽도 확 낮춰주기때문에 편하기 까지 하다.

사실상 지금은 스크립트 언어 춘추 전국시대라 할만하다. 그래서 어떤 스크립트 언어가 좋을까, 또는 간단한 소개 정도로 스크립트 언어들을 이야기 해보려고 한다. 물론 내가 그 많은 언어들을 죄다 써보고 이야기 하는 것도 아니며, 이런 이야기 안에서도 개인적인 호불호가 다소 섞일수 있음을 감안하고 보는것이 좋을듯하다. 물론 여기에서도 언급하지 않은 상당히 많은 (리습이라던가 루아라던가, 스몰톡이나 ,TCL같은) 스크립트 언어들이 있지만 적어도 여기에선 가장 많이 쓰이고 가장 유명한 언어를 뽑아 보았다.


1. 펄
펄에 대한 오해는 펄이 복잡하고 느리다는 것이다. 하지만 재미있는 사실중 하나는 펄은 그렇게 느린 언어도 아니고 아주 복잡한 언어도 아니다 라는점. 보통 펄이 문자열 처리에 강력한 면을 보이다 보니 정규식이 떡칠된 극히 짧은 코드를 보고 나서 질려 버리는 경향이 많다. 사실 또 펄 프로그래머들이 그런 코드를 즐겨쓴 경향도 있다.

하지만 펄 그자체로만 두고 본다면 상당히 빠르고 간결한 언어라 할만하다. 거기다 다른 어떤 스크립트 언어가 따라잡지 못하는 백엔드 라이브러리가 존재 한다. CPAN이라 불리는 이 라이브러리는 지금까지 나온 거의 모든 라이브러리를 랩핑해 뒀다고 할만한 정도. 긴 역사 만큼이나 가히 인류의 지적재산의 총아라 할만하다.

펄은 빠르다. 스크립트 언어중에서 펄을 이길만한 언어는 그다지 많지 않다. 그나마 초간단 문법을 자랑하는 임베딩 스크립트 언어인 Lua정도가 펄보다 빠를뿐, 그외의 현존하는 거의 다른 메이저 스크립트 언어와 비슷하거나 좀더 빠르다.(물론 파이썬은 비슷한 수준이며, 파이썬을 컴파일해서 돌리는 경우 펄보다 빠르긴 하다. 하지만 순수 스크립트 실행만 보았을때는 펄이 아주 빠른편이다 라고 할수 있다)

하지만 보통의 경우에 펄이 느리다 라는 편견을 가지게 되는 것은, 웹 프로그래밍에서 펄이 CGI로 실행될때가 아닐까. mod_php같은 경우는 아파치나 다른 웹서버랑 찰떡으로 붙어서 구동되다 보니 빠르게 느껴 질텐데 사실 펄은 그다지 느린편이 아니다.

2. 파이썬
개인적으로 가장 좋아하는 언어이다. 이 언어를 좋아하게된 이유가 가장 의사코드(Pseudo Code)와 닮았다는 이유였으니, 그 느낌의 간략함과 문법적 부분은 대충 짐작 가리라. 일단 이 언어는 교조적이라는 표현이 붙을 정도로 대단히 제약적인 문법을 자랑한다. 하지만 이러한 제약점은 코드가 모호해지지 않고, 누가 코드를 쓰더라도 비슷한 스타일로 쓰고 비슷한 느낌을 주다 보니, 익히기도 쉬워지고, 유지보수에 드는 코스트도 낮아 진다. 물론 개인적인 성향에 따라서 여러 다른 방법으로 코드를짤수 있겠지만, 적어도 파이썬이라면, 어느정도 비슷한 느낌을 주는 코드가 만들어 지게 마련이다.

파이썬의 장점은 펄만큼은 아니지만 강력한 백엔드 라이브러리라 할만하다. 이런 많은 고품질의 백엔드 라이브러리는 개발자가 개발을 쉽게 할수 있는 기반을 마련해주기 때문에 상당히 큰 장점이 된다. 일례로 웹에서 파일을 받아와서 가공하고 다시 업로드 하는 프로그램을 짜더라도 십수줄에 모든것을 만들어 낼수 있다. 이것은 C나 C++ 또는 자바가 수백줄에 걸쳐서 해야하는 일을 지극히 짧은 구문내에서 할수 있다는 것을 의미한다.

이는 일반적인 프로그래머가 어떤 언어를 사용하던, 거의 비슷한 라인의 코드를 생산해낸다는 이야기에 따르면(팀 마르코), 엄청난 생산성의 향상을 가져오게 된다. 거기다 파이썬은 다른 코드들(자바건, C/C++이건...)과 잘 붙는다. 누가 표현하기로 파이썬은 Glue Language라고 하는데, 이런 특성은 파이썬이 속도가 필요할때 C모듈을 불러 쓸수 있다는 것을 의미한다. 이는 곧 전체적인 퍼포먼스도 놓치지 않는다는 이야기.

게다가 파이썬은 온-라인 인터프리터가 내장되어있다. 이말인 즉슨 한 문장을 실행시킬때마다 결과를 즉시 알아볼수 있고 이는 결국 디버깅이나, 설계상의 문제 발견에 아주 큰 도움이 된다. 이는 긍극적으로 설계/유지/보수를 한단계 끌어 올리는 훌륭한 도구라 할수 있다. 정 뭐 하면 계산기로도 쓸수 있으니, 그 아니 좋을소냐.

3. 루비
루비는 위의 파이썬의 장점을 거의 가지고 있다. 하지만 다른 몇가지를 꼽자면, 루비는 파이썬보다 덜 딱딱하다. 한마디로 프로그래머의 재량에 맡기는 스타일을 추구 한다. 거기다 무엇인가 새로운 것이 나오면, 그것을 언어적인 특징에 추가 시키는 형태에 가깝다 보니 파이썬같은 언어보다 한층 펄스럽다.(물론 나쁘다는것은 아니다. 자유스러움이 녹아 들면 그만큼 무엇인가 다이나믹하다는 뜻이고, 할수 있는 범위가 넓어진다는 이야기도 된다) 그러나 장점일수도 단점일수도 있는 이런 부분은 유지보수의 간결성을 떨어뜨리는 효과를 낳게 되지만, 이것도 Rails라는 걸출한 웹 프레임 웍으로 어느정도 커버가 되는듯 싶다.

IT쪽에서 언어를 들여다 보면, 특이하다면 특이한 현상인데, 괜찮은 프레임 웍이 있다면, 어느정도의 코드에 대한 간결함이 보장되게 되어있다. 이것이 안되는 부분은 C같은 것들. 여기는 하나부터 열까지 모두 셋팅을 해줘야 하다 보니 코드가 알아 보기 힘들고 골치아파지기 시작한다. 하지만 루비는 이런 부분이 상대적으로 적다. 그리고 온라인 인터프리터의 기능도 있으니.

그러나 벤치마크에 따르면, 파이썬이나 펄보다 약간 느리다는 점이 있지만, 이것은 그다지 큰 문제는 아닐듯 하다. 대체적으로 라이브러리가 약간은 부족해 보이는것이 사실이지만, 현재로선 라이브러리가 구축된 부분에 대해서는 극강의 짧은 코드를 자랑하다 보니, 루비의 미래는 꽤나 밝아 보인다. 그렇기에 현재의 스크립트 언어는 파이썬과 루비의 신흥(?) 양강 체제로 돌입하지 않을까.

4. PHP
한국내에서 사실 PHP를 빼놓을수 없다. 처음 부분에서 이야기 한대로 PHP는 APM이라는 거의 표준화된 환경으로 웹질의 왠만한건 다 할수 있는 막강한 웹 환경을 만들어 주다 보니. 거기다 사실상 국내 인터넷 초반을 장악했던 제로보드가 APM환경에서 코딩되었다는 사실은 지금도 그리고 한동안 PHP천하가 될수 밖에 없다는 것이기도 하다.

사실 언어적인 측면에서 PHP는 그다지 매력적이지 않다. 단지 C/C++의 문법의 서브셋으로, 그리고 그것들 보다 좀더 편한 스트링 처리와 함께 mod_php로 전세계를 평정해버렸으니. 그러나 원래의 목적이 그랬던지라, 웹을 제외한 부분에서는 그다지 좋은 언어가 아니다. 특히 PHP는 범용언어가 가져야할 부분들을 거의 가지고 있지 못하다. 그러나 이런것들을 모두 제외하고도 PHP가 가지는 장점은, 꽤나 쉽다는 점. 특히 문법이 C/C++의 서브셋이라는 뜻은 국내 6개월 초단기 프로그래머 라는 정책에 아주 잘 부합한다고 할수 있다. 보통 C/C++을 배울때 포인터 같은 개념에서 좌절을 먹는다는 것을 감안한다면, PHP는 이런 부분이 아주 최적화된 라이트한 언어가 아닌가. (사실 그런 의미로 C/C++개념이 없다면 루비나 파이썬의 오브젝트 할당이라는 개념의 로우-레벨한 부분은 이해하기 어려울수 있다)

이런 저런 문제가 있지만, 그렇기에 프로그래머가 할수 있는 여지는 꽤나 많다. 라이트한 언어 답게 지원하는것은 그다지 많지않지만 HTML태그와 PHP코드를 넘나드는 문법은 간결하고 쉽다. 유지보수는 쉽지 않지만, 그렇기에 역설적으로 코드 생산성은 높다 할만하다.

물론 PHP가 나쁜 언어란것은 아니다. 하지만, 대형 프로젝트에서 효율적이지 못하다. 그만큼 문제가 많고, 그만큼 유지보수가 힘들며, 그만큼 소스 보기도 어렵다. 적어도 수백줄이상 수천줄이 넘어가게되면 PHP코드는 가히 꼬여버린 스파게티 코드라 할만하다.

-------------------
분명 스크립트 언어를 하나쯤 배워두는것은 문제 해결에서 꽤나 좋은 접근법이 될수 있다. 따로 컴파일을 하고 셋업을 하는 거창한 작업을 하지 않더라도 바로 바로 값을 알아볼수 있으며, 내용을 트래킹해볼수 있다. 이는 곧 생산성의 향상으로 연결된다.

어려운 문제를 풀때 이러한 도구가 있다면 분명 엄청난 효율을 가져다 줄수 있다. 그렇기에 C/C++또는 자바를 주력으로 쓰고있더라도, 기본적으로 스크립트 언어 하나 정도는 배워 두는것이 좋을듯 하다. 그리고 이는 곧 행복 코딩의 지름길이 될수 있다.
신고
Posted by 죠짱


티스토리 툴바