diff slide.md @ 2:41f44d102cf9

update
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 16 Apr 2019 18:59:34 +0900
parents b135f074e78c
children e43f47edd11a
line wrap: on
line diff
--- a/slide.md	Mon Apr 15 17:59:44 2019 +0900
+++ b/slide.md	Tue Apr 16 18:59:34 2019 +0900
@@ -14,7 +14,9 @@
 - 仕様と実装が分離しており, 現在はテストが仕様となっている
 - 実装は複数存在しているが,現在主流な実装はRakudoとなっている
 - 言語的にはスクリプト言語であり, 漸進的型付き言語となっている
+- MoarVM, JVMで動作する
 
+<img src="2000px-Camelia.svg.png" alt=""  style="width: 31%; height: auto;">
 
 !SLIDE
 ## Perl6のソースコード概要
@@ -52,4 +54,24 @@
 !SLIDE
 ## Perl6の処理系の構成
 
-- Perl6の処理系は現在はRakudoと呼ばれる
+- Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)
+- Rakudoは3つのレイヤーから構成されている
+    - Perl6インタプリタ
+    - Perl6インタプリタを記述するPerl6のサブセットNQP
+    - Perl6のバイトコードを解釈するMoarVM
+- このうちPerl6インタプリタとNQPはNQP自身で記述されている
+- MoarVMはC言語で記述されている
+
+!SLIDE
+## Perl6とNQP
+
+- NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している
+- NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う
+- NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する
+
+!SLIDE
+## バイトコード
+- Rakudo/NQPはバイトコードにスクリプトを変換する
+- バイトコードはMoarVMのドキュメントで制定されている
+- バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す
+