Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マジパないPerl6、たのしく紹介しよう
Search
ned rihine
October 06, 2017
0
180
マジパないPerl6、たのしく紹介しよう
ned rihine
October 06, 2017
Tweet
Share
Featured
See All Featured
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Making Projects Easy
brettharned
108
5.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
119
39k
Making the Leap to Tech Lead
cromwellryan
123
8.5k
GitHub's CSS Performance
jonrohan
1023
450k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
Building Applications with DynamoDB
mza
88
5.6k
Building an army of robots
kneath
300
41k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Transcript
マジパない Perl6、楽しく紹介しよう
お前は誰だ
github.com:noqisofon ソースコードの .tar.gz をダウンロードしてはビ ルドして遊んでいたが、ひょんなことから Smalltalk や Lisp に魅せられ、最終的には
Scheme の民となって各地を放浪していたが、 次第に様々なプログラミング言語を学ぶように なる。今年は Erlang を学ぼうと本を買ったもの の、実家に置いてきてしまう。なんの運命のい たずらか、Perl6 を学ぶことになってしまい今 に至る。
多分、そんな感じ
Perl6 って?
その前に Perl って?
Perl とは? Perl = awk + sed + C +
shell-script つまり、C言語で書くには短すぎるしシェルス クリプトで書くには難しいし…awk とか sed でやるにしては大掛かりすぎるんだよね…… …。というすごくニッチで実際広すぎるニー ズに答えた*最初の[要出典]*プログラム言 語。
簡単に言うと、 Ruby とか Python とかの ジャンルの先駆者
そんで Perl には 「TTrT's MorT TTn OnT WTy To Do
It.」 (やり方は色々ある) というモットーがあるよ
または私が如何にして心配するのを やめてテストを書くようになったか
やり方はいっぱいあるので、 どんな風に書かれていても 挙動が一緒ならよくね? ということで Perl では自動テストの文化が発 達した[要出典]。 自動テストとは、テストまでもプログラマブル
にしたいというプログラマーの強い意志の表れ である。 このような思想は後の未来にサーバーセット アップもプログラマブルにしたいもん!という 強い意志を芽吹かせるに至った[独自研究]。
で、 改めて、Perl6 ってなあに?
Perl6 は、Larry Wall が設計した 夢の Perl だよ!!!
で、終わってもいいんだけど………
Perl6 とは、仕様であり、 実際テストの塊である。 Perl6 の実装はどう書かれていても 問題はないが、テストにどれくらい 成功しているかで Perl6 っぽさを 判断することができる。
ぜんぜん わからない。 俺は Perl6 を雰囲気で 書いている。
Perl6 のここがスゴい! 関数に引数書ける! 変数に型ヒント書ける! 文脈によってシジルを変える必要はない。 クラス書ける!
正規表現を構造化できるようになり、パーサー を楽に書けるようになった。
関数に引数書ける! # lib/Vortex.pm6 use v6; module Vortex { our sub
hoge($arg) { say $arg; } } ワァオ!! 引数だ!!
変数に型ヒント書ける! sub square(Int $a, Int $b) returns Int { $a
* $b; } 型ヒント こっちも型ヒントだけ ど、戻り値の型ヒント
文脈によってシジルを 変える必要はない sub sum(Int @ary) { my $total = 0;
loop ( my $i = 0; $i < @ary.elems; ++ $i ) { $total += @ary[$i]; } return $total; } Perl5 ではここは $ary[$i] って書かないといけなかった。
シジルってなあに? ラテン語で「印」という意味。 変数の頭に付けてスカラーなのか配列なのかマップなのかを誰 かに教えるよ! ‘$’(ドルマーク)がスカラー。 ‘@’(アットマーク)が配列。
‘%’(パーセント)がマップ(連想配列とも)。 ‘&’(アンパーサンド)がなんか呼べるやつ(みんな大好きラムダ式 とか)。 もっとあるけど、基本的には 4 種類あるよ!
クラス書ける! class Person { has Str $.name; has Int $.age;
} my $a-person = Person.new; say "{$a-person.name} {$a-person.age}";
正規表現を構造化できる ようになり、パーサーを 楽に書ける ようになった。 なった。 なったんだが、それを書く には余白が狭すぎる。
スゴいとこはもっといっぱいあるけど、 書ききれないので、詳しくは Web で!! 「Perl6 入門」で検索!検索! あるいは公式サイトで! perl6.org/
Perl6 のここがダメ! Perl シジルがある! 遅い! モジュールが(CPAN と比べて)少ない!
シジルがある! ぶっちゃけ、変数に型ついてても邪魔じゃね? リファレンスも実際スカラーなので、配列のリファレ ンスを配列型の変数に渡すとネストされた配列に なるので注意だ。 でも、シジルがあることで、ケバブケースとかできる からよくね?文字列インターポレーションも変な記
号使わないでできるし……。
ケバブケースとは? 変数名を $lowerCamelCase とか $snake_case みたいに書いていた時代はもう終わりました! Perl6 では $kabab-case
と書けます!!俺、大 歓喜!!!! 要するに、変数名における単語の区切りとして ‘-’(ハイフン)が使えるよーということ。 Lisp では普通に見かける変数名の書き方。
遅い! MoarVM の上に nqp が乗って nqp の上に rakudo が乗るという創世記的アーキテクチャに
なっているので………。 MoarVM を JVM に入れ替えたり、CLR に入れ替 えたりもできるので、実際どこでも動く(どこでも動く とは言っていない)。 ParrotVMェ………。
モジュールが (CPAN と比べて)少ない! 2017年09月17日現在、perl6/ecosystem に登録されてい るモジュールは 899 個!
CPAN には同現在 35,960 個あるってよ。 すごくどうでもいいけど、私もモジュールを登録しまし た。 YAML とか JSON、Markdown はあるけど、Textile とか reStructuredText とか OrgMode とかないの悲しい。 DBIish とかデータベース関係は既にあるからそんなに悲 しくないかも?
なして Perl6 なのぜ? Perl の文化が気になるが、Perl5 はリファレンス クロオビが必要なので、リファレンスシロオビで もできる Perl6
を触ろうと思った。今も反省はし ていない。 やっぱり、波括弧派ALGOL系言語(・∀・)イイ!! あれなんスよ。今年は Perl6 ってだけで、来年は 違う言語学んでるはずなんスよ。 プログラミング言語は考え方なので、何ができる かではなく、どう考えることができるかでプログ ラミング言語を選ぼう!
みんなも 気になった言語 1年間 学んでみようぜ!!!
ご清聴ありがとうございました!!