스크립트 언어 하나 배우고 싶은데..

mirheekl의 이미지

C/C++로 먹고 사는 개발자입니다만
종종 다른분들이 스크립트 언어로 노가다성 코딩이 필요한 유틸을 쉽게 해결하는 것을 보고
저도 비슷한 일이 하고싶어졌습니다.

파이썬이라는 것을 추천해주시는 분들이 많아서 좀 살펴봤는데
최근에 3.0.1이 나왔더라고요.
문법도 기존의 2.x와 많이 다르고 좀 살펴보니 3.x쪽이 더 일관성있게 바뀐 느낌입니다.
헌데 구할 수 있는 예제와 라이브러리는 대부분 2.x이고 직접 3.x쪽에 맞게 수정하자니 손이 너무 많이 갑니다.
컨버터도 있는 모양입니다만 외부 라이브러리가 3.x를 지원 안하는 건 방법이 없는것 같고요.
그렇다고 새로 배우는데 굳이 2.x를 배우자니 그것도 좀 아닌것 같고. (개인적인 고집이라고도 할 수 있겠네요.)
대부분의 기본라이브러리도 3.0.1에서 라이브러리 이름이 바뀌든지 사용법이 바뀐 경우가 많은데
일일이 다 찾아봐야 되고 3.0.1쪽은 웹상에 자료도 많지 않아서 살짝 답답하더라고요.

그리고 또 문제가 그래픽 라이브러리쪽이 호불호가 여럿으로 갈리더라고요.
기본 내장 라이브러리, GTK, wxpython, pyWin32등등등..
그나마 wxpython이라는게 가장 많이 쓰이는 모양인데 요놈이 파이썬 3.0을 아직 지원하지 않는 것 같습니다.
pywin32는 3.0을 지원하고는 있는데 이것들을 쓰게 될 경우 플랫폼 인디펜던트한 특징을 이용할 수 없는 게 아닐까 싶어서 이것도 좀 꺼려지고요.

그래서 파이썬 말고 다른 것들중에서
파이썬의 그래픽쪽처럼 호불호가 갈리지 않고, 최근에 문법이 변하지 않았으며
배우기 쉬운 스크립트 언어가 있었으면 좋겠는데..
몇가지 추천을 부탁드려봅니다.

imyejin의 이미지

간단한 GUI 구축이 목적이라면 전통적으로 유닉스에서부터 tcl/tk 를 많이 썼고 아직도 많이 쓰고 있습니다.
쉬우냐 아니냐는 저도 많이 안써봐서 잘 모릅니다만 기존에 워낙 많이 쓰이고 있는 놈입니다.
윈도우즈에서도 돌아갑니다.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

h2h1995의 이미지

imyejin님의 말씀처럼 Tcl/Tk는 현재도 현업에서 많이 쓰고있는 언어입니다.

습득하는 노력을 적게 들이면서,

간단한 처리를 위한 스크립트를 작성하실거라면 tcl/tk를 추천합니다.

그렇다고 중대형 프로그래밍이 불가능한 것은 아닙니디만,

중대형 프로그래밍은 다른 언어로 작성하시는 편이 건강상 좋을지 모릅니다.

tcl은 자칫 잘못하면 변수의 남발로 인해 코드 분석이 어렵게 되기도 합니다.

tcl/tk는 GUI도 제작가능합니다.

아래의 동영상은 tcl/tk로 제작되어진 예입니다.

http://archive.tcltk.co.kr/index.php?dir=video

또한 다양한 확장 패키지가 존재하므로, 생각하시는 대부분의 작업이 가능합니다.

많은 프로그램에서 tcl을 내부 스크립트 엔진으로 채택해서 사용하고 있습니다.

제 직업이 그래서 인지 몰라도 반도체관련 CAD 소프트웨어에서 흔히 사용되고 있는걸

봐 왔습니다.

tcl/tk는 현재도 계속 발전이 되고 있는 언어입니다.

아래의 싸이가 국내 포럼 tcl/tk 싸이트입니다.

http://tcltk.co.kr

----------------
http://tcltk.co.kr

mirheekl의 이미지

어딘가 낯이 익다 싶었더니 python의 기본 GUI 라이브러리인 tkinter하고 매우 흡사하네요.. 이름도 그렇고 tkinter가 tk를 이용하는 모양이네요. 왠지 낯설지 않은게 재밌을것 같습니다.

추천해주신 두분께 감사드립니다
그리고 이후에 답변주실 분들께도 미리 감사드립니다. ^^;;

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

asiawide의 이미지

John Ousterhout 박사라고 본업인 VLSI 캐드보다 부업(?)인 tcl 로 더 유명한 사람이 있습니다. 캐드툴 분야에서 tcl을 많이 쓴 것도 이 때문이 아닐까 싶습니다.

aero의 이미지

노가다 작업을 빠르게 하는데는 Perl 따라갈만한 게 있나요? :)

게다가 Perl은 UNIX류면 기본으로 깔려있으며
다른 스크립트 언어들 같은 경우 버젼업 하면 언어문법 명세가 달라져서
하위호환성이 깨지는 경우가 있는 반면 Perl은 편집증적으로
하위호환성을 유지해나가기 때문에 안정성에 있어서는 말할 것도 없죠.

그리고 Perl의 GUI라이브러리 바인딩도 Tk,GTK,wxWindows,Win32,Qt 등등 다 있지만
요즘 Padre( http://padre.perlide.org/ ) 라고 Perl의 기본IDE를 목표로
개발되고 있는 에디터가 있는데 이것이 wxWindows를 씁니다.
이미 완성도가 상당한 수준이죠.
각종 OS에서 돌아가는 Padre 스크린샷( http://padre.perlide.org/wiki/Screenshots )

imyejin의 이미지

어디까지나 Perl 5 까지 얘기입니다. 하위호완성을 깨지 않고는 그동안의 문제 및 펄 사용자들의 요구를 해결할 수 없는 지경에 이르렀기 때문이죠. 이제 앵무새가 돌아다니게 되면 하위호환성은 옛날 얘기가 됩니다.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

aero의 이미지

Perl 6는 스펙일뿐입니다.
지금은 주춤하지만 Haskell로 구현한 Pugs가 있고
Parrot VM위에 구현하는 건 Rakudo( http://rakudo.org/ ) 라고 하지요.
그리고 Perl 5로 Perl 6를 구현하는 kp6인가 하는 것도 있습니다.

같은 Perl이름이 붙었다 뿐이지 Perl 6는 Perl 5와 별개의 언어로 보는 게 맞습니다.
그렇다고 Perl 6가 Perl 5와 전혀 별개라고 하기에도 철학과 문화가 공유되는 부분이
많기 때문에 또 좀 그렇긴하고...

현재 이미 Perl 6의 몇몇 특징이 Perl 5 최신버젼에 backport되고 있으며
(Perl 5.10의 state, given-switch구문, say 등등 )
Devel::Declare ( http://search.cpan.org/dist/Devel-Declare/ )
MooseX::Declare ( http://search.cpan.org/perldoc?MooseX::Declare )
등 언어 코어의 키워드를 조작할 수 있는 모듈들을 통해 스스로 모양을 변화,발전 시켜나가고 있습니다.
그리고 새로운 Perl 5의 OOP 프레임웍인 Moose ( http://moose.perl.org )는
MOP, Role지원등 Perl 6의 OOP구현과 거의 유사합니다.

그래서 모던한 Perl 5는 별 어려움 없이 Perl 6로 패러다임 시프트가 가능할 것이라고 보고있죠.

일례로
Unshortening URLs with Modern Perl
http://blog.jrock.us/articles/Unshortening%20URLs%20with%20Modern%20Perl.pod
같은 걸 보면 이게 Perl 맞나 싶을 정도죠 :)

redneval의 이미지

맞습니다. Perl 5 에서 Perl 6 로의 언어적인 하위호환성은 깨집니다.

(aero님 말씀처럼 별개의 언어라고 볼 수도 있겠네요.)

하지만 Perl 6 컴파일러는 Perl 5 코드를 다룰 수 있습니다. (좀 말장난이 된 것 같지만 아무튼 그렇습니다.)

Perl 6 공식 스펙 (http://perlcabal.org/syn/S11.html) 을 한 번 보시죠.

--------------------------------------

1. Perl 6 컴파일러는 use v6; 라는 구문이 없다면 default로 Perl 5 으로 간주하고 파싱하게 됩니다.

To get Perl 6 parsing rather than the <span>default Perl 5</span> parsing, we said you could force Perl 6 mode in your main program with:
 
    use v6;

2. Perl 6 와 Perl 5 코드를 섞어서 사용하는 것도 가능합니다.

In the other direction, to inline Perl 5 code inside a Perl 6 program, put use v5 at the beginning of a lexical block.
Such blocks can nest arbitrarily deeply to switch between Perl versions:
 
    use v6;
    # ...some Perl 6 code...
    {
        use v5;
        # ...some Perl 5 code...
        {
            use v6;
            # ...more Perl 6 code...
        }
    }

--------------------Signature--------------------
Light a candle before cursing the darkness.

aero의 이미지

뭐 결국에 목표는 같이 섞어쓸 수 있게 하는거지만 저 스펙의 구현은
다른 스펙 구현에 비해 우선순위가 높지는 않을 것 같습니다.

예전에 Pugs를 만든 Audrey Tang이 Pugs와 kp6를 섞어서 이런 시도를 한 적도 있죠
http://search.cpan.org/dist/v6/
http://search.cpan.org/dist/Pugs-Compiler-Rule/

지금은 없어졌지만 Perl 5를 Parrot위에 구현하던 Ponie라는 프로젝트 처럼
http://www.nntp.perl.org/group/perl.ponie.dev/2006/08/msg487.html
언어자체가 Parrot위에 구현된다면 섞어쓰지는 못하더라도 다른 언어 상호간에
호출이 가능해지겠만 이건 Perl이 아니라 다른 언어들도 마찬가지고...

h2h1995의 이미지

혹시 Tcl을 고려중이시라면 쉽게 Tcl에 적응할 수 있는 개발환경이 존재합니다.

http://tcltk.co.kr/?q=node/1289

스크린샷: http://archive.tcltk.co.kr/index.php?dir=MyTcl/screenshot
다운로드: http://archive.tcltk.co.kr/index.php?dir=MyTcl/win32-ix86

저는 Tcl을 배울당시 오래된 전통성 있는 언어임에 불구하고

쓸만한 개발툴이 없던 관계로 에디터와 인터프리터 만으로 배웠습니다.

위 링크의 툴이 제가 만든것이긴 하지만, 쓸만하다 생각합니다. ㅎㅎ

향후 멀티플랫폼 지원을 위해 wxWidgets으로 제작되어 졌습니다.

현재는 Win32 용만 존재합니다.

----------------
http://tcltk.co.kr

mirheekl의 이미지

안그래도 아까부터 그거 가지고 만지작 하고 있었습니다.
여러 글을 보니 KDLP에 제작자분이 계신듯했는데.. 역시 계셨군요 ^^;;
좋은 툴 만들어주셔서 감사합니다. 저로서는 한 3년 작업해도 못만들 만한 수준의 툴이네요 대단하십니다 ^^
맨티스 가입해서 틈틈이 리포트 하겠습니다. 감사합니다.

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

h2h1995의 이미지

IDE가 없어 불편해서 퇴근후 시간나는대로 만든 툴인데,

이렇게 까지 평가해 주시니 감사할 따른입니다.

저는 그저 사용해 주시는 것 만으로 만족합니다. ㅎㅎ

버그 레포팅 해주시면 신속히 반영토록 하겠습니다.

개선 의견도 환영합니다.

----------------
http://tcltk.co.kr