Mercurial > hg > Events > OSC2019
comparison slide.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 |
---|---|
160 | 160 |
161 <pre><code>my Int $int_value = 31; | 161 <pre><code>my Int $int_value = 31; |
162 $int_value = "hello"; # Compile error! | 162 $int_value = "hello"; # Compile error! |
163 </code></pre> | 163 </code></pre> |
164 | 164 |
165 <pre><code>$ perl6 type_invalid.p6 | |
166 Type check failed in assignment to $int_value; expected Int but got Str ("hello") | |
167 in block <unit> at type_invalid.p6 line 4 | |
168 </code></pre> | |
169 | |
165 | 170 |
166 | 171 |
167 </div> | 172 </div> |
168 | 173 |
169 <div class='slide'> | 174 <div class='slide'> |
188 | 193 |
189 fizzbuzz($_).say for 1..15; | 194 fizzbuzz($_).say for 1..15; |
190 </code></pre> | 195 </code></pre> |
191 | 196 |
192 | 197 |
198 </div> | |
199 | |
200 <div class='slide'> | |
201 <!-- _S9SLIDE_ --> | |
202 <h2 id="スクリプト言語処理系">スクリプト言語処理系</h2> | |
203 <ul> | |
204 <li>スクリプト言語は入力として与えられたソースコードを、 直接評価せずにバイトコードにコンパイルする形式が主流となっている</li> | |
205 <li>その為スクリプト言語の実装は大きく2つで構成されている | |
206 <ul> | |
207 <li>バイトコードに変換するフロントエンド部分</li> | |
208 <li>バイトコードを解釈する仮想機械</li> | |
209 </ul> | |
210 </li> | |
211 </ul> | |
212 | |
213 <p><img src="fig/bytecode_sample_generally_lang.svg" width="80%" /></p> | |
214 | |
215 | |
193 | 216 |
194 </div> | 217 </div> |
195 | 218 |
196 <div class='slide'> | 219 <div class='slide'> |
197 <!-- _S9SLIDE_ --> | 220 <!-- _S9SLIDE_ --> |
243 | 266 |
244 </div> | 267 </div> |
245 | 268 |
246 <div class='slide'> | 269 <div class='slide'> |
247 <!-- _S9SLIDE_ --> | 270 <!-- _S9SLIDE_ --> |
248 <h2 id="バイトコード">バイトコード</h2> | 271 <h2 id="プログラミング言語とvm">プログラミング言語とVM</h2> |
249 <ul> | 272 <ul> |
250 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する | 273 <li>最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換しVMが評価する |
251 <ul> | 274 <ul> |
252 <li>全体的な処理速度の向上の為</li> | 275 <li>全体的な処理速度の向上の為</li> |
253 <li>実装を分離することでの見通しの良さ</li> | 276 <li>実装を分離することでの見通しの良さ</li> |
254 </ul> | 277 </ul> |
255 </li> | 278 </li> |
256 <li>多言語の環境 | 279 <li>言語処理系の実行にのみ動作するVM(プロセスVM)</li> |
257 <ul> | 280 <li>他言語の環境 |
281 <ul> | |
282 <li>Java | |
283 <ul> | |
284 <li>JVM</li> | |
285 </ul> | |
286 </li> | |
258 <li>Ruby | 287 <li>Ruby |
259 <ul> | 288 <ul> |
260 <li>YARV</li> | 289 <li>YARV</li> |
261 </ul> | 290 </ul> |
262 </li> | 291 </li> |
270 <li>BEAM</li> | 299 <li>BEAM</li> |
271 </ul> | 300 </ul> |
272 </li> | 301 </li> |
273 </ul> | 302 </ul> |
274 </li> | 303 </li> |
304 </ul> | |
305 | |
306 | |
307 | |
308 </div> | |
309 | |
310 <div class='slide'> | |
311 <!-- _S9SLIDE_ --> | |
312 <h2 id="perl6のvmの構成">Perl6のVMの構成</h2> | |
313 <ul> | |
314 <li>MoarVMと呼ばれるVM</li> | |
315 <li>C言語で記述されている</li> | |
316 <li>レジスタマシン | |
317 <ul> | |
318 <li>型情報を持つレジスタに対しての演算として処理される</li> | |
319 </ul> | |
320 </li> | |
321 <li>LuaJITなどを利用したJITコンパイルなども可能</li> | |
322 <li>Perl6やNQPは、MoarVMに対してライブラリなどを設定して起動する</li> | |
323 </ul> | |
324 | |
325 | |
326 | |
327 </div> | |
328 | |
329 <div class='slide'> | |
330 <!-- _S9SLIDE_ --> | |
331 <h2 id="バイトコード">バイトコード</h2> | |
332 <ul> | |
275 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> | 333 <li>Perl6も、Rakudo/NQPはバイトコードに変換され、 バイトコードをVMが実行する</li> |
276 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> | 334 <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> |
277 </ul> | 335 </ul> |
278 | 336 |
279 | 337 |