제목 : [구글비디오] Python 3000 by Guido van Rossum

시간 : 1:06:41

추천 : (새 언어를 개발하는 분들께) 강추천



내용 :
파이썬 개발자 Guido가 말하는 파이썬 3000에 관한 이야기.
    [2:00] 파이썬 3000 철학
       - 완전히 새로운 언어를 만들지 않는다 (지금도 꽤 쓸만하다)
       - 초기의 디자인 버그를 잡는다
       - 비호환되는 변화를 허용한다
       * Python 3000 = Python 3.0 = Py3k

    [5:29] 파이썬 3000 프로세스
       - 프로세스가 없다면 정리가 안될 정도로 제안들이 많아서
       - Perl 6꼴이 안나려고
       - 예: 언제 릴리즈? 2.x와 3.x는 어떻게 관리할 것인가? 비호환성 정도는?

    [8:45] 발표 일정
       - 알파버전: 내년 정도?
       - 2.x와 3.x는 동시에 개발될 것이다.

    [11:15] 비호환되는 정도는?
       - 새로운 키워드가 추가될 것이다.
       - dict.keys() 등등이 리스트가 아닌 이터레이터(iteraor)를 반환할 것이다.
       - 모든 스트링이 유니코드로 간다
       - 더이상 <>를 != 로 쓰지 않는다
 
    [16:55] 2.x에서 3.x로의 변환은?
       - 어느 정도는 툴(예를 들면, pychecker)로 도와주겠다

    [23:35] "Five is right out"
       - macro 등등은 추가되지 않을 것이다.
       - 일반적으로, 혁신적 기능으로 추가되지 않을 것이다. (항상 나중에 할 수 있잖아)
       * perl 6는 정말 끝내줄꺼야. 하지만, perl 5 사용자들은 계속 perl 5만 쓸껄...

    [27:50] 파이썬 3000 특징
       - 겉에만 조금 손 봤을 뿐이야.
       - 내 블로그 artima.com/weblogs 를 보든가.

    [29:39] 기본 클린업
       - 몇 가지 청소를 할거다.
         예를 들면, 지금은 string인 exception이 BaseException의 자손이될 것이다.

    [37:50] 간단한 문법 수정
       - 예를 들면, except E1, E2가 except (E1, E2)로 해석되던거 등등

    [40:33] range() -> xrange()
   
    [41:15] zip() -> izip()

    [41:38] lambda는 그냥 두기로 했다
       - 작년에는 없앤다고 발표했었지만, 많은 사람들이 불평을 한 것도 있고
       - lambda를 대체할 것을 찾지 못 했다

    [43:40] string type 수정

    [49:00] 새로운 I/O

    [50:30] print가 함수가 된다
       - statement로서의 print가 프로그램과 언어의 점진적 진화에 걸림돌이 된다

    [54:00] ==, !=는 유지하고, <, <=, >, >= 는 삭제한다

    [55:55] Generics, Overloaded functions
       - 고민중이다. 이걸 어떻게 할 것인지...

    [59:27] QnA
       Q. static typing으로 갈 생각이 있는가? [1:00:10]
       A. 좋지만, py3k에는 힘들것으로 너무 많은 변화가 필요하다.

감상 :

  
행복한 고민처럼 보입니다.
    자신이 만든 언어(도구)가 수많은 개발자들의 사랑을 받고
    계속 수정해 더 좋은 언어로 만들어갈 기회를 갖는 개발자가 몇이나 될까.
    귀도의 발표는 처음봤는데 매우 자신만만해 보인다.

    언어가 발전해 나가면서 하위호환성에 실패할 시점에 도달할 수 있는데
    귀도가 그런 상황에 있다. 하지만, 매우 자신만만하게 말하는 것을 보면
    충분히 극복하리라 본다. 결국 자신의 말처럼, 파이썬 2.x 때문에
    파이썬 3.x를 무시하는 상황이 오지 않길 바란다.

    얼마전에 Lua 2.x 버전을 쓰는 툴을 컴파일한 적이 있는데
    이게 Lua 3.x에는 쓸 수 없었다. 아마도 Lua의 경우 먼저 이런 상황에 처했던 듯 싶은데
    사용자 입장에서는 짜증나는 일이다. 내 경우엔 Lua 3.x이 인스톨 되어 있어서
    이걸 지우고 다시 하위 버전을 깔아야 했다.
   
    * Perl 6에는 무슨 사연이 있는지 알아 봐야 겠다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by PLTeacher
제목 : Scheme as an introductory language
          by Viviane Jonckers

시간 : 33분

추천 : 추천 (Scheme을 모르시는 분들, 꼭 보세요, 다만, 12분 30초이후부터)



내용 :
    [00:01:02] 왜? Scheme을 첫 언어로 가르쳐야 하는가?
    - 메타 (Meta) 개념은 CS에서 매우 중요한데,
     이 개념을 통해서 좀더 밑바닥의 기본 원리를 알 수 있기 때문.

    [00:03:50] 메타프로그래밍
    - 메타프로그래밍은 프로그램을 작성하거나 조작하게 하는 프로그램을 작성하는 행위.
       예를 들면, 컴파일러나 인터프리터, 디버거 등을 작성하는 행위
    - 메타프로그래밍에 쓰이는 언어가 "메타언어(meta-language)"이고,
       메타언어는 reflexivity(성찰성, 재귀성)라는 능력이 필요하다.

    [00:04:57] Reflection(리플렉션)
    - CS에서, 리플렉션은 프로그램이 자신을 보거나 수정할 수 있는 능력을 말한다.
       리플렉션을 지원하는 언어면, 실행시간에 소스코드를 읽거나 수정해서
       값을 생성하거나 문자열로부터 함수나 클래스를 생성해서 실행할 수 있다.
      
    [00:08:00] Meta Object Protocol (MOP)
    - MOP은 메타 클래스를 통해서 내부 객체 시스템에 접근하는 방법으로
      두가지 유형이 있는데:
       * Introspection: 객체나 클래스의 값을 읽는다
       * Intercession: 객체나 클래스의 행동을 바꾼다
    - Java core reflection API는 introspection이고, CLOS는 intercession을 지원한다.

    - 이제까지는 서론이었고,

    [00:12:30] 컴퓨터학자들을 위한 첫번째 언어로서의 Scheme
    - 왜? 1) 거의 모든 학생들이 Scheme을 본 적이 없으니  고정관념 따위가 있을 수 없고
            2) 문법이 초간단
            3) 인터프리터환경이라서 쉽다

    [00:13:57] Dr.Scheme Demo

    [00:14:30] 하나의 언어로 다양한 스타일을 지원한다
    - functional programming
    - imperative programming
    - data-oriented programming
    - stream programming
    - constraint programming
    - logic programming

    [00:15:26] 주요 특징
   
    * 예를 들면, cons-cells 즉, list를 사용하는 법을 가르친 후,
       program 즉, 소스코드가 list임을 보여준다.
       즉, 넌 지금 인터프리터를 만든거야,라고 말해준다...는 가공한 신공!

    - 이후엔 앞에서 나열한 주요 특징들을 하나하나 간략하게 살펴봅니다.

    [00:21:22] Functional dynamic typing

    [00:22:40] Lexical scope

    [00:23:28] Functions as parameter

    [00:25:50] Functions as return value, closures

    [00:27:00] Cons as universal building block

    [00:28:22] Programs are data

    [00:30:09] Meta-circular interpreter (skip)

    [00:30:90] Adding new syntax through macros
    - Macro !!!

    [00:31:15] Meta-circular interpreter Eval
   
감상 :
    기본적으로 음향이 너무 안좋았다.
    전반부의 메타이야기는 잘 정리되어 재밌었지만,
    덕분에 뒷부분의 Meta-circular interpreter 설명할 시간을 뺏아갔다.
    Scheme이나 Lisp을 본 적이 없다면, 꼭 추천.

    브루셀에 있는 VUB 대학에 DLD (Dynamic Language Day)라는 워크샾 중의
    한 발표인데, 이 대학은 오래전부터 Scheme 류의 언어를 신입생에게
    가르쳐왔다고 합니다. 흥미롭군요.

광고:
    한동안 포스팅을 못 한 이유 중의 하나가 1986년 HP 직원들 대상으로
    MIT 교수가 SICP를 강의한 20개짜리 비디오를 보고 있기때문인데,
    결국은 위의 "주요 특징"을 자세하게 설명하고 있다.
    "말렸다"는 말이 절로 나오는데 보면서 입이 다물어지지 않는 경우가
     너무 많았다. (조만간 리뷰들어갑니다 --;;;)

    최근에 SICP가 번역되어 나와서 기대만빵이다.
    SICP 번역하신 분의 서문도 강추.
 
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by PLTeacher
제목 : Introduction to Perl: The friendly programming language
          by Adam Trickett

시간 : 33분 27초

추천 : 비추천
        (동영상에 슬라이더가 안보여서 무슨 라디오 듣는 것 같아요.)
        (밑의 슬라이드 자료랑 같이 본다면 재밌습니다. 그냥 Perl에 대한 일반 상식 소개)



* 슬라이드 자료

내용 : 2006년 Hampshire Linux User Group에서 있었던
          Perl에 대한 짧은 소개영상입니다.

    1:00 History - 1987년 Larry Wall이 개발합니다. (언어가 생각보다 젊군요)

    1:55 Perl's Parents - C 처럼 보이지만, 실제로는 Lisp에 더가깝다는 군요.
                                  NASA의 시스템관리자(Larry Wall???)가 만들었답니다.
                                  (Perl이 C처럼 보여서 쉬워 보입니다...쉬워보인다...--;;;)

    3:25 Compiled or Interpreted -
        Java처럼 중간언어(실제로는 syntax tree)로 컴파일되고
       이 syntax tree가 인터프리터 위에서 돌아가는 것이랍니다.
       (흠...source language가 바로 인터프리터에서 돌아가는 경우도
        있을까요?  발표자는 Basic이 그런 것처럼 말하고 있지만서도. 쩝.
        SML/NJ같은 경우는 보이기엔 인터프리터처럼 보이지만,
        실제로는 기계어로 컴파일되어서 돌아간답니다...아무튼 좀 헷갈리는 군요)

    4:30 Hard tasks easy and seriously non-trivial tasks possible
       가장 중요한 것은 프로그래머의 시간. 따라서 이것을 아끼는 방법에 집중.
       실제 계산시간 (컴퓨터 시간)은 우선순위에서 밀림. 일 예가 변수선언 없어도 되고,
       타입도 없고, 메모리 관리도 안하고 (이 경우도 GC라고 할 수 있나?)
       hash 같은 데이타타입도 지원하고...

    9:26 Hello, World
       print 'Hello World';
   
    12:30 Comprejensive Perl Archive Network (CPAN)
       발표자가 Perl의 큰 장점 중의 하나라고 극찬하는 CPAN에는
       만여개에 가까운 모듈들이 사용되기를 기다리고 있답니다.
       이를 이용해서 적은 양의 코드로 별의별 짓을 다 할 수 있다고 합니다.

    16:23 Killer Modules
        CGI, DBI, Template, CPAN, Apache mod_perl,
        File::Find::Rule, LWU/WWW::Mechanize ...

       LWU/WWW을 이용해서 시맨틱웹이 나오기 전부터 웹의 자동화를
       가능하게 했답니다. 스패머들이 주로 이용한다는 충격적인 말...--;;;

    20:43 Useful resources
   
    22:15 community Sites
       www.perlmonks.org / www.pm.org ... 등등
       매우 매우 친절하다고 자랑을 합니다.
       초짜가 와서 물어봤을때, RTFM같은 (실제로는 read your manual이라고 했음)
       대답은 등록을 할 수가 없다나 뭐라나~

    25:00 Example
       각 site를 직접가서 보여줍니다.
      
감상 : 예전에 CGI나 Form/Report 때문에 Perl을 잠시 써보적이 있었는데,
          언제부턴가 PHP로 작성하게 되었답니다. 잠시 써본 느낌으로는
          매우매우 난해해 보였는데, 오히려 "매우 친숙한 문법"이라고 하니
          바보된 느낌입니다.

          CPAN이 매우 인상적입니다.  참고해야겠군요.
          그나저나 1987년이면 아직 싱싱한 언어군요. C++보다도 젋어요. ^_^

          이 아저씨 발표는 재미난데, 비디오 영상에 슬라이드가 전혀 안보여서
          비추천으로 했는데, 웹에 따로 발표 자료가 있군요.

          참고로 LUG의 TechTalk 동영상 자료가 여기에 그득합니다.
          배가 불러요...

          잠깐 (15초동안 구글링) Perl의 CG에 대해서 알아봤는데,
          Java1.x 대의 수준일것같다는 생각이 듭니다. 계속해서 메모리 사용이
          증가하고 결국은 재시작해야만 한다는 글이 있어서요...
          실제로 어떤지 궁금하군요.
   
          이 발표의 주제:
                Perl 자체도 매우 접근하기 용이한 언어지만,
                해당 커뮤니티의 문화를 이해하면 좀더 빠르게 친숙해질 수 있다.

         

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by PLTeacher