初日のライトニングトークの一番最後に「That Goes Without Alpha-Num (or Does It?)」という内容で発表させていただきました。
元々は「all your base10 are belong to us」という発表タイトルを予定していたのですが、
朝一番のLarry Wallさんのkeynoteで「That Goes Without Saying (or Does It?)」という発表で他のプログラミング言語を紹介されていましたので、
急遽タイトルを変更し、スライドの構成を変えました。
SIGILS MAJOR/MINOR CONTEXTS ACCESS ARRAYS HASHES $scalar item list sink whole: @array[] %hash{} @array Str flat/slice element: @array[0] %hash{'a'} %hash Num lazy/eager/hyper (or) %hash<a> &code Bool slice: @array[0,2] %hash{'a','b'} COMPOSERS (or) %hash<a b> TWIGILS [ ] array $normal-lexical { } block/hash AUTOMATIC DEREFERENCE $?compiler-constant < > quotewords &($foo)(1,2) == $foo(1,2) $*dynamic-or-global (,) parcel @($foo)[1] == $foo[1] $.public-accessor :() signature %($foo){'bar'} == $foo<bar> $!private-attribute \() capture @(@($foo)[1])[2] == $foo[1][2] $^positional-param $:named-parameter CONTROL SYNTAX $=pod-info for LIST { } # implicit $_ arg $<named-match-capture> for LIST -> $a, $b { } # explicit args $~slang-variable while/until EXPR { } repeat while/until EXPR { } # do at least once OPERATOR PRECEDENCE loop { } loop (a;b;c) { } # parens required! .method .[] i if EXPR { } elsif EXPR { } else { } ++ -- unless EXPR { } # no else allowed! ** given EXPR { when EXPR { } default { } } unary + - ~ ! ? ^ EXPR if EXPR for LIST; # list comprehension * / % %% div next, last, redo # loop controls + - proceed, succeed # switch controls x xx TYPES ~ Bool Bit Int Rat FatRat UInt Num Complex int32 complex64 etc. & Str Cat Blob Char Byte Codepoint Grapheme Buf buf8 buf32 utf8 | ^ IO Mu Any Cool Junction Whatever Match sleep abs sin temp Parcel Capture Signature <=> leg cmp .. but SCOPE DECLARATORS Pair Range Set Bag ~~ > == gt eq === eqv !op my lexical scope KeyHash KeySet KeyBag && our package scope Scalar Array Hash Code || ^^ // min max has instance scope Enum Order TrigBase ??!! ff anon no scope at all Block Routine Sub = := op= => state persistent lexical Method Regex so not augment benign parasitic Failure Exception , : supersede deadly parasitic Instant Duration X Xop Z Zop ... Date DateTime say die map etc. OPERATOR DOMAINS and Numeric: == !==(!=) + < > <=> <= >= or xor Stringy: eq !eq(ne) ~ lt gt leg le ge <== ==> Value: eqv !eqv before after cmp !after !before ObjectID: === !=== METAOPERATORS LINKS IRC [op] reduce listop to A op B op C... perl6.org #perl6 irc.freenode.net op= A = A op B rakudo.org #parrot irc.perl.org !op !(A op B) »op« hyper/vectorize REGEX METACHARS REGEX MODIFIERS Zop zip with op ^ $ string begin/end :i ignore case Xop cross with op ^^ $$ line begin/end :m ignore marks Rop reverse args + one or more :g global Sop sequentialize * zero or more :r ratchet ? zero or one :s sigspace SPECIAL VARIABLES **1..3 repeat in range :4th nth occurrence $_ current topic () capture to $0,$1 :4x n times $/ regex result [] no capture $! error object <foo> subrule REGEX CHARCLASSES @*ARGS command line <[]> character class . == anychar, \N non \n @*INC include path | parallel or \s == <space>, \S non %*ENV environment || serial or \d == <digit>, \D non $*PID process id « » word boundary \w == <+alpha+digit+[_]>
今年のハッカソンは弾さんの家ではなく、hidekさんの家で海外スピーカーを囲む形で行われました。
miyagawaさんのkeynoteにあったように“Perl is a glue between the human and the human.”を感じたひとときでした。
ハッカーの集まりは楽しいですね。ホスト役のhidekさん、素敵な会場のご提供、本当にありがとうございました。
※未承諾広告※ ■「エンジニアの未来サミット for students」開催します!
YAPCの次の週のイベントと言うことで突然ですが、ちょっとだけ「エンジニアの未来サミット for students」について告知させてください。
これは、過去2回開催されたエンジニアの未来サミットのスピンオフ的な位置付けで、より若手向け、というか学生にフォーカスした新卒対象の企画になります。
従来は、元々非営利のイベントということで、oyamaさん個人に会計処理をお願いしていたこともあり、収支で翌年に繰り越す利益がでると
税金の処理が面倒になるということで、収益の一部を The Perl Foundation に寄付したり、その後、懇親会の参加費用を無料にしたり少なくしたりすることで不確定要素から生じる部分の利益調整をしてスピーカーや参加者の皆さまに少しでも気持ちを還元するようになりました。
やはり余剰金の繰り越しは大規模な非営利イベントを開催するときの一つの問題のようで、参加者が500人を超える他のイベント運営でも同様の悩みを持っている、という話も聞いたりします。
今は継続的にイベントを開催・運営できる母体としてJPAが設立され、個人でお金の入出金をする会計上のリスクやキャッシュフローの問題は解決されたと思います。
Jesseの「Perl5 is Alive!」の講演でもあった通り、YAPCの運営もPerl5のPumpkinに通じるものがあるかもしれませんね。
YAPC::Asiaの運営はこれからもこれまでも、参加者の皆さんのアツい想いと、スピーカーの皆さまのご協力と、運営スタッフの情熱の維持によって成り立っていますので、
ぜひ引き続きご協力を賜ればと思います。今年の941さんのようにイベントプロデューサーに立候補すれば、(控え目に言っても)いいことあると思いますよ!
13:08 (audreyt) takesako: 13:09 (audreyt) as promised I delivered this over OSDC.tw 13:09 (audreyt) to a greatly amused audience 13:09 (audreyt) thanks a lot for your slides :)
日本語の直訳で「Give me your sign!」と言ってしまうと、別の意味の sign(星座?) と勘違いされたりする可能性があるので native speaker の方には通じないことが多いのだそうです。また、sigunatureだと、クレジットカードなどに署名するサインという意味が強いようなので、この例では不適切だとか。
This is Audrey, bringing you the message of the day from the pugs
examples/ dircetory as contributed by the lambdacamels.
Audreyです。今日は世界中のPugsの開発者達(λラクダ)から
pugsのexamples/ディレクトリに寄せられたメッセージをお届けします。
Pugs is stealing all the good ideas it can from other languages.
Pugsは他の言語から良いアイデアを可能な限り盗んでいます。
Pugs is providing the capability to evolve a little faster.
Pugsのおかげで、あなたは人よりも一歩先を行くことができます。
Pugs is not going to bite.
Pugsは噛み付いたりしません。:-)
Pugs is happening now.
Pugsは今も変わり続けています。
Pugs is a love letter to the Cabal.
Perl6の使徒達に向けたラブレターです。
Pugs is Perl 6, raised to the power of woot!
PugsはとにかくすっごいPerl6なんです!
Pugs is caching in the tuits.
Pugs は人々の抑圧されたハック魂を解き放ちます!
Pugs is sensitive (to semantic, pragmatic, and cultural context).
文法も、実用性も、これまでの歴史も大事にします。
Pugs is test-driven; it's going great shakes, and committed to change.
Pugsはテスト駆動ですっごく良くなっています。
Pugs is a proof of concept of a Perly functional programming language.
Perl的な関数型言語が実際に動くという証拠にもなりました。
Pugs is a hyperoperator applied to the collective Perl imagination.
Perlのイマジネーションをすべて結集した>>ハイパー演算子<<なのです。
Pugs is a grab-bag of new ways to shoot yourself in the foot.
Pugsではありとあらゆる方法で自分の足を撃つことができます。
とにかくハマること間違いなし(笑)
Pugs is keeping the wheels but reinventing the vehicle!
Pugsでは車輪の再発明をせずに乗り物を再発明してるんです!