내가 가장 좋아하는 언어에서 가장 아쉬운 점

cleol의 이미지

5년도 더 전에 "내가 가장 좋아하는 언어에서 가장 아쉬운 점" 이라는 주제로 쓰레드를 열었던 적이 있습니다.

http://kldp.org/node/60555

문득 생각나서 다시 찾아봤더니 재미있네요.

그 동안 있었던 변화를 대충 생각해보면...
scala, clojure 같은 jvm 언어들이 상승세를 타고 있고,
python은 버젼3이 나왔지요. ruby2는 아직인가요?
perl6는 아직 실무에 쓸 수준은 아니지만 제대로 작동하는 구현체가 나왔습니다.
그리고 저 옛날 쓰레드에는 haskell 이야기가 없습니다만, 지금은 haskell이 꽤나 잘 알려졌지요.
c++은 c++0x final draft 가 나왔습니다.
자바는 큰 변화라고 할만한 것이 없었던 것 같고,
C#, php 는 잘 몰라서 패~스.

이전에 있던 불만들이 해결되었을 수도 있고,
아니면 새로 불만이 생겼을 수도 있고,
불만이라고 생각했던 것이 더 이상 불만이 아니게 됐을 수도 있고
뭐 그렇겠네요.

저는 요새 뭐 그냥 해주는대로 적당히 맞춰서 살자는 입장입니다.
그게 정신 건강에 좋은 것 같아요.
뭐 그냥 잡담이었습니다~.

익명 사용자의 이미지

English is my favorite language. but it is a problem that I don't understand it.

익명 사용자의 이미지

What did you do today?

고독한지존의 이미지

약간 Compiler쪽 이야기지만
대다수의 언어들은 언어 차원에서
Parallel Model을 support해주지 못합니다.

Intel의 ICC만 해도 TBB와 ArBB라는
TLP, 그리고 DLP에 대한 Library가 존재합니다.

하지만, 이녀석이 Language 자체적으로
Parallel을 support 해주지는 못하죠

또 France 국가 연구소인 INRIA의 경우
Graphite라는 것을 하는데
이것도 source 2 source compilation입니다.

결론은 많은 Research Domain에서
간접적으로 시도는 하지만 아직 직접적으로
이러한것을 제공해주는 녀석들이
연구용을 제외하고는 없습니다.

개인적으로 저는 이러한 부분들이
Language 차원에서 아쉬운 부분입니다.

乾坤一擲

lateau의 이미지

> python은 버젼3이 나왔지요. ruby2는 아직인가요?

ruby2부터 Matz씨가 절대적인 영향을 끼칠 듯 싶습니다.
들리는 소문으로는 1.9 committer들과 썩 좋은 관계는 아닌 듯 싶네요.
RubyConf가 엉망징창이었다는 후문입니다.

ruby2의 로드맵은 아래 url을 참고하시길.
개인적으론 Matz의 귀환을 많이 기대하고 있습니다. 정확히는 'Matz + 마에다' 커플(?) 이겠죠...

http://redmine.ruby-lang.org/projects/ruby-19/versions/5

> perl6는 아직 실무에 쓸 수준은 아니지만 제대로 작동하는 구현체가 나왔습니다.

Rakudo는 developing status입니다. 소스를 보면 아직 placeholder조차 되지 않은 부분이 많죠.
perl6 시놉시스도 아직 완전히 나온 상황이 아니구요. 앞으로도 변화가 많을 것 같습니다.

가끔 Parrot 개발 쪽과 아귀가 잘 맞지 않아 얼마전 dbm쪽이 동작 불가능한 상황이 오기도 했습니다.
현재는 양자가 공유하는 Channel을 마련하는 것으로 합의된 것 같네요.

perl6 std는 reference 레벨이라 이걸 릴리즈할 것 같지는 않네요.
haskell 베이스인 것도 아직 개발중이구요.

Parrot 자체가 개발 중이다 보니 rakudo가 정식 릴리즈되는 것도 먼 훗날의 이야기일지도 모르겠습니다.

--
I think to myself...what a emerging world.

익명 사용자의 이미지

pugs 가 아직도 개발중인지 몰랐습니다.
요새 pugs 이야기가 들리지 않길래 그냥 역사속으로 사라졌나 했더니 마지막 업데이트가 올해 5월 18일이군요.
그런데 http://perl6.org/compilers/features 이런 페이지에서도 pugs 는 언급이 안되고 있군요.
혹시 사정을 좀 아시는지요. 저는 planet perl six 를 가끔 들여다보는 정도로 정보를 얻고 있는데
혹시 정보를 얻을만한 다른 좋은 채널이 있을까요?

aero의 이미지

pugs는 더 이상 개발하지 않는걸로 알고 있습니다.
하지만 그 개발과정에서 나온 각종 testcase등은 후속 다른 구현체
개발에 많은 도움이 되고 있지요.

각 대표적 구현체들의 구현정도는
http://perl6.org/compilers/features
를 참고하세요.

http://planetsix.perl.org/ 만 꼼꼼히 봐도
대부분 perl6소식은 다 알수 있을 것 같네요.

몇개 더 들자면
http://www.nntp.perl.org/group/ 의 perl6관련 리스트들
http://www.parrotblog.org/
http://planet.parrotcode.org/
최근발표자료들
*Parrot
https://github.com/leto/presentations/blob/master/2011/YAPCNA/visual_intro_parrot/pres.pdf?raw=true
http://mksig.org/talks/yapcna11/slides/
*Perl6
http://jnthn.net/papers/2011-bjpw-rakudo.pdf
http://jnthn.net/papers/2011-bjpw-perl6.pdf
http://masak.org/carl/fpw-2011-excited/talk.pdf

이번 OSCON 2011에서 Perl계의 거두중 한명인 Damian Conway씨가
"Perl 6 is solid enough now. Start thinking about porting modules. Start thinking about reinventing modules."
같은 말을 했다는데 개인적으로는 아직은 좀 멀었다는 생각입니다.

Perl커뮤니티에는 Perl 6만 기다리고 있다기보다 Perl5에다가 Perl6의 특성을 backport해가며
지속적으로 Perl 5를 개선하고 버젼업하여 지금은 5.14.1 버젼까지 나왔습니다.
5.16쯤가면 지금은 별도 모듈인 Moose( http://moose.perl.org )로 구현하고 있는
Meta Object Protocol같은 것도 언어 코어에 구현해서 넣을거라는 얘기도 있는등
Perl 6가 거의 완전한 구현이 될 쯤이면 별 무리없이 Perl 5 -> Perl 6로 넘어가지 싶습니다.
그렇다고 Perl 5가 Perl 6가 나오면 사라지는 것이 아니라(지금의 Python 2.X, Python 3.X이 공존하는 것 처럼)
마치 C:C++ = Perl5:Perl6 의 관계로 계속 공존해 나가리라 봅니다.

보너스로 Perl5의 최근 업데이트 소식은

Unicode Support Shootout The Good, the Bad, & the (mostly) Ugly (Perl,PHP,Python,Ruby,Javascript,Java의 유니코드 지원 비교)
http://98.245.80.27/tcpc/OSCON2011/gbu/gbu.pdf

Perl 5.x 버젼별 새로운 기능 정리
http://www.effectiveperlprogramming.com/blog/category/perl/new-features

Continuing Evolution of Perl: Highlights of Perl 5.14
http://www.slideshare.net/activestate/continuing-evolution-of-perl-highlights-of-activeperl-514

OSCON 2011 - Perl 5.16 and beyond
http://www.slideshare.net/obrajesse/oscon-2011-perl-516-and-beyond

구독할 만한 Perl 5 RSS Feed
http://blogs.perl.org/
http://ironman.enlightenedperl.org/

익명 사용자의 이미지

내가 좋아하나는 연예인의 아쉬운점으로 보이지 ,,

cleol의 이미지

오늘(어제 ?) 자바 7이 나왔군요. 다들 알고 계시겠지만, closure는 포함되지 않았습니다.
불만이라면 불만이네요. 뭐 없는대로도 잘 삽니다만,
c++ 에도 closure 가 생긴 마당에 아쉽기는 합니다.

xyhan의 이미지

제가 너무 공부를 안한탓도있지만요..
정말 클로져 필요한가요..
뭔가 프레임웍이나 라이브러리 만들때 괜찮을것 같긴 하지만요..
아마 나와도 저는 안쓸것 같습니다..
안쓰면 손해인가요..?

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

cleol의 이미지

"정말" 필요하냐고 물으시면 ... 모르겠습니다 ^^;
뭐 inner class 만 가지고서도 충분하다면 ... 충분하지요.
하지만 간결하게 표현할 수 있는 문법적인 지원이 있으면 "더" 좋은 것도 분명하지요.
코드 작성 중에 boilerplate 코드가 짜증날 때가 많이 있으니까요.
있어도 안쓸 것까지야 있겠습니까?
저라면 없으면 없는대로 살기야하겠지만, 있으면 잘 쓸 것 같습니다.
c++ 코딩할 때 어떤 때는 stl 알고리즘을 쓰기보다는 그냥 몇 줄 직접 쓰고 마는 것이 functor를 코딩하기가 귀찮아서였습니다.
그런데 c++0x 에 lambda가 포함되고, gcc 가 이를 지원한 이후로는 확실히 stl 알고리즘을 이용하는 일이 더 많아졌습니다.
그리고 결과적으로 코드에 의도가 더 간결하고 명확하게 드러나는 것 같구요.
말씀하신대로 있는 것을 안쓰면 손해아닐런지요.

ifree의 이미지

C++0x 에서 closure 가 제대로 지원되고 있나요?
외부 변수가 캡쳐되는 정도까지인것 같은데요?

winner의 이미지

Closure라는 단어의 의미가 외부변수 가두기니까요. 어떤 특징이 아쉬운가요?

ifree의 이미지

캡처된 외부 변수가 lexical binding 에 따라 원래 외부 변수가 바뀌어도 캡처된 변수는 보존되는가의 여부인데,
전에 테스트할 때 안되던 기억이 있네요.
또한, 외부 변수를 캡처한 코드블록이 함수의 인수나, 함수의 리턴값으로 사용될 수 있는지도 중요.

cleol의 이미지

> 캡처된 외부 변수가 lexical binding 에 따라 원래 외부 변수가 바뀌어도 캡처된 변수는 보존되는가의 여부

그게 안되면 (lexical) closure 라고 부를 수 없지요.

> 또한, 외부 변수를 캡처한 코드블록이 함수의 인수나, 함수의 리턴값으로 사용될 수 있는지도 중요.

물론 됩니다~. 그렇지 않으면 뭐에 쓰겠습니까?

랜덤여신의 이미지

클로저 이전에 람다라도 생겼으면 좋겠습니다. 함수 하나 쓰자고 클래스를 통째로 작성하는 일을 반복하니까 짜증이...

찾아보니 람다 지원을 자바 8로 미뤘다고 하는데, 2012년 말 출시군요. 그런데 자바 7도 처음 출시 예정보다 1년 늦게 나온 걸 보면 신뢰가 안 갑니다.