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

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

ned rihine
October 06, 2017
180

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

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 ってだけで、来年は 違う言語学んでるはずなんスよ。  プログラミング言語は考え方なので、何ができる かではなく、どう考えることができるかでプログ ラミング言語を選ぼう!