Windows 환경에서도 활용성 있는 스크립트 언어 추천 좀 해주세요.

freezm7의 이미지

제가 아는 언어는

C, C++, Java, C# ... C만 빼곤 다 OOP 에 컴파일해서 실행하는 (큰 갈래에서) 비슷한 언어들인데요,

이런 언어들과 짬뽕해서 쓰면 프로그래밍이 더 즐거워지는 스크립트 언어 하나만 추천해주세요.

Perl, Python, Ruby 등 많지만,, 윈도우용 응용 프로그램 만드는데 도움이 되는 녀석이 뭔지 잘 모르겠네요...

추천 또는 경험담 좀 부탁드려볼께요~

kkb110의 이미지

저같으면 여러가지 이유로 python을 택하겠습니다만,

윈도우라서 특별히 선택기준에 영향을 미치는 요소가 있나요???

freezm7의 이미지

O'reilly 책은 1.5 버전 기준이라고 해서 별로인듯 하구요,

웹에 있는 거 말고, 괜찮은 책 추천좀 해주세요.

즐겁게 살아 볼까나~*

aero의 이미지

Perl

윈도우용 Perl은 딸기펄
http://strawberryperl.com/

유닉스환경에서와 똑같이 CPAN( http://search.cpan.org/ )을 통해
모듈을 설치해서 사용할 수 있습니다.

MS의 차세대 스크립트인 PowerShell도 Perl과 아주 유사한 문법을 채용하고 있어서
나중에 PowerShell을 쉽게 이해하는데도 도움이 됩니다.

Perl에 대한 정보는 최근 사이트를 개편한 http://www.perl.org/ 에 가면 잘 정리되어있습니다.

lifthrasiir의 이미지

궁금해서 그런 겁니다만, PowerShell의 어떤 부분이 Perl과 유사한지 궁금합니다. PowerShell은 기본적으로 유닉스 셸의 특성을 바탕으로 .NET을 잘 버무려 만든... 뭐랄까 .NET 기반 tcl 같은 느낌도 상당히 많이 받았는데, 제가 그리 쓸 일이 없어서 다른 면에 대해서 알고 싶습니다.

aero의 이미지

Perl과 Powershell 문법의 비슷한 점을 들자면
다음과 같은 것들을 얘기할 수 있을 것 같네요.

* 변수에 sigil을 사용

<powershell>
$var =1
$array = @(1,2,3)
$hash = @{a=1;b=2;c=3}
 
<perl>
$var=1;
@array = (1,2,3);
%hash = (a=>1, b=>2, c=>3);

$var 처럼 $를 붙이는 sigil을 사용한다는 점이 Perl과 비슷하나 Perl과는 달리 php처럼 무조건 $을 씀
이것은 sigil로 변수의 내용을 유추할 수 있는 Perl과는 조금 다름.

*슬라이스(slice) 문법

<powershell>
(1,2,3,"test")[0,2]
 
<perl>
(1,2,3,"test")[0,2];

*범위연산자

<powershell>
$array = 1..5
 
<perl>
@array = 1..5;

* $_ 기본변수

<powershell>
1,2,3 | foreach { Write-host $_ }
 
<perl>
foreach (1,2,3) { print $_,"\n" }

* 보간(interpolation)
<powershell>
"var is $var. ${var}th"
 
<perl>
"var is $var. ${var}th"

* 익명함수 선언과 호출

<powershell>
$func = { return $args[0]*2 }
&$func(2)
 
<perl>
$func = sub { return $_[0]*2 };
&$func(2)
$func->(2)

*heredoc, here-string

<powershell>
$a = "bar"
$b = @"
foo "baz"
'qux' $a
"@
 
<perl>
$a = "bar";
$b = <<"EOF";
foo "baz"
'qux' $a
EOF
 
둘의결과는
foo "baz"
'qux' bar
 
<powershell>
$a = "bar"
$b = @'
foo "baz"
'qux' $a
'@
 
<perl>
$a = "bar";
$b = <<'EOF';
foo "baz"
'qux' $a
EOF
 
둘의 결과는
foo "baz"
'qux' $a

lifthrasiir의 이미지

펄, 파이썬, 루비 모두 win32 지원은 좋은 편입니다. 셋 다 윈도 인스톨러를 지원하며 많은 표준 라이브러리가 윈도도 고려하여 짜여져 있습니다. 다만 펄의 경우 aero 님께서 말씀하신 대로 Strawberry Perl을 쓰시는 걸 추천하고요.

윈도 GUI만 따지자면, 펄은 Win32::GUI 패키지를 쓰면 되지 않을까 싶고, 파이썬은 pywin32(는 다소 저수준입니다만), wxPython, PyQt 같은 패키지를 사용하면 될 것입니다. 루비도 wxRuby나 FXRuby(는 역시 저도 별로 안 봤습니다) 같은 것들이 있습니다. 써 놓고 보니까 wxWindows와 Qt가 세상을 장악하고 있군요. (...)

만약 외부 확장 등의 도움을 받지 않고 해당 언어만으로 GUI 프로그래밍을 하신다면 좀 복잡할 것이라 생각합니다. 펄의 Win32::GUI는 GUI 툴킷은 펄입니다만 아래에는 XS 바인딩이 깔려 있는 걸로 알고 있습니다. 파이썬은 ctypes라는 걸출한 외부 함수 인터페이스(FFI)가 존재함에도 불구하고 그나마 쓸만한 순수 파이썬 툴킷은 Venster 뿐이고 그마저도 좀 불안정합니다. (실은 개인적으로 좀 만들고 있는 게 있지만... 뭐 제낍시다.) 루비 쪽의 FFI 실태(?)는 제가 잘 모르므로 생략.

aero의 이미지

Perl이 지원하는 GUI툴킷으로
Tk,Gtk,Qt,wxWidget,FLTK등이 있으며 Windows에서는 말씀하셨다시피 Win32::GUI로 winapi를 사용하여 GUI를 구현 가능합니다.
그런데 Win32::GUI는 안정적이긴 하지만 사용하는 공개된 프로그램은 http://www.darserman.com/Perl/Oasis/ 빼고는 잘 안보이더군요. 오히려 GUI 자동화 및 테스팅을 위한 Win32::GuiTest( http://search.cpan.org/perldoc?Win32::GuiTest ) 모듈이 더 많이 쓰이는 듯

요즘엔 Padre( http://padre.perlide.org/ )라는 Perl통합환경이 wxWidget Perl바인딩으로 활발하게 개발되고있고 UNIX류 뿐만 아니라 Windows에서도 잘돌아가며 http://padre.perlide.org/download.html 에가면 딸기펄에 Padre를 같이 패키징해서 바로 써볼 수 있도록 제공도 하고 있습니다.( 딸기펄 깔고 cpan Padre 명령으로 직접 설치해도 잘 설치됨 )

또 Perl은 Alien::wxWidgets 같이 Alien::*계 모듈을 통해서 필요한 GUI라이브러리를 Perl의 고립된 모듈구조안에
설치하는것도 지원하여 시스템에 설치된 GUI 라이브러리에 의존성을 가지지 않고 Perl만을 위한 독립적 환경으로 사용가능합니다. (이런 구조는 GUI툴킷 업그레이드시 바인딩라이브러리 재컴파일 불필요, PAR등을 이용한 패키징 및 배포에 상당한 잇점을 가집니다.)

참고 URL
http://www.mabook.com/blog/146
http://www.mabook.com/blog/147
http://www.cava.co.uk/packaging/
http://honeyperl.tistory.com/entry/Tool-Cava-Packager
http://code.google.com/p/camelbox/
http://honeyperl.tistory.com/category/Perl/Perl%20GIMP%20Tool%20Kit

freezm7의 이미지

답글 감사합니다.

예전에 (기억도 안나는 7~8년전쯤)
펄을 잠시 배우려닥, 왠지 난해해서 포기한 기억이 있는데요...

그래서 파이썬을 어제부터 보구 있는데,
일단 깔끔한 느낌이 좋군요.
라이브러리는 펄보다 못하다고 하시는데, 일단 파이썬으로 스크립트 언어에 적응 좀 해봐야겠네요.

C like language만 하다가, 파이썬 배우는건데, 상당히 효율적이라는 느낌이 벌써 드네요.
왜 맨날 C like language 만 파고 들었는지...

즐겁게 살아 볼까나~*