Mercurial > hg > Events > OSC2019
comparison slide.md @ 4:8f21c0f19c09
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Apr 2019 19:03:18 +0900 |
parents | e43f47edd11a |
children | e87cc0746622 |
comparison
equal
deleted
inserted
replaced
3:e43f47edd11a | 4:8f21c0f19c09 |
---|---|
51 my Int $int_value = 31; | 51 my Int $int_value = 31; |
52 $int_value = "hello"; # Compile error! | 52 $int_value = "hello"; # Compile error! |
53 ``` | 53 ``` |
54 | 54 |
55 !SLIDE | 55 !SLIDE |
56 ## Perl6の言語的な特徴 | |
57 | |
58 - 型を独自に定義することも可能 | |
59 - 入力の型によって実行する関数を変える事などができる | |
60 | |
61 ```perl6 | |
62 my subset Fizz of Int where * %% 3; | |
63 my subset Buzz of Int where * %% 5; | |
64 my subset FizzBuzz of Int where Fizz&Buzz; | |
65 my subset Number of Int where none Fizz|Buzz; | |
66 | |
67 proto sub fizzbuzz ($) { * } | |
68 multi sub fizzbuzz (FizzBuzz) { "FuzzBuzz" } | |
69 multi sub fizzbuzz (Fizz) { "Fizz" } | |
70 multi sub fizzbuzz (Buzz) { "Buzz" } | |
71 multi sub fizzbuzz (Number $number) { $number } | |
72 | |
73 fizzbuzz($_).say for 1..15; | |
74 ``` | |
75 | |
76 !SLIDE | |
56 ## Perl6の処理系の構成 | 77 ## Perl6の処理系の構成 |
57 | 78 |
58 - Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する) | 79 - Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する) |
59 - Rakudoは3つのレイヤーから構成されている | 80 - Rakudoは3つのレイヤーから構成されている |
60 - Perl6インタプリタ | 81 - Perl6インタプリタ |
68 | 89 |
69 - NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している | 90 - NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している |
70 - NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う | 91 - NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う |
71 - NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する | 92 - NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する |
72 | 93 |
94 ``` | |
95 #! nqp | |
96 sub fib($n) { | |
97 $n < 2 ?? $n !! fib($n-1) + fib($n - 2); | |
98 } | |
99 | |
100 my $N := 29; | |
101 | |
102 my $t0 := nqp::time_n(); | |
103 my $z := fib($N); | |
104 my $t1 := nqp::time_n(); | |
105 | |
106 nqp::say("fib($N) = " ~ fib($N)); | |
107 nqp::say("time = " ~ ($t1-$t0)); | |
108 ``` | |
109 | |
73 !SLIDE | 110 !SLIDE |
74 ## バイトコード | 111 ## バイトコード |
75 - 最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する | 112 - 最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する |
76 - 主に速度改善が目的となっている | 113 - 主に速度改善が目的となっている |
77 - Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する | 114 - Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する |