Mercurial > hg > Events > OSC2019
comparison slide.html @ 6:f8f9af788fa7
remove !#SLIDE for use slideshow latest version
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 19 Apr 2019 12:10:48 +0900 |
parents | e87cc0746622 |
children | d8feb607c44e |
comparison
equal
deleted
inserted
replaced
5:e87cc0746622 | 6:f8f9af788fa7 |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
1 <!DOCTYPE html> | 6 <!DOCTYPE html> |
2 <html> | 7 <html> |
3 <head> | 8 <head> |
4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | 9 <meta http-equiv="content-type" content="text/html;charset=utf-8"> |
5 <title>Perl6の内部表現</title> | 10 <title>Perl6の内部表現</title> |
6 | 11 |
7 <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16]"> | 12 <meta name="generator" content="Slide Show (S9) v4.1.0 on Ruby 2.6.3 (2019-04-16) [x86_64-darwin17]"> |
8 <meta name="author" content="Takahiro Shimizu" > | 13 <meta name="author" content="Takahiro Shimizu" > |
9 | 14 |
10 <!-- style sheet links --> | 15 <!-- style sheet links --> |
11 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> | 16 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> |
12 <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> | 17 <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> |
13 <link rel="stylesheet" href="s6/themes/print.css" media="print"> | 18 <link rel="stylesheet" href="s6/themes/print.css" media="print"> |
35 } | 40 } |
36 }); | 41 }); |
37 prettyPrint(); | 42 prettyPrint(); |
38 } ); | 43 } ); |
39 | 44 |
40 | |
41 </script> | 45 </script> |
42 | 46 |
43 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> | 47 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> |
44 <!--[if IE]> | 48 <!--[if IE]> |
45 <script src="s6/js/jquery.microsoft.js"></script> | 49 <script src="s6/js/jquery.microsoft.js"></script> |
46 <![endif]--> | 50 <![endif]--> |
47 | 51 |
48 | 52 |
49 | 53 |
50 </head> | 54 </head> |
51 <body> | 55 <body> |
52 | 56 |
53 <div class="layout"> | 57 <div class="layout"> |
64 <div class='slide cover'> | 68 <div class='slide cover'> |
65 <table width="90%" height="90%" border="0" align="center"> | 69 <table width="90%" height="90%" border="0" align="center"> |
66 <tr> | 70 <tr> |
67 <td> | 71 <td> |
68 <div align="center"> | 72 <div align="center"> |
69 <h1><font color="#808db5">Perl6の内部表現</font></h1> | 73 <h1><font color="#808db5">Perl6の内部表現</font></h1> |
70 </div> | 74 </div> |
71 </td> | 75 </td> |
72 </tr> | 76 </tr> |
73 <tr> | 77 <tr> |
74 <td> | 78 <td> |
75 <div align="left"> | 79 <div align="left"> |
76 Takahiro Shimizu | 80 Takahiro Shimizu |
77 | 81 |
78 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> | 82 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> |
79 </div> | 83 </div> |
80 </td> | 84 </td> |
81 </tr> | 85 </tr> |
82 </table> | 86 </table> |
83 </div> | 87 </div> |
84 | 88 |
85 <div class='slide '> | 89 |
86 <!-- === begin markdown block === | 90 |
87 | 91 <div class='slide'> |
88 generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] | 92 |
89 on 2019-04-18 17:22:44 +0900 with Markdown engine kramdown (1.16.2) | 93 <!-- _S9SLIDE_ --> |
90 using options {} | 94 <h2 id="このセッションの内容">このセッションの内容</h2> |
91 --> | |
92 <h2 id="section">このセッションの内容</h2> | |
93 | 95 |
94 <ul> | 96 <ul> |
95 <li>Perl6の主要な実装であるRakudoの内部構造を探ります</li> | 97 <li>Perl6の主要な実装であるRakudoの内部構造を探ります</li> |
96 <li>Rakudoの内部で利用されているVMや, Perl6のサブセットなどについて探索します</li> | 98 <li>Rakudoの内部で利用されているVMや, Perl6のサブセットなどについて探索します</li> |
97 <li>スクリプト言語で主に使われているバイトコードインタプリタの気持ちになります</li> | 99 <li>スクリプト言語で主に使われているバイトコードインタプリタの気持ちになります</li> |
98 </ul> | 100 </ul> |
99 | 101 |
100 </div> | 102 |
101 <div class='slide '> | 103 |
102 <!-- _S9SLIDE_ --> | 104 </div> |
103 | 105 |
104 <h2 id="perl6">Perl6とは</h2> | 106 <div class='slide'> |
107 <!-- _S9SLIDE_ --> | |
108 <h2 id="perl6とは">Perl6とは</h2> | |
105 <ul> | 109 <ul> |
106 <li>当初Perl5の時期バージョンとして開発されていたプログラミング言語</li> | 110 <li>当初Perl5の時期バージョンとして開発されていたプログラミング言語</li> |
107 <li>仕様と実装が分離しており, 現在はテストが仕様となっている</li> | 111 <li>仕様と実装が分離しており, 現在はテストが仕様となっている</li> |
108 <li>実装は複数存在しているが,現在主流な実装はRakudoとなっている</li> | 112 <li>実装は複数存在しているが,現在主流な実装はRakudoとなっている</li> |
109 <li>言語的にはスクリプト言語であり, 漸進的型付き言語となっている</li> | 113 <li>言語的にはスクリプト言語であり, 漸進的型付き言語となっている</li> |
110 <li>MoarVM, JVMで動作する</li> | 114 <li>MoarVM, JVMで動作する</li> |
111 </ul> | 115 </ul> |
112 | 116 |
113 <p><img src="2000px-Camelia.svg.png" alt="" style="width: 31%; height: auto;" /></p> | 117 <p><img src="2000px-Camelia.svg.png" alt="" style="width: 31%; height: auto;" /></p> |
114 | 118 |
115 </div> | 119 |
116 <div class='slide '> | 120 |
117 <!-- _S9SLIDE_ --> | 121 </div> |
118 | 122 |
119 <h2 id="perl6-1">Perl6のソースコード概要</h2> | 123 <div class='slide'> |
124 <!-- _S9SLIDE_ --> | |
125 <h2 id="perl6のソースコード概要">Perl6のソースコード概要</h2> | |
120 | 126 |
121 <ul> | 127 <ul> |
122 <li>Perl5の文法とは比較的変更が多い</li> | 128 <li>Perl5の文法とは比較的変更が多い</li> |
123 <li>変数がオブジェクトと化した事により, 変数からsayメソッドを呼ぶことが可能</li> | 129 <li>変数がオブジェクトと化した事により, 変数からsayメソッドを呼ぶことが可能</li> |
124 </ul> | 130 </ul> |
138 $sample_value.say; # 31 | 144 $sample_value.say; # 31 |
139 | 145 |
140 say($sample_value * 3); | 146 say($sample_value * 3); |
141 </code></pre> | 147 </code></pre> |
142 | 148 |
143 </div> | 149 |
144 <div class='slide '> | 150 |
145 <!-- _S9SLIDE_ --> | 151 </div> |
146 | 152 |
147 <h2 id="perl6-2">Perl6の言語的な特徴</h2> | 153 <div class='slide'> |
154 <!-- _S9SLIDE_ --> | |
155 <h2 id="perl6の言語的な特徴">Perl6の言語的な特徴</h2> | |
148 | 156 |
149 <ul> | 157 <ul> |
150 <li>漸進的型付き言語である為, 型を強制することも可能となる</li> | 158 <li>漸進的型付き言語である為, 型を強制することも可能となる</li> |
151 </ul> | 159 </ul> |
152 | 160 |
153 <pre><code>my Int $int_value = 31; | 161 <pre><code>my Int $int_value = 31; |
154 $int_value = "hello"; # Compile error! | 162 $int_value = "hello"; # Compile error! |
155 </code></pre> | 163 </code></pre> |
156 | 164 |
157 </div> | 165 |
158 <div class='slide '> | 166 |
159 <!-- _S9SLIDE_ --> | 167 </div> |
160 | 168 |
161 <h2 id="perl6-3">Perl6の言語的な特徴</h2> | 169 <div class='slide'> |
170 <!-- _S9SLIDE_ --> | |
171 <h2 id="perl6の言語的な特徴-1">Perl6の言語的な特徴</h2> | |
162 | 172 |
163 <ul> | 173 <ul> |
164 <li>型を独自に定義することも可能</li> | 174 <li>型を独自に定義することも可能</li> |
165 <li>入力の型によって実行する関数を変える事などができる</li> | 175 <li>入力の型によって実行する関数を変える事などができる</li> |
166 </ul> | 176 </ul> |
167 | 177 |
168 <pre lang="perl6"><code>my subset Fizz of Int where * %% 3; | 178 <pre><code class="language-perl6">my subset Fizz of Int where * %% 3; |
169 my subset Buzz of Int where * %% 5; | 179 my subset Buzz of Int where * %% 5; |
170 my subset FizzBuzz of Int where Fizz&Buzz; | 180 my subset FizzBuzz of Int where Fizz&Buzz; |
171 my subset Number of Int where none Fizz|Buzz; | 181 my subset Number of Int where none Fizz|Buzz; |
172 | 182 |
173 proto sub fizzbuzz ($) { * } | 183 proto sub fizzbuzz ($) { * } |
177 multi sub fizzbuzz (Number $number) { $number } | 187 multi sub fizzbuzz (Number $number) { $number } |
178 | 188 |
179 fizzbuzz($_).say for 1..15; | 189 fizzbuzz($_).say for 1..15; |
180 </code></pre> | 190 </code></pre> |
181 | 191 |
182 </div> | 192 |
183 <div class='slide '> | 193 |
184 <!-- _S9SLIDE_ --> | 194 </div> |
185 | 195 |
186 <h2 id="perl6-4">Perl6の処理系の構成</h2> | 196 <div class='slide'> |
197 <!-- _S9SLIDE_ --> | |
198 <h2 id="perl6の処理系の構成">Perl6の処理系の構成</h2> | |
187 | 199 |
188 <ul> | 200 <ul> |
189 <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> | 201 <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> |
190 <li>Rakudoは3つのレイヤーから構成されている | 202 <li>Rakudoは3つのレイヤーから構成されている |
191 <ul> | 203 <ul> |
196 </li> | 208 </li> |
197 <li>このうちPerl6インタプリタとNQPはNQP自身で記述されている</li> | 209 <li>このうちPerl6インタプリタとNQPはNQP自身で記述されている</li> |
198 <li>MoarVMはC言語で記述されている</li> | 210 <li>MoarVMはC言語で記述されている</li> |
199 </ul> | 211 </ul> |
200 | 212 |
201 </div> | 213 |
202 <div class='slide '> | 214 |
203 <!-- _S9SLIDE_ --> | 215 </div> |
204 | 216 |
205 <h2 id="perl6nqp">Perl6とNQP</h2> | 217 <div class='slide'> |
218 <!-- _S9SLIDE_ --> | |
219 <h2 id="perl6とnqp">Perl6とNQP</h2> | |
206 | 220 |
207 <ul> | 221 <ul> |
208 <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> | 222 <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> |
209 <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> | 223 <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> |
210 <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> | 224 <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> |
223 | 237 |
224 nqp::say("fib($N) = " ~ fib($N)); | 238 nqp::say("fib($N) = " ~ fib($N)); |
225 nqp::say("time = " ~ ($t1-$t0)); | 239 nqp::say("time = " ~ ($t1-$t0)); |
226 </code></pre> | 240 </code></pre> |
227 | 241 |
228 </div> | 242 |
229 <div class='slide '> | 243 |
230 <!-- _S9SLIDE_ --> | 244 </div> |
231 | 245 |
232 <h2 id="section-1">バイトコード</h2> | 246 <div class='slide'> |
247 <!-- _S9SLIDE_ --> | |
248 <h2 id="バイトコード">バイトコード</h2> | |
233 <ul> | 249 <ul> |
234 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する | 250 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する |
235 <ul> | 251 <ul> |
236 <li>全体的な処理速度の向上の為</li> | 252 <li>全体的な処理速度の向上の為</li> |
237 <li>実装を分離することでの見通しの良さ</li> | 253 <li>実装を分離することでの見通しの良さ</li> |
258 </li> | 274 </li> |
259 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> | 275 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> |
260 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> | 276 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> |
261 </ul> | 277 </ul> |
262 | 278 |
263 <!-- === end markdown block === --> | 279 |
264 </div> | 280 </div> |
265 | 281 |
266 | 282 |
267 </div><!-- presentation --> | 283 </div><!-- presentation --> |
268 </body> | 284 </body> |