Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マジパないPerl6、たのしく紹介しよう

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ned rihine ned rihine
October 06, 2017
280

 マジパないPerl6、たのしく紹介しよう

Avatar for ned rihine

ned rihine

October 06, 2017
Tweet

Transcript

  1. github.com:noqisofon  ソースコードの .tar.gz をダウンロードしてはビ ルドして遊んでいたが、ひょんなことから Smalltalk や Lisp に魅せられ、最終的には

    Scheme の民となって各地を放浪していたが、 次第に様々なプログラミング言語を学ぶように なる。今年は Erlang を学ぼうと本を買ったもの の、実家に置いてきてしまう。なんの運命のい たずらか、Perl6 を学ぶことになってしまい今 に至る。
  2. Perl とは? Perl = awk + sed + C +

    shell-script つまり、C言語で書くには短すぎるしシェルス クリプトで書くには難しいし…awk とか sed でやるにしては大掛かりすぎるんだよね…… …。というすごくニッチで実際広すぎるニー ズに答えた*最初の[要出典]*プログラム言 語。
  3. そんで Perl には 「TTrT's MorT TTn OnT WTy To Do

    It.」 (やり方は色々ある) というモットーがあるよ
  4. やり方はいっぱいあるので、 どんな風に書かれていても 挙動が一緒ならよくね?  ということで Perl では自動テストの文化が発 達した[要出典]。  自動テストとは、テストまでもプログラマブル

    にしたいというプログラマーの強い意志の表れ である。  このような思想は後の未来にサーバーセット アップもプログラマブルにしたいもん!という 強い意志を芽吹かせるに至った[独自研究]。
  5. 関数に引数書ける! # lib/Vortex.pm6 use v6; module Vortex { our sub

    hoge($arg) { say $arg; } } ワァオ!! 引数だ!!
  6. 変数に型ヒント書ける! sub square(Int $a, Int $b) returns Int { $a

    * $b; } 型ヒント こっちも型ヒントだけ ど、戻り値の型ヒント
  7. 文脈によってシジルを 変える必要はない sub sum(Int @ary) { my $total = 0;

    loop ( my $i = 0; $i < @ary.elems; ++ $i ) { $total += @ary[$i]; } return $total; } Perl5 ではここは $ary[$i] って書かないといけなかった。
  8. シジルってなあに?  ラテン語で「印」という意味。  変数の頭に付けてスカラーなのか配列なのかマップなのかを誰 かに教えるよ!  ‘$’(ドルマーク)がスカラー。  ‘@’(アットマーク)が配列。

     ‘%’(パーセント)がマップ(連想配列とも)。  ‘&’(アンパーサンド)がなんか呼べるやつ(みんな大好きラムダ式 とか)。  もっとあるけど、基本的には 4 種類あるよ!
  9. クラス書ける! class Person { has Str $.name; has Int $.age;

    } my $a-person = Person.new; say "{$a-person.name} {$a-person.age}";
  10. ケバブケースとは?  変数名を $lowerCamelCase とか $snake_case みたいに書いていた時代はもう終わりました! Perl6 では $kabab-case

    と書けます!!俺、大 歓喜!!!!  要するに、変数名における単語の区切りとして ‘-’(ハイフン)が使えるよーということ。  Lisp では普通に見かける変数名の書き方。
  11. 遅い!  MoarVM の上に nqp が乗って nqp の上に rakudo が乗るという創世記的アーキテクチャに

    なっているので………。  MoarVM を JVM に入れ替えたり、CLR に入れ替 えたりもできるので、実際どこでも動く(どこでも動く とは言っていない)。  ParrotVMェ………。
  12. モジュールが (CPAN と比べて)少ない!  2017年09月17日現在、perl6/ecosystem に登録されてい るモジュールは 899 個! 

    CPAN には同現在 35,960 個あるってよ。  すごくどうでもいいけど、私もモジュールを登録しまし た。  YAML とか JSON、Markdown はあるけど、Textile とか reStructuredText とか OrgMode とかないの悲しい。  DBIish とかデータベース関係は既にあるからそんなに悲 しくないかも?
  13. なして Perl6 なのぜ?  Perl の文化が気になるが、Perl5 はリファレンス クロオビが必要なので、リファレンスシロオビで もできる Perl6

    を触ろうと思った。今も反省はし ていない。  やっぱり、波括弧派ALGOL系言語(・∀・)イイ!!  あれなんスよ。今年は Perl6 ってだけで、来年は 違う言語学んでるはずなんスよ。  プログラミング言語は考え方なので、何ができる かではなく、どう考えることができるかでプログ ラミング言語を選ぼう!