總算是比較涼爽一點了,前兩天的悶熱感,跟台灣的夏天沒兩樣。
這一天主要聽了 Perl6 相關的主題,像是新做的 p6doc 系統,可以直接用與程式中相同的
語法,查訊各內建的類別、方法、函式,算符:
- p6doc %% # 算符
- p6doc &any # 函式
- p6doc Any # 類別
- p6doc Str.flip # 類別方法
這真是十分的方便,比 perldoc 更加方便。目前 p6doc 程式已完成的同時,其文件內容也
接繼補齊,並且可以成為許多 Perl6 實做的共用文件。已經有 Web 介面可以查:
http://doc.perl6.org 。 源碼在 github:perl6/doc
另一方面,由 Stevan Little 主導的
p5-MOP 實做也漸趨完整,與 Moose 十分神似,但
更加簡潔。
mst 的閉幕主講則再次回到「程式語言的興衰成敗」這個主題,曾經風華絕代的 Perl+CGI
組合,曾在 php + mod_php 改朝,又於 Ruby on Rails 換代。每個語言會輪流都有過熱潮,
但真正的價值,是在潮流過後留下來的東西,而不是在流行時所產生的那些垃圾產物。現在
還在說 Perl 程式碼難讀的人,多半只是沒有趕上時代,身在社群的各位一笑置之便行。或
著,展示一下用 Moose / Dancer 寫的程式,讓對方感受到當代 Perl 與 CGI 時代的巨大差
異。無可否認地,目前的 Perl 社群仍在穩定成長長,這便是這個語言與社群強建的證明。
這一天的其他筆記:
- YAPC EU 2012 Day 3
- YAPC EU 2013 will be in Kiev
- Stevan Little - perl5 mop.
- Classes, Methods, Attributes, Intances
- Sufficient MOP with: {$pkg . '::foo'} = \&bar;
- Class are first-class object, not just a string.
- requires 5.14.2 for it's keyword-injection API.
- single inheritance
- resort to Roles if multiple-inheritance sort of thing is desired.
- with rw accessors (lvalue accessors)
- $self is magic inside a 'method' body block
- positional parameter
- 'has' keyword takes an variable name with sigils
- has $balance ( is => 'ro' ) = 0;
- 'role' keyword:
- classes are no longer packages.
- Exception classes, Fun, Try, etc etc...
- doy. Dependency injection with Bread::Board
- basically you'll always run into the timing that you wish one
of your module can be replaced by another for, say, testing purpose.
- Dependency Injection ~= "the inverse of garbage collection" (collection of garbages ? :)
- Like Spoon::Hub, gather a collection of objects (aka "services") (not necessarrily singletons thoguh)
- services can depends on other services
- sort of like malloc, for named objects ?
- duckduckgo
- "Deep spice" -- zci (aka spice) based on the 1st page of search result. (good idea)
- made money out of amazon affiliate program. cool.
- duck duck goose
- Patrick, perl6 doc
- http://www.pmichaud.com/2012/pres/
- p6doc -- written in perl6 and P6Pod
- pretty new (2 month old), fresh blood requried
- Maros command line app
- MooseX::Getopt
- MooseX::App
- Perl6 regex
- The operator: rx/.../
- Apply: ~~ ~~,
- m// and s/// are still there
- match, comb, subst are Rx methods
- New operators: ms// and ss/// : m:s // s:s///
- /xms modifiers are default
- /e modifiers are no more. just use {} in the replacement.
- :P5 :Perl5 -- modifiers to make Rx perl5 compatibls.
- . still mach any char
- \N not a newline
- ^ begin of string . $ end of string
- ^^ begin of line . $$ end of line
- | longest match wins
- || first match wins
- [] non-capturing group
- <[ ]> char classes
- \s = \h | \v horizontal space, vertical space.
- \d 5 quantifier (not \d{5}, {} always means code interpolation)
- \d 2..5 (range object)
- \d 2.. % ',' (% is "quantifier modifer") "matches 1,2,3,4"
- $/ last matched
- $/<...> $<...> named captures
- $() all the positional captures
- @() = $0,$1,$2,.. all the positional captures
- mst ending keynote
- we, as a group, are levelled up.
- we have higher expectations
- "Nice problem to have..."
- Sustainable steady inexorable improvement.