Transcript Perl

Language Update
Perl
(小飼弾さんの代理)
竹迫 良範
LLイベント
の歴史を
振り返る
2006/06/30
2
LL Saturday (2003)
2006/06/30
3
LL Weekend (2004)
2006/06/30
4
LLDN (2005)
実態:スクリプト言語ヲタの祭り
2006/06/30
5
2006/06/30
6
2006/06/30
7
さん
キタ━━(゚∀゚)━━ッ!!
2006/06/30
8
2006/06/30
9
ここで、会場の
皆様に
質問
2006/06/30
10
2006/06/30
11
require Dan::Kogai
もちろん!
require Dan::Kogai
↓
require jcode.pl ?
Perl4 
Perl5
↓
jcode.pl  Jcode.pm
use (J|En)code;
2006/06/30
13
use Dan::Kogai
弾さんを使おう
キミならどう書く 2.0
前哨戦 Round 1
お題
「100までの素数を列挙せよ」
Brainf*ckで100までの素数を列挙してみるテスト
2006/06/30
16
2006/06/30
17
Excel VBAで素数 featuring イルカ
http://d.hatena.ne.jp/kkkkkkkk/20060620/p1
冴子先生
2006/06/30
18
もちろんイルカくんも・・・
2006/06/30
19
2006/06/30
20
勝手に添削コーナー
雑誌やブログの記事に書かれている
Perlのコードを弾さんが添削してくれる
すばらしい連載企画
2006/06/30
21
プロダクションスクリプトに
use strict; をつけないと、
左手のサイコレーターが
TBをあびせるぞ!
http://blog.livedoor.jp/dankogai/archives/50449002.html
2006/06/30
22
【ITレスラー戦国伝】タブとスペース抗争の巻
登場人物
サイボウズ科学戦隊所属のITレスラー
【燕(つばくろ)のKazuho】
無所属のITレスラー【ストロング弾】
謎のITレスラー【ムッシュ石垣】
Six ApartのITレスラー【南斗せきむら】
LD所属のITレスラー
【キャプター疾風(はやて)】
iY所属のITレスラー【魔人イヤプー】
http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/knifestyle/20060430/p1
2006/06/30
23
【ITレスラー戦国伝】タブとスペース抗争の巻
スペース派閥
C 系の言語 は 4 、Ruby は 2
いや、Ruby は 3 スペでしょ
タブ(萌ディタ流派)
タブで揃えて、萌ディタでタブ幅を動的に切り替え
保存時に変換
君たちは、patchのことをきれいさぱーり忘れている。
人にpatchを送るときには、必ず
perl -i.bak -ple 's{^(\t+)}{q( ) x (length($1)*4)}e' old.pl
としていただきたい。
秀丸エディタで、CTRL+A → ALT+E → V → S とす
るとタブをスペースに変換(約0.2秒)
そのタブAcme::Tabifyでよくね?Plaggerでもいいけど
2006/06/30
24
添削希望のコードをブログで公開するメソッド
http://rebecca.ac/milano/mt/archives/001383.html
2006/06/30
25
Perlのスローガン
TMTOWTDI
There's more than one way to do it.
2006/06/30
26
Danさんの場合
TMDTWTDI
There's more Dan the way to do it.
2006/06/30
27
結論
Danさんの実装も
快く受け入れるのが
Perlの文化
2006/06/30
28
2006/06/30
29
Language Update
Perl
Shibuya.pm
竹迫 良範
Perl6 の開発状況
←いまここ
2006/06/30
31
Pugsの登場(2005年)
多態型
存在型
帰納的
λλ
2006/06/30
λλ
λλ
32
Haskell
2006/06/30
33
Perl 6 で
何が変わるの?
素朴な疑問
5秒でわかる Perl6
メソッド呼び出しを . で書けるようになった
Perl5
Perl6
$obj->method();
$obj.method();
→ これで Perl も立派なOO言語の仲間入り!
2006/06/30
35
めでたし、めでたし
2006/06/30
36
Perl 5  6 の
Update について
もうちょっと詳しく・・・
Perl6で失ったもの ~後方互換性~
文字列の連結は .(ドット)→ ~(チルダ)に
Perl5
Perl6
# メソッド呼び出し
$obj->method();
# メソッド呼び出し
$obj.method();
my $a = “A";
sub func { return "x"; }
my $a = “A";
sub func { return "x"; }
# 文字列の連結
my $b = $a.func();
# 文字列の連結
my $b = $a~func();
2006/06/30
38
配列とハッシュのアクセス方法が変更
はじめての人にもわかりやすく
変数のプレフィクス $@% ルールが変更
Perl5
Perl6
my @array = (1, 2, 3);
my %hash = ('a'=> 1);
my @array = (1, 2, 3);
my %hash = ('a'=> 1);
# 配列のメンバにアクセス
my $x = $array[0];
# 配列のメンバにアクセス
my $x = @array[0];
# ハッシュのメンバにアクセス
my $y = $hash{'a'}
# ハッシュのメンバにアクセス
my $y = %hash{'a'}
2006/06/30
39
Piping operators(<==, ==>)
Perl6
@result = map { floor($^x / 2) }
grep { /^ \d+ $/ }
@data;
@result <== map { floor($^x / 2) }
<== grep { /^ \d+ $/ }
<== @data;
@data ==> grep { /^ \d+ $/ }
==> map { floor($^x / 2) }
==> @result;
2006/06/30
40
括弧省略
if, for, while, do ブロックでの(括弧省略)
キータイプの量が少なくなった
Perl5
Perl6
if ($a eq $b) {
print "a=b\n";
}
if $a eq $b {
say "a=b";
}
while ($i > 0) {
$i--;
}
while $i > 0 {
$i--;
}
2006/06/30
41
Neko operator(ネコ演算子)
Damian Conway氏が OSCON2005 で発音
末尾を含まない「..^」
先頭を含まない「^..」
先頭と末尾を含まない「^..^」
Perl6
my @a = (1..^5); # (1,2,3,4)
my @b = (1^..5); # (2,3,4,5)
my @c = (1^..^5); # (2,3,4)
http://www.rubyist.net/~matz/20050803.html
2006/06/30
42
ネコ演算子って・・・ちょwおまwww
ネコ耳モード♪
^..^
Illustration by SUGIMOTO Yoshiaki June 25, 2005
http://catzpaw.net/~www/gal/sugz042b.html
2006/06/30
43
CPAN
Recently Update
2006/06/30
45
■ 2006年: 現在2941個のモジュールがリリース
http://cpants.perl.org/graphs.html
2006/06/30
46
Moose.pm
クラス定義をスマートに
Perl6 (Pugs)
2006/06/30
48
Perl5 (Moose.pm)
2006/06/30
49
Moose.pm
サブクラスの作成
(派生クラスの継承)
Perl6 (Pugs)
2006/06/30
51
Perl5 (Moose.pm)
2006/06/30
52
Perl 5.9.x
開発版
Perl 5.9.3 の新機能
2006/06/30
54
// 演算子 (errキーワード)
左辺が undef のときのみ右辺を評価
Perl5 でありがちなデフォルト値バグを回避
0(ゼロ) の扱いで失敗
それぞれ || → or, // → err に対応
Perl5
Perl6
$num = shift @ARGV || 1;
$num = shift @ARGS // 1;
$bar = func() or die;
$bar = func() err die;
2006/06/30
55
Perl 5.9.4
UNIVERSAL::require が標準添付
実行時に $module を遅延ロードしたい
eval “require $module”;
UNIVERSAL::require を使うと
$module->require;
2006/06/30
56
Catalyst で使われている
2006/06/30
57
Catalyst – Web Framework
2006/06/30
58
Sledge
ライブドア社の
Webフレームワーク
2006/06/30
60
TripletaiL
ユミルリンク社の
Webフレームワーク
2006/06/30
62
速報
2006/06/30
63
東京IT新聞
2006年8月17日
2006/06/30
65
ランキング
Perl の Web
アプリケーションフレームワーク
1.
2.
3.
4.
5.
6.
7.
8.
http://lislog.livedoor.com/r/136
2006/06/30
Catalyst
Boofy
Sledge
CGI::Application
Soozy
Maypole
Jifty
Mason
66
どう見ても
サブテカです。
本当に(ry
2006/06/30
67
Jifty
注目のWebフレームワーク
http://jifty.org/
Jifty の特徴
DRY (Don't Repeat Yourself)
Full-stack
Continuations
Form-based dispatch
Perl
CPAN
A Pony
※ あの Audrey Tang も開発に参加
2006/06/30
69
2006/06/30
70
2006/06/30
71
詳しくは…
2006/06/30
72
2006年8月25日発売
【書名】
まるごとPerl! Vol.1
【定価】
1,995円(本体1,900円+税)
【著者】
小飼 弾、宮川達彦、伊藤直也、
川合孝典、水野貴明、加藤 敦、
石垣憲一、栗原由樹、まかまか、
池邉智洋、ma.la、竹迫良範、ささ
だこういち、可知 豊、秋山隆道、
久保元治、滝澤隆史、歌代和正
2006/06/30
73
2006/06/30
74
2006/06/30
75
ソーシャル家計簿サイト
http://www.3zai.com/
CGI::Applicationで構築
秋のリニュでCatalystに
2006/06/30
powered by
Perl 76
Perlフレームワーク
国内実績、既に多数ということで
(わざわざ出場しなくても)
Perl 最強 !
(≠災凶)
2006/06/30
78
ご清聴ありがとうございました
2006/06/30
79