Perl 6가 Parrot과 함께 열심히 개발 중이며 얼마 전 Parrot은 0.7.0 버젼을 찍었다. 아마 1.0이 되는 날이 Perl 6, Parrot의 첫 정식 릴리즈가 될 것이다, Perl 6가 언제 나와요? 물어보면 농담삼아 하는 "크리스마스에 나옵니다."라는 말에서 개인적으로 그 크리스마스가 올해 크리스마스는 힘들더라도 내년쯤은 되지 않을까 생각되는데 이미 Perl 6는 구현상 수천 개 이상의 Spec테스트를 통과한 상태라고 한다.
이런 분위기를 타고 슬슬 Perl 6 관련 정보들을 취급하는 싸이트들이 늘어가고 있는데....
http://perlgeek.de/blog-en/perl-5-to-6/
에 시리즈로 Perl 6가 어떤 모습인지 소개하는 포스팅들이 올라오고 있다. Perl 6문법은 Perl 5문법과 다소 다르기도 하지만 더 강력하고 깔끔해졌다. 하지만 Perl 5와 Perl 6는 그 철학과 문화를 공유하므로 Perl 5를 제대로 이해하고 구사하는 사람은 금방 적응할 수 있는 문법이다.
특히 변수 앞에 붙는 sigil은 Perl 6에서도 사용법은 약간 다르지만 그대로 가져가고 있다. Perl을 폄훼하는 사람은 sigil때문에 코드가 읽기 힘들다고 헐뜯기도 하는데 ( Perl의 sigil을 까면서도 동시에 PHP의 엉성한 $ sigil과 Perl과는 다른 용도긴 하지만 Ruby의 $,@,@@같은 sigil은 용서가 되는지 의문이다. ) 개인적으로는 변수만 보고 이것이 어떤 자료형이라는 것을 바로 파악할 수 있기 때문에 유용성이 훨씬 많다고 생각한다. 그리고 sigil은 키워드(keyword)들과 변수들의 이름공간(namespace)과의 충돌을 방지하여 언어의 기능추가와 확장에 더 유리하다.
다가올 Perl 6세상을 http://perlgeek.de/blog-en/perl-5-to-6/ 보고 감을 잡아보도록 하자!
이런 분위기를 타고 슬슬 Perl 6 관련 정보들을 취급하는 싸이트들이 늘어가고 있는데....
http://perlgeek.de/blog-en/perl-5-to-6/
에 시리즈로 Perl 6가 어떤 모습인지 소개하는 포스팅들이 올라오고 있다. Perl 6문법은 Perl 5문법과 다소 다르기도 하지만 더 강력하고 깔끔해졌다. 하지만 Perl 5와 Perl 6는 그 철학과 문화를 공유하므로 Perl 5를 제대로 이해하고 구사하는 사람은 금방 적응할 수 있는 문법이다.
특히 변수 앞에 붙는 sigil은 Perl 6에서도 사용법은 약간 다르지만 그대로 가져가고 있다. Perl을 폄훼하는 사람은 sigil때문에 코드가 읽기 힘들다고 헐뜯기도 하는데 ( Perl의 sigil을 까면서도 동시에 PHP의 엉성한 $ sigil과 Perl과는 다른 용도긴 하지만 Ruby의 $,@,@@같은 sigil은 용서가 되는지 의문이다. ) 개인적으로는 변수만 보고 이것이 어떤 자료형이라는 것을 바로 파악할 수 있기 때문에 유용성이 훨씬 많다고 생각한다. 그리고 sigil은 키워드(keyword)들과 변수들의 이름공간(namespace)과의 충돌을 방지하여 언어의 기능추가와 확장에 더 유리하다.
다가올 Perl 6세상을 http://perlgeek.de/blog-en/perl-5-to-6/ 보고 감을 잡아보도록 하자!
2008년 8월 23일 역사적인 Korean Perl Workshop 2008에 다녀왔다. 공간관계상 신청인원을 다 받지 못해 80여 명이라는 제한 된 인원 속에 열렸지만 9시간에 다다르는 시간동안 꽉 차인 일정 속에 진행되는 행사시간 동안 참가자들의 열성과 몰입도는 정말 최고였다.
준비하시고 발표하시고 참석하신 모든 분들 정말 수고하셨습니다.!!!
이제 행사 홈페이지에 발표자료들도 올라왔으니 안타깝게 참석 못한 분들은 보시길~
준비하시고 발표하시고 참석하신 모든 분들 정말 수고하셨습니다.!!!
이제 행사 홈페이지에 발표자료들도 올라왔으니 안타깝게 참석 못한 분들은 보시길~
국내 Perl 유저들이 다양한 커뮤니티 활동을 통해 기반을 다져오다 2008년 8월 23일 마침내 Perl Workshop을 개최하게 되었다.
Perl Workshop은 가장 큰 Perl 컨퍼런스인 YAPC(Yet Another Perl Conference)가 대륙단위로 열리는 행사인데 반해 주로 국가단위로 열리는 풀뿌리 컨퍼런스정도로 생각하면 되겠다.
Perl 커뮤니티는 Perl의 창시자 Larry Wall이 강연에서 "문화가 없는 언어는 죽습니다. 문화가 없다면 그것은 언어를 설계하기 위한 지적연습일 뿐입니다. 여러분은 동참해서 따를 문화를 가져야 합니다. 그것이 저를 인류학적 관념으로 이끌었고, 문화는 언어를 고칠 수 있으나 언어는 문화를 고칠 수 없기 때문에 Perl 문화가 언어 그 자체만큼 중요한 것 입니다." 라고 밝힌 적이 있듯이 타언어 커뮤니티들에서는 보기 힘든 특유의 인류학적인 상호존중과 관대, 성숙한 협력의 문화를 가지고 있다. 따라서 Perl을 사용한다는 것은 언어를 이용한다는 의미와 함께 그러한 문화를 누린다는 의미도 있는것이다.
아무쪼록 이번 행사로 인해 저변이 확대되어 언젠가는 일본에서만 열렸던 YAPC::Asia가 한국에서도 열리는 날이 오기를 기대한다.
행사 홈페이지: http://event.perl.kr/kpw2008/
현재 미국의 포틀랜드에서 열리고 있는 OSCON 2008의 Damain Conway씨의 강연을 보다가
참고:
http://technocation.org/node/571/play
http://channy.creation.net/blog/531
그의 코드에서
my @list = sort <cat dog fish horse eagle ape rat camel>;
라는 요상한 문법을 보았다. Perl 6문법에서는 http://www.perl.com/lpt/a/992 에 나와 있다시피
이런 식으로 변경된다는데 콘사마(Damian Conway)씨가 강연에서 보여주는 코드는 분명히 Perl 5코드인데 저런 게 될까? 하고 직접 테스트해보니 허걱! 정말 작동했다.
>perl -e 'print join "-", <cat dog fish>;'
cat-dog-fish
Perl에서 cat, dog, fish 문자열로 이루어진 리스트를 만들려면
my @list = ('cat', 'dog', 'fish');
처럼 하거나 ' '와 , 노가다를 줄이고자 제공하는 qw/ / 연산자를 사용하여
my @list = qw/cat dog fish/;
처럼 해주면 공백을 기준으로 문자열을 잘라서 리스트로 반환해준다.
그렇다면
my @list = <cat dog fish>;
에서 < >는 qw/ / 같은 역할을 해준다는 것인데 비밀이 뭘까 고민하다 문득 B::Deparse 모듈이 생각나서 그것을 이용해서 Perl이 실제로 어떻게 해석하는지 살펴보았다.
>perl -MO=Deparse -e 'my @list=<cat dog fish>;'
use File::Glob ();
my(@list) = glob('cat dog fish');
-e syntax OK
헉! 그 비밀은 바로 glob 함수로 동작하는 것이었다.
glob함수는 쉘에서 한꺼번에 여러 파일을 지정하는 *.txt 형식 같은 문자열을 넘기면 현 디렉토리에서 해당되는 모든 파일의 리스트를 넘겨준다. 그리고 공백으로 분리된 문자열을 넘기면 확장할 파일명이 있으면 확장되고 없으면 그냥 문자열 자체를 리스트로 넘겨주는 동작을 했다.
만약에 현 디렉토리에 a.txt, b.txt란 파일이 있는 상태에서
my @list = <*.txt>;
하면 @list에는 a.txt, b.txt 가 들어가며
my @list = <*.txt cat dog fish>;
하면 @list에는 a.txt, b.txt, cat, dog, fish 가 들어가는 것이다.
원래 glob은 qw/ / 연산자 같은 목적으로 만든 것은 아닌데 만들어 놓고 보니 qw/ /비슷하게도 사용할 수 있다는 것을 발견하고 콘사마는 그렇게 사용한 것이었다. 이런 것은 만들 때는 의도하지 않은 것인데 하다 보니 되더라~ 하는 것(Accidental Features)들중 하나가 아닐까 생각된다.
참고:
http://blog.plover.com/prs/accidental-syntax.html
따라서 쉘에서 적용되는 filename expansion에 해당 되지 않는 문자열을 넘기면 qw/ /처럼 사용할 수 있었다.
하지만 qw/ /와는 다르게 작동하는 부분이 있는데 qw/ /는 안의 문자열에 변수명이 들어가면 보간(interpolation)이 일어나지 않는 데 반해 < >는 보간이 일어난다.
>perl -e '$a=1; $b=2; print join "-", qw/$a $b/;'
$a-$b
>perl -e '$a=1; $b=2; print join "-", <$a $b>;'
1-2
콘사마님 저희를 당황케 하지 마시옵소서~
참고:
http://technocation.org/node/571/play
http://channy.creation.net/blog/531
그의 코드에서
my @list = sort <cat dog fish horse eagle ape rat camel>;
라는 요상한 문법을 보았다. Perl 6문법에서는 http://www.perl.com/lpt/a/992 에 나와 있다시피
# Perl 6 # Perl 5
my @array = <foo bar baz>; my @array = qw(foo bar baz);
my %hash = <a b c d e f g h>; my %hash = qw(a b c d e f g h);
my $queue = %hash<q>; my $queue = $hash{'q'};
my @vows = %hash<c a g e>; my @vows = @hash{qw(c a g e)};
이런 식으로 변경된다는데 콘사마(Damian Conway)씨가 강연에서 보여주는 코드는 분명히 Perl 5코드인데 저런 게 될까? 하고 직접 테스트해보니 허걱! 정말 작동했다.
>perl -e 'print join "-", <cat dog fish>;'
cat-dog-fish
Perl에서 cat, dog, fish 문자열로 이루어진 리스트를 만들려면
my @list = ('cat', 'dog', 'fish');
처럼 하거나 ' '와 , 노가다를 줄이고자 제공하는 qw/ / 연산자를 사용하여
my @list = qw/cat dog fish/;
처럼 해주면 공백을 기준으로 문자열을 잘라서 리스트로 반환해준다.
그렇다면
my @list = <cat dog fish>;
에서 < >는 qw/ / 같은 역할을 해준다는 것인데 비밀이 뭘까 고민하다 문득 B::Deparse 모듈이 생각나서 그것을 이용해서 Perl이 실제로 어떻게 해석하는지 살펴보았다.
>perl -MO=Deparse -e 'my @list=<cat dog fish>;'
use File::Glob ();
my(@list) = glob('cat dog fish');
-e syntax OK
헉! 그 비밀은 바로 glob 함수로 동작하는 것이었다.
glob함수는 쉘에서 한꺼번에 여러 파일을 지정하는 *.txt 형식 같은 문자열을 넘기면 현 디렉토리에서 해당되는 모든 파일의 리스트를 넘겨준다. 그리고 공백으로 분리된 문자열을 넘기면 확장할 파일명이 있으면 확장되고 없으면 그냥 문자열 자체를 리스트로 넘겨주는 동작을 했다.
만약에 현 디렉토리에 a.txt, b.txt란 파일이 있는 상태에서
my @list = <*.txt>;
하면 @list에는 a.txt, b.txt 가 들어가며
my @list = <*.txt cat dog fish>;
하면 @list에는 a.txt, b.txt, cat, dog, fish 가 들어가는 것이다.
원래 glob은 qw/ / 연산자 같은 목적으로 만든 것은 아닌데 만들어 놓고 보니 qw/ /비슷하게도 사용할 수 있다는 것을 발견하고 콘사마는 그렇게 사용한 것이었다. 이런 것은 만들 때는 의도하지 않은 것인데 하다 보니 되더라~ 하는 것(Accidental Features)들중 하나가 아닐까 생각된다.
참고:
http://blog.plover.com/prs/accidental-syntax.html
따라서 쉘에서 적용되는 filename expansion에 해당 되지 않는 문자열을 넘기면 qw/ /처럼 사용할 수 있었다.
하지만 qw/ /와는 다르게 작동하는 부분이 있는데 qw/ /는 안의 문자열에 변수명이 들어가면 보간(interpolation)이 일어나지 않는 데 반해 < >는 보간이 일어난다.
>perl -e '$a=1; $b=2; print join "-", qw/$a $b/;'
$a-$b
>perl -e '$a=1; $b=2; print join "-", <$a $b>;'
1-2
콘사마님 저희를 당황케 하지 마시옵소서~
근래 Google에서 발표해 큰 이슈가 되었던 Google App Engine !
하지만 Python만 지원해서 타 언어 사용자들이 아쉬워하던 차에 App Engine개발팀에서 요청을 받아서 많은 득표를 얻는 언어들부터 포팅해주겠다는 말에 http://code.google.com/p/googleappengine/issues/list 에 몰려가서 투표한다고 난리가 났었다.
여기서 아쉽게도 Perl은 Java, PHP, Ruby 다음으로 4위를 기록하여 암운이 드리우던 차에 하늘이 열리며 희망의 빛줄기가 내리쬐기 시작했는데 그 이름은 Brad Fitzpatrick!!
그럼 Brad Fitzpatrick이 누구냐? 그는 요즘 좀 규모가 큰 웹서비스를 한다면 dog이나 cow나 언급하곤 하는 memcached와 그 외 등등.. 그리고 OpenID의 창시자이기도 한 천재 Perl 해커이다.
참고: http://aero.dnip.net/blog/2007/11/livejournal.html
그는 현재 Google에 입사해서 OpenSocial쪽 일을 주도하고 있는데 Google내의 3대 메이져 언어가 C++,Java,Python 인지라 15년 동안 사용해오던 Perl을 제대로 쓰지 못하고 손을 벌벌 떨며 Perl 금단현상을 일으키던 차에 이번에 Google App Engine팀으로 부터 허가를 받아 Google에서 시행하고 있는 자신의 본 업무 외에 할당되는 일명 20% 프로젝트 시간을 Perl on Google App Engine구현에 할애하기로 하였다고 한다.
Brad는 그 전초전으로 Google App Engine의 Protected environment을 에뮬레이션 하기 위한 Sys::Protect란 모듈을 만들어 얼마 전 CPAN에다 올렸다. 그리고 Google 내부의 데이터 메시지 전송 프로토콜인 Protocol buffers의 Perl구현은 이미 상당한 진척이 있었고 조만간에 공개한다고 한다.
Brad Fitzpatrick의 활약으로 App Engine의 Perl구현을 볼 수 있게 될 날이 머지않은 것 같다.
참고:
http://radar.oreilly.com/2008/07/perl-on-app-engine.html
http://brad.livejournal.com/2388824.html - Brad의 Perl on App Engine에 대한 글
그리고 App Engine 같은 Cloud Computing이 요즘 한창 이슈가 되고 있는데 Perl쪽에도 이와 관련해서 다음과 같은 활발한 움직임이 일어나고 있어 그 귀추가 주목된다.
참고:
http://code.google.com/p/cloud-perl/
http://jjnapiorkowski.vox.com/library/post/perl-catalyst-and-cloud-computing.html
하지만 Python만 지원해서 타 언어 사용자들이 아쉬워하던 차에 App Engine개발팀에서 요청을 받아서 많은 득표를 얻는 언어들부터 포팅해주겠다는 말에 http://code.google.com/p/googleappengine/issues/list 에 몰려가서 투표한다고 난리가 났었다.
여기서 아쉽게도 Perl은 Java, PHP, Ruby 다음으로 4위를 기록하여 암운이 드리우던 차에 하늘이 열리며 희망의 빛줄기가 내리쬐기 시작했는데 그 이름은 Brad Fitzpatrick!!
그럼 Brad Fitzpatrick이 누구냐? 그는 요즘 좀 규모가 큰 웹서비스를 한다면 dog이나 cow나 언급하곤 하는 memcached와 그 외 등등.. 그리고 OpenID의 창시자이기도 한 천재 Perl 해커이다.
참고: http://aero.dnip.net/blog/2007/11/livejournal.html
그는 현재 Google에 입사해서 OpenSocial쪽 일을 주도하고 있는데 Google내의 3대 메이져 언어가 C++,Java,Python 인지라 15년 동안 사용해오던 Perl을 제대로 쓰지 못하고 손을 벌벌 떨며 Perl 금단현상을 일으키던 차에 이번에 Google App Engine팀으로 부터 허가를 받아 Google에서 시행하고 있는 자신의 본 업무 외에 할당되는 일명 20% 프로젝트 시간을 Perl on Google App Engine구현에 할애하기로 하였다고 한다.
Brad는 그 전초전으로 Google App Engine의 Protected environment을 에뮬레이션 하기 위한 Sys::Protect란 모듈을 만들어 얼마 전 CPAN에다 올렸다. 그리고 Google 내부의 데이터 메시지 전송 프로토콜인 Protocol buffers의 Perl구현은 이미 상당한 진척이 있었고 조만간에 공개한다고 한다.
Brad Fitzpatrick의 활약으로 App Engine의 Perl구현을 볼 수 있게 될 날이 머지않은 것 같다.
참고:
http://radar.oreilly.com/2008/07/perl-on-app-engine.html
http://brad.livejournal.com/2388824.html - Brad의 Perl on App Engine에 대한 글
그리고 App Engine 같은 Cloud Computing이 요즘 한창 이슈가 되고 있는데 Perl쪽에도 이와 관련해서 다음과 같은 활발한 움직임이 일어나고 있어 그 귀추가 주목된다.
참고:
http://code.google.com/p/cloud-perl/
http://jjnapiorkowski.vox.com/library/post/perl-catalyst-and-cloud-computing.html

