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&amp;Buzz; 180 my subset FizzBuzz of Int where Fizz&amp;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>