Mercurial > hg > Events > OSC2019
comparison slide.pdf.html @ 7:d8feb607c44e
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 19 Apr 2019 15:52:38 +0900 |
parents | f8f9af788fa7 |
children | 642787982a80 |
comparison
equal
deleted
inserted
replaced
6:f8f9af788fa7 | 7:d8feb607c44e |
---|---|
144 | 144 |
145 <pre><code>my Int $int_value = 31; | 145 <pre><code>my Int $int_value = 31; |
146 $int_value = "hello"; # Compile error! | 146 $int_value = "hello"; # Compile error! |
147 </code></pre> | 147 </code></pre> |
148 | 148 |
149 <pre><code>$ perl6 type_invalid.p6 | |
150 Type check failed in assignment to $int_value; expected Int but got Str ("hello") | |
151 in block <unit> at type_invalid.p6 line 4 | |
152 </code></pre> | |
153 | |
149 | 154 |
150 | 155 |
151 </div> | 156 </div> |
152 | 157 |
153 <div class='slide'> | 158 <div class='slide'> |
172 | 177 |
173 fizzbuzz($_).say for 1..15; | 178 fizzbuzz($_).say for 1..15; |
174 </code></pre> | 179 </code></pre> |
175 | 180 |
176 | 181 |
182 </div> | |
183 | |
184 <div class='slide'> | |
185 <!-- _S9SLIDE_ --> | |
186 <h2 id="スクリプト言語処理系">スクリプト言語処理系</h2> | |
187 <ul> | |
188 <li>スクリプト言語は入力として与えられたソースコードを、 直接評価せずにバイトコードにコンパイルする形式が主流となっている</li> | |
189 <li>その為スクリプト言語の実装は大きく2つで構成されている | |
190 <ul> | |
191 <li>バイトコードに変換するフロントエンド部分</li> | |
192 <li>バイトコードを解釈する仮想機械</li> | |
193 </ul> | |
194 </li> | |
195 </ul> | |
196 | |
197 <p><img src="fig/bytecode_sample_generally_lang.svg" width="80%" /></p> | |
198 | |
199 | |
177 | 200 |
178 </div> | 201 </div> |
179 | 202 |
180 <div class='slide'> | 203 <div class='slide'> |
181 <!-- _S9SLIDE_ --> | 204 <!-- _S9SLIDE_ --> |
227 | 250 |
228 </div> | 251 </div> |
229 | 252 |
230 <div class='slide'> | 253 <div class='slide'> |
231 <!-- _S9SLIDE_ --> | 254 <!-- _S9SLIDE_ --> |
232 <h2 id="バイトコード">バイトコード</h2> | 255 <h2 id="プログラミング言語とvm">プログラミング言語とVM</h2> |
233 <ul> | 256 <ul> |
234 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する | 257 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換しVMが評価する |
235 <ul> | 258 <ul> |
236 <li>全体的な処理速度の向上の為</li> | 259 <li>全体的な処理速度の向上の為</li> |
237 <li>実装を分離することでの見通しの良さ</li> | 260 <li>実装を分離することでの見通しの良さ</li> |
238 </ul> | 261 </ul> |
239 </li> | 262 </li> |
240 <li>多言語の環境 | 263 <li>言語処理系の実行にのみ動作するVM(プロセスVM)</li> |
241 <ul> | 264 <li>他言語の環境 |
265 <ul> | |
266 <li>Java | |
267 <ul> | |
268 <li>JVM</li> | |
269 </ul> | |
270 </li> | |
242 <li>Ruby | 271 <li>Ruby |
243 <ul> | 272 <ul> |
244 <li>YARV</li> | 273 <li>YARV</li> |
245 </ul> | 274 </ul> |
246 </li> | 275 </li> |
254 <li>BEAM</li> | 283 <li>BEAM</li> |
255 </ul> | 284 </ul> |
256 </li> | 285 </li> |
257 </ul> | 286 </ul> |
258 </li> | 287 </li> |
288 </ul> | |
289 | |
290 | |
291 | |
292 </div> | |
293 | |
294 <div class='slide'> | |
295 <!-- _S9SLIDE_ --> | |
296 <h2 id="perl6のvmの構成">Perl6のVMの構成</h2> | |
297 <ul> | |
298 <li>MoarVMと呼ばれるVM</li> | |
299 <li>C言語で記述されている</li> | |
300 <li>レジスタマシン | |
301 <ul> | |
302 <li>型情報を持つレジスタに対しての演算として処理される</li> | |
303 </ul> | |
304 </li> | |
305 <li>LuaJITなどを利用したJITコンパイルなども可能</li> | |
306 <li>Perl6やNQPは、MoarVMに対してライブラリなどを設定して起動する</li> | |
307 </ul> | |
308 | |
309 | |
310 | |
311 </div> | |
312 | |
313 <div class='slide'> | |
314 <!-- _S9SLIDE_ --> | |
315 <h2 id="バイトコード">バイトコード</h2> | |
316 <ul> | |
259 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> | 317 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> |
260 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> | 318 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> |
261 </ul> | 319 </ul> |
262 | 320 |
263 | 321 |