☣ ppencode for Perl lover ♨ 竹迫 良範 TAKESAKO Yoshinori Q1. What does it mean? ← the Cabal comes to Japan と Damian キタ━━(゚∀゚)━━ッ!! Welcome to Japan はい、ここで拍手! m(_ _)m Yet Another Perl Conference Where is the Next Conference? 次のカンファレンスはどこでやる? Where is this place? “waterfall” 滝 Come on in, the water's fine. Waterfalls: Not just for tourists. ウォーターフォールは: 観光客だけのものじゃなくって for most programmers! (except hackers) 職業プログラマにも必要ですから! 落ちるな危険 Waterfall Model 開発は 滝底に落ちない ように気をつける… デスマーチになるかも Escape a water grave デスマーチから抜け出そう! use Ruby; Talks#1: Ruby On Snails 新フレームワークで開発を遅くしよう Slow down development with this new framework by Dave Thomas and Mike Clark Waterfall 2006 Conference Location Niagara Falls, NY ナイアガラの滝(ニューヨーク州)で開催 Date April 1st, 2006 開催日は4月1日 http://www.waterfall2006.com/ the day after tomorrow ! Talks#2: Pair Managing Is not Pair Programming ペアプロじゃなくって、ペア管理 1人のプログラマにマネージャが2人 Two Managers per Programmer ☻ ☻ by Jim Highsmith ☹ #3: Unfactoring from Patterns 読みにくいコードで職を守る Job Security through Unreadability by Joshua Kerievsky You don’t need to Unreadability? Perl5? Unreadable Perl5 code 読みにくいPerlプログラム Sorry, Damian… and the other healthy nonsmokers Prescription(処方箋) a Programming Language, too プログラミング言語も同様に Unreadable Perl5→ 読みにくいプログラムを量産し続けるPerl5 Sigils problem on Perl5 scalar ------$s array hash ------ ------@a %h $$s $a[0] $h{'?'} $s->foo ☹ ☹ Sigils rule on Perl6 scalar ------$s $$s $s.foo ☺ array -----@a @a[0] @a.foo hash ------%h %h<?> %h.foo Readable Perl6! 読みやすいプログラムを書けるPerl6になる! O’REILLY NOT’REALLY looks like… Unreadable JAPH! 解読困難なJAPHに似ているかも? But, it’s Okay… でも、そんなことはどうでもいいんです because… なぜなら・・・ Job Security through Unreadability 読みにくいコードで職を守れるから(笑) Good job! ∩ ( ⌒) ∩_ _グッジョブ !! /,. ノ i .,,E) ./ /" / /" _n グッジョブ!! ./ /_、_ / ノ' ( l _、 _ / / ,_ノ` )/ / _、 _ グッジョブ!! \ \ ( <_,` )( /( ,_ノ` ) n ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E) / / \ ヽフ / ヽ ヽ_// JAPH print ”just another perl hacker”; ● 記録されている最初のJAPH @a=split(/(\d)/, "4Hacker,2another3Perl1Just"); shift(@a);%a=@a; print "@a{1..4}"; Randal Schwartz 1 Feb 1990 22:28:58 GMT 税別¥1,500- 水野 貴明 (著) hello world package Earth;sub Greet{ %_=('Y','~');$_='$;=!(Middle Earth.age~~~<Eart~~~~~~~~~~~~~h .age)?!(defined$ti~~~~~~~~~~~mez~~~On e[2])?!(push@time~~~~~~~~~~~~~~~~Zone,loc ~altime())?rotation?~~~~~~~~~~~~~q~~?The Worl ~~d?:q:[\w]::q=[\~~~~~~~~~~~~~~~~~d~a-f]=:q?..~~ ~~~?:q:.:;"42b3d3~~~~~~~~~~~~~~~~~~~~~728656c6c6f6 ~~~~~0277f627c64672~~~~~~~~~~~~~~~~~~~~~b3072796e647 ~~~~~~~42b3b3rg7d"=Ym~~~~~~~~~~~~~~~~~~~\$;~~*\;p~~~~u ~~~~~~~~~sh@_,$&;bless~~~~~~~~~~~~~~~~~~~~~~~~~$c~~~~~~~ ~~~~~~~~~o~ntine~~~~~nt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~s=\~~~~~~~$~~~~~~~~~~~~~~~~~~~~~~~pangaea~~~~ ~~~~~~~~~~~~~~~;{l~~~~~~~~~~~~~~~~~~~~~~~~~~~~ocal@_;local$; ~~~~~~~~~~~~~~~~~="o~~~~~~~~~~~~~~~~~~~~~~~~~cean";$^A=(defi ~~~~~~~~~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~ed$continents)? ~~~~~~~~~~~~~~~~~~~(vec(~~~~~~~~~~~~~~~~~~~~~~$;, YYsplit(\' ~~~~~~~~~~~~~~~~~\',${\$;}~~~~~~~~~~~~~~~~~~~~~~)%3,YYsplit( ~~~~~~~~~~~~~~~~q??,$;)**2-~~~~~~~~~~~~~~~~~~~~~~(($;=Ytr/oa ~~~~~~~~~~~~~~~~eiu//)**2))=~~~~~~~~~~~~~~~~~~~~~~=28160)?q: ~~~~~~~~~~~~~~~~~.::q?!?:\'?~~~~~~~~~~~~~~~~~~~~~~\';}$^A=Ys ~~~~~~~~~~~~~~~~:\Q.\E:pack(~~~~~~~~~~~~~~~~~~~~~~\'h*\',j ~~~~~~~~~~~~~~~~~oin(q(),~~~~~~~~~~~~~~~~~~~~~~~grep{$_= ~~~~~~~~~~~~~~~~~~Ym,$,,}~~~~~~~~~~~~~~~~~~~~~~~split(" ~~~~~~~~~~~~~~~~~",@_~~~~~~~~~~~~~~~~~~~~~~~~~~[0])) ~~~~~~~~~~~~~~~~):e~~~~~~~~~~~~~~~~~~~~~~~~~~~gexe ~~~~~~~~~~~~~~~;$d~~~~~~~~~~~~~~~~~~~~~~~~~~~="s ~~~~~~~~~~~~~~ort~~~~~~~~~~~~~~~~~~~~~~~~~~<= ~~~~~~~~~~~~>,~~~~~~~~~~~~~~~~~~~~~~~~~~YY ~~~~~~~~~~~@_~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~"~~~~~~~~~~~~~~~~~~~';; s,(~|\r|\n|\s),,g;s.Y.\x7e.g; eval};Greet;'the world'; http://www.perlmonks.org/index.pl?node_id=329174 suck Perlってサイテー(笑) use Ruby; Brainwashed by Ruby We have been brainwashed by Takahasi-san 我々は高橋さん(日本Rubyの会会長)に洗脳されている Perl厨にRubyを使わせる I have yet another idea that every Perl mongers want to use Ruby… Perl厨にRubyを使わせる もっと良い方法があります The Best solution(最適解) Steal the buttons of "$" and ";" from Perl mongers' keyboard. キーボードから「$」と「;」を盗めばいいんだ most Perl mongers will have no alternative but to use Ruby そうすればPerl厨は仕方なくRubyを使う It seems Okay… 一見良さそうに見える… けど Yet another Perl lover 本当にPerlを愛する人はこんなプログラムを書き始める: #!/usr/bin/perl -w q chr uc and print chr ord uc qw q y q and print chr ord uc q map m and print chr oct ord q qx eq and print chr ord uc q oct do and print chr oct ord uc q chr lc and print chr oct ord uc q chr uc and print chr ord uc q map m and print chr ord qw q s q and print chr ord q tie gt and print chr ord q each le → print ”YAPC::Asia”; 予約語とスペースだけでプログラミング Programming Perl with only reserved keywords and white spaces! 記号を一切使わずに! without symbols! Reserved keywords(予約語) ■ Operators… (38) lt gt le ge eq ne cmp not and or xor if else elsif while for foreach continue goto last local map my next redo require return use tr y s m q qq qr qw qx x ■ Built-in functions… (182) 数字があるため除外 abs accept alarm atan2 bind binmode bless caller chdir chmod chomp chop chown chr chroot close closedir connect cos crypt dbmclose dbmopen defined delete die do dump each eof eval exec exists exit exp fcntl fileno flock fork formline getc getlogin getpeername getpgrp getppid getpriority getpwnam getgrnam gethostbyname getnetbyname getprotobyname getpwuid getgrgid getservbyname gethostbyaddr getnetbyaddr getprotobynumber getservbyport getpwent getgrent gethostent getnetent getprotoent getservent setpwent setgrent sethostent setnetent setprotoent setservent endpwent endgrent endhostent endnetent endprotoent endservent getsockname getsockopt glob gmtime grep hex import index int ioctl join keys kill lc lcfirst length link listen localtime log lstat mkdir msgctl msgget msgrcv msgsnd no oct open opendir ord pack pipe pop pos print printf push quotemeta rand read readdir readlink recv ref rename reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl semget semop send setpgrp setpriority setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat study substr symlink syscall sysread system syswrite tell telldir tie time times truncate uc ucfirst umask undef unlink unpack untie unshift utime values vec wait waitpid wantarray warn write But JAPH should not be written by manually でも、JAPHは手で書くもんじゃないよね No coding ➥ Best coding コードはできるだけ 書かないのが最善 ♨ ppencode ☣ So I wrote “ppencode”. で、ppencodeというプログラムを書いてみました Demoをどうぞ(Ajax風味) http://namazu.org/~takesako/ppencode/demo.html ppencode is a JAPH generator I wrote only gen_ppencode.pl ♨ ppencode (perl, JavaScirpt) programming autogen gen_ppencode (6KB) autogen input a message (8bit ok) JAPH output No coding ➥ Best coding コードはできるだけ 書かないのが最善 Perl vs Ruby Ruby version Rubyでrrencodeが誕生! 吉田悠一さん(oxyさん)作 ./rrencode.rb 'hello, world!‘ ($,^$$&&@_=$@);$><<($,|$$&&(%!%!<<(?!*(?/-?.+?$-?")))%(?}-?=+(?_-??+?/?'))) +($,&$,||(%!%!<<(?!*(?"-?!+?.-?,)))%(?|-?<+(?_-??+?&?!)))+($,&$,||(%!%!<<(? !*(?*-?)+?/-?-)))%(?}-?=+(?}-?]+?-?!)));($,|$$&&_=$\);$><<($,&$,||(%!%!<<(? !+?!+?!))%(?{-?;+(?]-?=+?-?!)));($,^$$&&_=$`);$><<($,&$,||(%!%!<<(?!*(?'-?& +?%-?#)))%(?~-?>+(?[?;+(?/-?'+?)-?"))))+($,^$$&&(%!%!<<(?!+?!+?!))%(?{-?[+? -?!))+($,|$$&&(%!%!<<(?!+?!+?!))%(?]-?=+?"?"));($,|$$&&@_=$~);$><<($,^$$&& (%!%!<<(?!+?!+?!))%(?}-?=+(?}-?]+(?;?++?*-?#))))+($,&$,||(%!%!<<(?!*(?/-?.+ ?)-?')))%(?}-?=+(?~-?^+(?/-?'+?(?!))))+($,^$$&&(%!%!<<(?!*(?'-?&+?+-?))))%( ?~-?>+(?}-?]+(?:-?*+?&?$))));($,&$,||_=$&);$><<($,|$$&&(%!%!<<(?!*(?$-?#+?* -?()))%(?{-?;+(?^?>+?--?!)))+($,&$,||(%!%!<<(?!+?!+?!))%(?|-?<+(?\\-?<+?(-? $)));($,&$,||@@_=$@);$><<($,^$$&&(%!%!<<(?!*(?--?,+?$-?")))%(?{-?[+?#?"));( $,^$$&&@@_=$@);$><<$/ only symbols! without alphabets! We want Python version _ ∩ pypyencode! ( ゚∀゚)彡 ⊂彡 Thank you ご清聴ありがとうございました 竹迫 良範 TAKESAKO Yoshinori
© Copyright 2025 ExpyDoc