comparison Slide/slide.pdf.html @ 86:2c38abf2c77d

add poster
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 09 Jan 2019 19:13:02 +0900
parents 1f4e174f0f1a
children 632f160ccbd0
comparison
equal deleted inserted replaced
85:1f4e174f0f1a 86:2c38abf2c77d
76 76
77 <!-- _S9SLIDE_ --> 77 <!-- _S9SLIDE_ -->
78 <h2 id="研究目的">研究目的</h2> 78 <h2 id="研究目的">研究目的</h2>
79 <ul> 79 <ul>
80 <li>スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている.</li> 80 <li>スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている.</li>
81 <li>Perl6は設計と実装が区分されており様々な処理系が開発されている.現在主流なPerl6はRakudoと言われるプロジェクトである.</li> 81 <li>現在主流なPerl6はRakudoと言われるプロジェクトである.</li>
82 <li>RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し, NQPをVMが解釈するという処理の流れになっている.</li> 82 <li>RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し, NQPをVMが解釈するという処理の流れになっている.</li>
83 <li>このVMは任意のVMが選択できるようになっており, 現在はMoarVM, JavaVM, JavaScriptが動作環境として選択可能である.</li> 83 <li>主に利用されているVMに, Cで書かれたMoarVMが存在する.</li>
84 <li>主に利用されているVMにCで書かれたMoarVMが存在する.</li> 84 <li>MoarVMは全体的な起動時間及び処理速度が, Perl5と比較し非常に低速である.</li>
85 <li>MoarVMはJITコンパイルなどをサポートしているが, 全体的な起動時間及び処理速度がPerl5と比較し非常に低速である.</li>
86 <li>この問題を解決するためにContinuation based C (CbC)という言語を一部用いてMoarVMの書き換えを行う.</li> 85 <li>この問題を解決するためにContinuation based C (CbC)という言語を一部用いてMoarVMの書き換えを行う.</li>
87 <li>CbCを用いたMoarVMの書き換えを検討し,並列デバッグ方法などについて検討する.</li> 86 <li>CbCを用いたMoarVMの書き換えを検討し,並列デバッグ方法などについて検討する.</li>
88 </ul> 87 </ul>
89 88
90 89
172 <!-- _S9SLIDE_ --> 171 <!-- _S9SLIDE_ -->
173 <h2 id="perl6の概要">Perl6の概要</h2> 172 <h2 id="perl6の概要">Perl6の概要</h2>
174 173
175 <ul> 174 <ul>
176 <li>Perl6とはPerl5の後継言語として当初開発が開始された言語である.</li> 175 <li>Perl6とはPerl5の後継言語として当初開発が開始された言語である.</li>
177 <li>仕様と実装が分離しており, 仕様は公式テストスイートであるRoastそのものとなっている.</li> 176 <li>仕様と実装が分離しており, 仕様は公式テストスーツであるRoastそのものとなっている.</li>
178 <li>歴史的にHaskellで実装されたPugs, Pythonとの共同基盤を目指したParrotなどの実装が存在する.</li> 177 <li>歴史的にHaskellで実装されたPugs, Pythonとの共同基盤を目指したParrotなどの実装が存在する.</li>
179 <li>言語仕様としては漸進的型付け言語であり, 従来のPerl5とは互換性が無い.</li> 178 <li>言語仕様としては漸進的型付け言語であり, 従来のPerl5とは互換性が無い.</li>
180 <li>現在の主要な実装はRakudoと呼ばれる実装である.</li> 179 <li>現在の主要な実装はRakudoと呼ばれる実装である.</li>
181 </ul> 180 </ul>
182 181
641 53 : 53 640 53 : 53
642 *54 : 8 641 *54 : 8
643 </code></pre> 642 </code></pre>
644 643
645 644
645 </div>
646
647 <div class='slide'>
648 <!-- _S9SLIDE_ -->
649 <h2 id="現在のcbcmoarvm">現在のCbCMoarVM</h2>
650
651 <ul>
652 <li>現在はNQP, Rakudoのセルフビルドが達成でき, オリジナルと同等のテスト達成率を持っている</li>
653 <li>moarの起動時のオプションとして <code>--cbc</code> を与えることによりCbCで動き, そうでない場合は通常のCで記述された箇所で実行される</li>
654 </ul>
655
656
657
658 </div>
659
660 <div class='slide'>
661 <!-- _S9SLIDE_ -->
662 <h2 id="cbcmoarvmの利点">CbCMoarVMの利点</h2>
663
664 <ul>
665 <li>バイトコードインタプリタの箇所をモジュール化する事が可能となり, CodeGearの再利用性や記述生が高まる</li>
666 <li>デバッグ時にラベルではなくCodeGearにbreakpointを設定可能となり,デバッグが安易となる</li>
667 <li>ThreadedCodeを実装する場合, CodeGearを組み合わせることにより実装する事が可能となる</li>
668 </ul>
669
670
671
672 </div>
673
674 <div class='slide'>
675 <!-- _S9SLIDE_ -->
676 <h2 id="cbcmoarvmの欠点">CbCMoarVMの欠点</h2>
677
678 <ul>
679 <li>CbCコンパイラがバグを発生させやすく, 意図しない挙動を示す事がある</li>
680 <li>MoarVMのオリジナルの更新頻度が高い為, 追従していく必要がある</li>
681 <li>CodeGear側からCに戻る際に手順が複雑となる</li>
682 <li>CodeGearを単位として用いる事で複雑なプログラミングが要求される.</li>
683 </ul>
684
685
646 686
647 </div> 687 </div>
648 688
649 <div class='slide'> 689 <div class='slide'>
650 <!-- _S9SLIDE_ --> 690 <!-- _S9SLIDE_ -->