Title: ? ppencode ?
1? ppencode ?
?? ??
TAKESAKO Yoshinori
2? ppencode ?
??
Otori-tan
3Where is the Next N.P.W.?
4Wheres the next N.P.W.?
waterfall
5Waterfall
- Really popular
- Not just for tourists
- Programmers too
- (Except for Agile hackers)
6Waterfall
Model
makes a slippery slope
7Waterfall
Model
makes a slipping deadline!
8Rewrite Biohazard
9Escape
a watery grave
10use Ruby
11Ruby On Snails
- The new framework for Web 3.14159...
- Grinds any system to a halt!
- by Dave Thomas and Mike Clark
12Niagara Perl Workshop
- Where?
- Niagara Falls, NY
- When?
- April 1st, 2007
- Registration begins today!
- http//waterfall2007.com/
13Pair Managing
- Not Pair Programming
- Groundbreaking Methodology
- 1 Programmer
- 2 Managers
- by Jim Highsmith
14Unfactoring
- Take code out from functions
- Inline them everywhere
- by Joshua Kerievsk
- Cut
- Paste
- Paste
- Paste
- Release!
15Perl?
Obscurity?
16Quit Bad Habits
Write Healthy Code!
17Prescription
18(No Transcript)
19Obscure
Perl5?
20Crazy Sigils in Perl 5
Scalar Array Hash ------ ----- ----
s _at_a h s a0
h'?' s-gtfoo ? ?
21Happy Sigils in Perl 6
Scalar Array Hash ------ ----- ----
s _at_a h s _at_a0 hlt?gt s.foo
_at_a.foo h.foo ?
22Readable
Perl 6!
23(No Transcript)
24OREILLY
25NOTREALLY
26(No Transcript)
27It may look like
28Obscure
JAPH!
29JAPH
- print just another perl hacker
? First JAPH in history
Randal Schwartz 1 Feb 1990 222858 GMT
?1,500 - By ?? ?? (?)
30But
Its okay...
31Because
32Job Security through Obscurity
33hello world
package Earthsub Greet
_('Y','')_'!(Middle
Earth.ageltEarth
.age)?!(definedtimezOn
e2)?!(push_at_timeZone,loc
altime())?rotation?q?The Worl
d?q\wq\da-fq?..
?q."42b3d3728656
c6c6f6 0277f627c64672
b3072796e647 42b3b3rg7d"Ym
\\pu sh_at__,bless
c
ontinent
s\
pangaea l
ocal_at__local "o
cean"A(defi
nedcontinents)?
(vec(,
YYsplit(\' \',\
)3,YYsplit( q??,)2-
((Ytr/oa e
iu//)2))28160)?q
.q?!?\'?\'
AYs \Q.\Epack(
\'h\',j oin(q(),
grep_ Ym,,,
split("
",_at__0
)) )e
gexe d
"s ort
lt gt,
YY _at__
"'
s,(\r\n\s),,gs.Y.\x7e.g
evalGreet'the world'
http//www.perlmonks.org/index.pl?node_id329174
34Saturn
!/usr/bin/perl
Isubs
"x_1gem/x_
0._./Wsub!q
.pop()system(OWin?ClS
'clear'),print,selectZ,Z,Z,!"
"for_at__Hsubjoin/,map
(_
x_0,popm-.-g),!__!Mima,s--
"_at_'9)w'RINGS\local_at_Sat
urn
wNXIBP"-sees-!..?/(?")--is
y--'-s-\w--giS_--Beautiful
_at_Sm-.-gN1.6-!th_,
---82----
_."x-(y---c--)for_at_SRsubi -d
0join/,mapjjoin!_,grep
Rhea !(j_),m-.-g
grep!(i -Titan
_0),_at_SLjoin!_,map -Huygens
reverse./,_at_S_at_R(I(q-
-20,051, __q-q-),I(20,41
-!q- -,_FK),
I-gt(15,31,_R(4-!q- -)),I(13-!"
",28,_R(3)),
__I(10,20-!" ",_R-gt(2)),
q- -S)_at_Omap"
"H(_, R.!-_(_))x_,!"
"2..22 _at_Yreverse_at_RDione
m--
SATU(_at_R,N)!q- b-
W(_at_O0,1,2,1,0!!q-
-,!1!1)W(S.!q-
-,L,0.16)for..5!q-
Cassini-Wq-
-(_at_Y,1.6)
http//www.perlmonks.org/index.pl?node_id329174
35Good Job!
n ( ?) n_
_????? !! /,. ? i .,,E)
./ /" / /" _n ?????!! ./ /_?_
/ ?' ( l _? _ / / ,_? )/ / _? _
?????!! \ \ ( lt_, )( /( ,_? ) n
?___?? ? ? ? \ ( E) / /
\ ?? / ? ?_//
36Perl sucks
37use Ruby (_)
38Ruby Brainwash Weapon
- TAKAHASHI Masayoshi, YAPCAsia 2006
39Perl -gt Ruby
The best way to convert Perl Programmers to
Ruby...
40Eureka!
Take out the and keys from Perl peoples
keyboards!
41Perl People will be forced to use Ruby
42Sounds
Good
43But
44Counter Strike!
Real Perl programmer can do without punctuation!
!/usr/bin/perl -wlength q chr uc and print chr
oct ord q gt log and print chr oct ord q qx eq
and print chr ord uc q qw eq and print chr ord q
q q and print chr ord uc q or no and print chr
ord q pop and print chr ord q oct do and print
chr ord qw q keys q and print chr ord qw q s q
and print chr hex length q q bless localtime ref
q
? print NPW Rocks!
45Perl Programming with only Keywordsand
whitespace!
46Keywords
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
no digits, either
Builtins (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
47But JAPHs shouldnt be written Manually
48No coding
? Best coding
Laziness
49? ppencode ?
- So TAKESAKO-san made
- ppencode.
50Demo (Ajax flavored!)
http//namazu.org/takesako/ppencode/demo.html
51JAPH with ppencode
- gen_ppencode.pl - a Generator Generator
?
autogen
programming
autogen
input
output
52No coding
? Best coding
Impatience
53Perl Ruby
vs.
54Ruby version
By ???? (Mr. oxy)
- ./rrencode.rb hello, world!
- (,_at___at_)gtltlt(,(!!ltlt(?!(?/-?.?-?"
)))(?-?(?_-?? - ?/-?'))) (,,(!!ltlt(?!(?"-?!?.-?,)))(?-
?lt(?_-???-?!)) - )(,,(!!ltlt(? !(?-?)?/-?-)))(?-?(?-?
?--?!)))(, - _\)gtltlt(,,(!!ltlt(? !?!?!))(?-?(?
-??--?!)))(, - _)gtltlt(,,(!!ltlt(?!(?'-?
?-?)))(?-?gt(?-?(?/ - -?'?)-?"))))(,(!!ltlt(?!?!?!))(?-??
--?!))(,( - !!ltlt(?!?!?!))(?-??"-?"))(,_at__)gtlt
lt(, (!!ltlt - (?!?!?!))(?-?(?-?(?-??-?))))(,,
(!!ltlt(?!(?/-? - . ?)-?')))(?-?(?-?(?/-?'?(-?!))))(,
(!!ltlt(?!(?'-? - ?-?))))( ?-?gt(?-?(?-??-?))))(,,
_)gtltlt(, - (!!ltlt(?!(?-?? -?()))(?-?(?-?gt?--?!)
))(,,(!!lt - lt(?!?!?!))(?-?lt(?\\-?lt?(-?
)))(,,_at__at___at_)gtltlt(,( - !!ltlt(?!(?--?,?-?")))(?-??-?"))(
,_at__at___at_)gtltlt/
no Alphanumerics
55Wheres the Python version?
_ n (???)? ??
pypyencode!?
56Thank You!
??
Otori-tan
57Thank you!
?? ??
TAKESAKO Yoshinori