Mercurial > hg > Events > OSC2019
changeset 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 |
files | 2000px-Camelia.svg.png Per6_rakudo_OSC2019.mm slide.html slide.md slide.pdf.html |
diffstat | 5 files changed, 150 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Per6_rakudo_OSC2019.mm Tue Apr 16 18:59:34 2019 +0900 @@ -0,0 +1,33 @@ +<map version="1.1.0"> +<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> +<node CREATED="1555404713709" ID="ID_1727409716" MODIFIED="1555404722904" TEXT="Perl6 Rakudoの内部構造"> +<node CREATED="1555404724612" ID="ID_1448234108" MODIFIED="1555404744931" POSITION="right" TEXT="ゴール"> +<node CREATED="1555404750635" ID="ID_1533140732" MODIFIED="1555404756371" TEXT="Perl6自体を知ってもらう"/> +<node CREATED="1555404757182" ID="ID_857678938" MODIFIED="1555404763884" TEXT="バイトコードインタプリタの雰囲気を知る"/> +</node> +<node CREATED="1555404729587" ID="ID_70708845" MODIFIED="1555404733899" POSITION="left" TEXT="Perl6自体"> +<node CREATED="1555404736717" ID="ID_646086543" MODIFIED="1555404779128" TEXT="歴史"/> +<node CREATED="1555404767414" ID="ID_46599809" MODIFIED="1555404776988" TEXT="サンプルスクリプト"/> +<node CREATED="1555404810932" ID="ID_1856672723" MODIFIED="1555404834351" TEXT="Perl6をバイトコード化"/> +</node> +<node CREATED="1555404734607" ID="ID_419856625" MODIFIED="1555404749342" POSITION="left" TEXT="NQP"> +<node CREATED="1555404780245" ID="ID_1883651519" MODIFIED="1555404787994" TEXT="RakudoもNQP"/> +<node CREATED="1555404788447" ID="ID_1662711907" MODIFIED="1555404793569" TEXT="NQPもNQPで書かれている"/> +<node CREATED="1555404793966" ID="ID_63625923" MODIFIED="1555404805773" TEXT="簡単なスクリプトとバイトコードに変換したもの"/> +<node CREATED="1555404835654" ID="ID_773903016" MODIFIED="1555404835654" TEXT=""/> +</node> +<node CREATED="1555404837556" ID="ID_1630681009" MODIFIED="1555404903665" POSITION="left" TEXT="MoarVM"> +<node CREATED="1555404843257" ID="ID_1381838788" MODIFIED="1555404847514" TEXT="Cで書かれている"/> +<node CREATED="1555404872770" ID="ID_965642057" MODIFIED="1555404878522" TEXT="バイトコードインタプリタ"> +<node CREATED="1555408273658" ID="ID_110803697" MODIFIED="1555408277841" TEXT="goto文"/> +<node CREATED="1555408278562" ID="ID_1317536742" MODIFIED="1555408316716" TEXT="構造体の解説...?"/> +</node> +<node CREATED="1555404878965" ID="ID_1481298678" MODIFIED="1555404884151" TEXT="バイトコードのダンプも可能"/> +<node CREATED="1555404884530" ID="ID_981470558" MODIFIED="1555404887483" TEXT="トレースする?"/> +<node CREATED="1555404904050" ID="ID_1948908407" MODIFIED="1555404910029" TEXT="変数の仕組み"> +<node CREATED="1555408259482" ID="ID_885124990" MODIFIED="1555408262629" TEXT="レジスタ?"/> +<node CREATED="1555408262980" ID="ID_1866148061" MODIFIED="1555408266509" TEXT="型?"/> +</node> +</node> +</node> +</map>
--- a/slide.html Mon Apr 15 17:59:44 2019 +0900 +++ b/slide.html Tue Apr 16 18:59:34 2019 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] - on 2019-04-15 17:44:28 +0900 with Markdown engine kramdown (1.16.2) + on 2019-04-16 18:12:19 +0900 with Markdown engine kramdown (1.16.2) using options {} --> <h2 id="section">このセッションの内容</h2> @@ -106,8 +106,11 @@ <li>仕様と実装が分離しており, 現在はテストが仕様となっている</li> <li>実装は複数存在しているが,現在主流な実装はRakudoとなっている</li> <li>言語的にはスクリプト言語であり, 漸進的型付き言語となっている</li> + <li>MoarVM, JVMで動作する</li> </ul> +<p><img src="2000px-Camelia.svg.png" alt="" style="width: 31%; height: auto;" /></p> + </div> <div class='slide '> <!-- _S9SLIDE_ --> @@ -149,6 +152,49 @@ <pre><code>my Int $int_value = 31; $int_value = "hello"; # Compile error! </code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6-3">Perl6の処理系の構成</h2> + +<ul> + <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> + <li>Rakudoは3つのレイヤーから構成されている + <ul> + <li>Perl6インタプリタ</li> + <li>Perl6インタプリタを記述するPerl6のサブセットNQP</li> + <li>Perl6のバイトコードを解釈するMoarVM</li> + </ul> + </li> + <li>このうちPerl6インタプリタとNQPはNQP自身で記述されている</li> + <li>MoarVMはC言語で記述されている</li> +</ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6nqp">Perl6とNQP</h2> + +<ul> + <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> + <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> + <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> +</ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="section-1">バイトコード</h2> +<ul> + <li>Rakudo/NQPはバイトコードにスクリプトを変換する</li> + <li>バイトコードはMoarVMのドキュメントで制定されている</li> + <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> +</ul> + <!-- === end markdown block === --> </div>
--- 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のドキュメントで制定されている +- バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す +
--- a/slide.pdf.html Mon Apr 15 17:59:44 2019 +0900 +++ b/slide.pdf.html Tue Apr 16 18:59:34 2019 +0900 @@ -70,7 +70,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] - on 2019-04-15 17:44:28 +0900 with Markdown engine kramdown (1.16.2) + on 2019-04-16 18:12:19 +0900 with Markdown engine kramdown (1.16.2) using options {} --> <h2 id="section">このセッションの内容</h2> @@ -90,8 +90,11 @@ <li>仕様と実装が分離しており, 現在はテストが仕様となっている</li> <li>実装は複数存在しているが,現在主流な実装はRakudoとなっている</li> <li>言語的にはスクリプト言語であり, 漸進的型付き言語となっている</li> + <li>MoarVM, JVMで動作する</li> </ul> +<p><img src="2000px-Camelia.svg.png" alt="" style="width: 31%; height: auto;" /></p> + </div> <div class='slide '> <!-- _S9SLIDE_ --> @@ -133,6 +136,49 @@ <pre><code>my Int $int_value = 31; $int_value = "hello"; # Compile error! </code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6-3">Perl6の処理系の構成</h2> + +<ul> + <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> + <li>Rakudoは3つのレイヤーから構成されている + <ul> + <li>Perl6インタプリタ</li> + <li>Perl6インタプリタを記述するPerl6のサブセットNQP</li> + <li>Perl6のバイトコードを解釈するMoarVM</li> + </ul> + </li> + <li>このうちPerl6インタプリタとNQPはNQP自身で記述されている</li> + <li>MoarVMはC言語で記述されている</li> +</ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6nqp">Perl6とNQP</h2> + +<ul> + <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> + <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> + <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> +</ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="section-1">バイトコード</h2> +<ul> + <li>Rakudo/NQPはバイトコードにスクリプトを変換する</li> + <li>バイトコードはMoarVMのドキュメントで制定されている</li> + <li>バイトコード実行部分は、 命令に対応するバイト列を読み込み、 解釈し、 次の命令を読み取ることを繰り返す</li> +</ul> + <!-- === end markdown block === --> </div>