☣ ppencode for perl lover ♨

60
ppencode for Perl love r 竹竹 竹竹 TAKESAKO Yoshinori

Upload: lavonn

Post on 08-Jan-2016

41 views

Category:

Documents


8 download

DESCRIPTION

☣ ppencode for Perl lover ♨. 竹迫 良範. TAKESAKO Yoshinori. r. Quiz. Q1. What does it mean?. 使徒. ← the Cabal comes to Japan. 来日. Larry と. Damian. キタ━━ ( ゚∀゚ )━━ ッ !!. Welcome to Japan. はい、ここで拍手 ! m(_ _)m Yet Another Perl Conference. Where is the Next Conference?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ☣  ppencode for Perl lover  ♨

☣ ppencode for Perl lover ♨

竹迫 良範TAKESAKO Yoshinori

Page 2: ☣  ppencode for Perl lover  ♨

Quizr

Page 3: ☣  ppencode for Perl lover  ♨

使徒来日Q1. What does it mean?← the Cabal

comes to Japan

Page 4: ☣  ppencode for Perl lover  ♨

キタ━━ ( ゚∀゚ )━━ ッ !!Damia

n

Larryと

Page 5: ☣  ppencode for Perl lover  ♨

Welcome to Japan

はい、ここで拍手 ! m(_ _)m

Yet Another Perl Conference

Page 6: ☣  ppencode for Perl lover  ♨

Where is the NextConference?次のカンファレンスはどこでやる?

Page 7: ☣  ppencode for Perl lover  ♨

Where is this place?

“waterfall”滝

Page 8: ☣  ppencode for Perl lover  ♨

Come on in, the water's fine.

Waterfalls:Not just for tourists.

ウォーターフォールは:観光客だけのものじゃなくって

for most programmers! (except hackers)職業プログラマにも必要ですから!

落ちるな危険

Page 9: ☣  ppencode for Perl lover  ♨

滝底に落ちないように気をつける…

Waterfall Model

開発は

Page 10: ☣  ppencode for Perl lover  ♨

デスマーチになるかも

Page 11: ☣  ppencode for Perl lover  ♨
Page 12: ☣  ppencode for Perl lover  ♨

Escapea water grave

デスマーチから抜け出そう!

Page 13: ☣  ppencode for Perl lover  ♨

use Ruby;

Page 14: ☣  ppencode for Perl lover  ♨

Talks#1: Ruby On Snails

新フレームワークで開発を遅くしようSlow down development

with this new frameworkby Dave Thomas and Mike Clark

Page 15: ☣  ppencode for Perl lover  ♨

Waterfall 2006 Conference

LocationNiagara Falls, NY

ナイアガラの滝(ニューヨーク州)で開催

DateApril 1st, 2006

開催日は4月1日 the day after tomorrow !http://www.waterfall2006.com/

Page 16: ☣  ppencode for Perl lover  ♨

Talks#2: Pair Managing

Is not Pair Programmingペアプロじゃなくって、ペア管理

1人のプログラマにマネージャが2人Two Managers per Programmer

by Jim Highsmith ☹☻

Page 17: ☣  ppencode for Perl lover  ♨

#3: Unfactoring from Patterns

読みにくいコードで職を守るJob Security through Unreadability

by Joshua Kerievsky

You don’t need to

Page 18: ☣  ppencode for Perl lover  ♨

Unreadability?

Perl5?

Page 19: ☣  ppencode for Perl lover  ♨

Unreadable

Perl5 code読みにくい Perl プログラム

Page 20: ☣  ppencode for Perl lover  ♨

orz

Page 21: ☣  ppencode for Perl lover  ♨

Sorry, Damian…Sorry, Damian…

and the other healthy nonsmokersand the other healthy nonsmokers

Page 22: ☣  ppencode for Perl lover  ♨

Prescription (処方箋)

Page 23: ☣  ppencode for Perl lover  ♨

a ProgrammingLanguage, too

プログラミング言語も同様に

Page 24: ☣  ppencode for Perl lover  ♨

Unreadable

Perl5→読みにくいプログラムを量産し続ける Perl5

Page 25: ☣  ppencode for Perl lover  ♨

Sigils problem on Perl5

scalar array hash------- ------ -------

$s @a %h

$$s $a[0] $h{'?'}

$s->foo ☹ ☹

Page 26: ☣  ppencode for Perl lover  ♨

Sigils rule on Perl6

scalar array hash------- ------ -------

$s @a %h

$$s @a[0] %h<?>

$s.foo @a.foo %h.foo

Page 27: ☣  ppencode for Perl lover  ♨

Readable

Perl6!読みやすいプログラムを書ける Perl6 になる!

Page 28: ☣  ppencode for Perl lover  ♨
Page 29: ☣  ppencode for Perl lover  ♨

O’REILLY

Page 30: ☣  ppencode for Perl lover  ♨

NOT’REALLY

Page 31: ☣  ppencode for Perl lover  ♨
Page 32: ☣  ppencode for Perl lover  ♨

looks like…

Page 33: ☣  ppencode for Perl lover  ♨

Unreadable

JAPH!解読困難な JAPH に似ているかも?

Page 34: ☣  ppencode for Perl lover  ♨

But, it’s

Okay…でも、そんなことはどうでもいいんです

Page 35: ☣  ppencode for Perl lover  ♨

because…なぜなら・・・

Page 36: ☣  ppencode for Perl lover  ♨

Job Securitythrough

Unreadability読みにくいコードで職を守れるから(笑)

Page 37: ☣  ppencode for Perl lover  ♨

Good job!                ∩                 ( ⌒)       ∩ _ _ グッジョブ !!                /,. ノ      i   .,,E )              ./   /"        / /"    _n グッジョブ !!   ./   /_ 、 _     / ノ '  (  l      _ 、 _    /   / ,_ ノ ` )/ / _ 、 _     グッジョブ !!   \ \ (  <_,`  )(       /(  ,_ ノ ` )       n     ヽ ___  ̄ ̄ ノ ヽ     |   ̄     \    ( E )        /     /    \   ヽフ    / ヽ ヽ _ //

Page 38: ☣  ppencode for Perl lover  ♨

JAPH

print ”just another perl hacker”;

税別¥ 1,500- 水野 貴明 ( 著 )

@a=split(/(\d)/,

"4Hacker,2another3Perl1Just");

shift(@a);%a=@a;

print "@a{1..4}";

Randal Schwartz 1 Feb 1990 22:28:58 GMT

● 記録されている最初の JAPH

Page 39: ☣  ppencode for Perl lover  ♨

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

Page 40: ☣  ppencode for Perl lover  ♨

Perlsuck

Perl ってサイテー(笑)

Page 41: ☣  ppencode for Perl lover  ♨

use Ruby;

Page 42: ☣  ppencode for Perl lover  ♨

Brainwashed by Ruby

We have been brainwashed by Takahasi-san

我々は高橋さん(日本 Ruby の会会長)に洗脳されている

Page 43: ☣  ppencode for Perl lover  ♨

Perl 厨に Ruby を使わせる

I have yet another idea that every Perl mongers

want to use Ruby…

Perl 厨に Ruby を使わせるもっと良い方法があります

Page 44: ☣  ppencode for Perl lover  ♨

The Best solution (最適解)

Steal the buttons of "$" and ";"from Perl mongers' keyboard.

キーボードから「 $ 」と「 ; 」を盗めばいいんだ

Page 45: ☣  ppencode for Perl lover  ♨

most Perl mongerswill have

no alternative but to use Ruby

そうすれば Perl 厨は仕方なく Ruby を使う

Page 46: ☣  ppencode for Perl lover  ♨

It seems

Okay…一見良さそうに見える…

Page 47: ☣  ppencode for Perl lover  ♨

butけど

Page 48: ☣  ppencode for Perl lover  ♨

Yet another Perl lover

#!/usr/bin/perl -wq 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”;

本当に Perl を愛する人はこんなプログラムを書き始める:

Page 49: ☣  ppencode for Perl lover  ♨

Programming Perl with only

reserved keywordsand white spaces!

予約語とスペースだけでプログラミング

without symbols!記号を一切使わずに!

Page 50: ☣  ppencode for Perl lover  ♨

Reserved keywords (予約語)

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

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

■ Built-in functions… (182)

■ Operators… (38)

数字があるため除外

Page 51: ☣  ppencode for Perl lover  ♨

But JAPH should not

be written by

manuallyでも、 JAPH は手で書くもんじゃない

よね

Page 52: ☣  ppencode for Perl lover  ♨

No coding➥ Best coding

コードはできるだけ書かないのが最善

Page 53: ☣  ppencode for Perl lover  ♨

♨ ppencode ☣

So I wrote “ppencode”.

で、 ppencode というプログラムを書いてみました

Page 54: ☣  ppencode for Perl lover  ♨

Demo をどうぞ( Ajax 風味)

http://namazu.org/~takesako/ppencode/demo.html

Page 55: ☣  ppencode for Perl lover  ♨

ppencode is a JAPH generator

I wrote only gen_ppencode.pl

gen_ppencode(6KB)

ppencode(perl, JavaScirpt)

a message(8bit ok)

programming JAPHautogen

inputoutput

autogen

Page 56: ☣  ppencode for Perl lover  ♨

No coding➥ Best coding

コードはできるだけ書かないのが最善

Page 57: ☣  ppencode for Perl lover  ♨

Perl

Rubyvs

Page 58: ☣  ppencode for Perl lover  ♨

Ruby version

Ruby で rrencode が誕生!./rrencode.rb 'hello, world!‘

($,^$$&&@_=$@);$><<($,|$$&&(%!%!<<(?!*(?/-?.+?$-?")))%(?}-?=+(?_-??+?/-?'))) +($,&$,||(%!%!<<(?!*(?"-?!+?.-?,)))%(?|-?<+(?_-??+?&-?!)))+($,&$,||(%!%!<<(? !*(?*-?)+?/-?-)))%(?}-?=+(?}-?]+?--?!)));($,|$$&&_=$\);$><<($,&$,||(%!%!<<(? !+?!+?!))%(?{-?;+(?]-?=+?--?!)));($,^$$&&_=$`);$><<($,&$,||(%!%!<<(?!*(?'-?& +?%-?#)))%(?~-?>+(?[-?;+(?/-?'+?)-?"))))+($,^$$&&(%!%!<<(?!+?!+?!))%(?{-?[+? --?!))+($,|$$&&(%!%!<<(?!+?!+?!))%(?]-?=+?"-?"));($,|$$&&@_=$~);$><<($,^$$&& (%!%!<<(?!+?!+?!))%(?}-?=+(?}-?]+(?;-?++?*-?#))))+($,&$,||(%!%!<<(?!*(?/-?.+ ?)-?')))%(?}-?=+(?~-?^+(?/-?'+?(-?!))))+($,^$$&&(%!%!<<(?!*(?'-?&+?+-?))))%( ?~-?>+(?}-?]+(?:-?*+?&-?$))));($,&$,||_=$&);$><<($,|$$&&(%!%!<<(?!*(?$-?#+?* -?()))%(?{-?;+(?^-?>+?--?!)))+($,&$,||(%!%!<<(?!+?!+?!))%(?|-?<+(?\\-?<+?(-? $)));($,&$,||@@_=$@);$><<($,^$$&&(%!%!<<(?!*(?--?,+?$-?")))%(?{-?[+?#-?"));( $,^$$&&@@_=$@);$><<$/

only symbols! without alphabets!

吉田悠一さん( oxy さん)作

Page 59: ☣  ppencode for Perl lover  ♨

We want Python version

  _  ∩ (  ゚∀゚ )彡 ⊂彡

pypyencode!

Page 60: ☣  ppencode for Perl lover  ♨

Thank you

ご清聴ありがとうございました

竹迫 良範TAKESAKO Yoshinori