annotate Paper/anatofuz.tex @ 15:8580ad6c50dd

tweak .tex and bib
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 06 Nov 2018 23:22:43 +0900
parents 56f4ac0231ee
children ed882dba29f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 % withpage: ページ番号をつける (著者確認用)
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 % english: 英語原稿用フォーマット
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \documentclass{ipsjprosym}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 %\documentclass[withpage,english]{ipsjprosym}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
11
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
6 \usepackage[dvipdfmx]{graphicx}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 \usepackage{latexsym}
11
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
8 \usepackage{comment}
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
9 \usepackage{listings}
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
10 \lstset{
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
11 language=C,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
12 tabsize=2,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
13 frame=single,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
14 basicstyle={\ttfamily\footnotesize},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
15 identifierstyle={\footnotesize},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
16 commentstyle={\footnotesize\itshape},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
17 keywordstyle={\footnotesize\bfseries},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
18 ndkeywordstyle={\footnotesize},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
19 stringstyle={\footnotesize\ttfamily},
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
20 breaklines=true,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
21 captionpos=b,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
22 columns=[l]{fullflexible},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
23 xrightmargin=0zw,%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
24 xleftmargin=1zw,%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
25 aboveskip=1zw,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
26 numberstyle={\scriptsize},%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
27 stepnumber=1,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
28 numbersep=0.5zw,%
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
29 lineskip=-0.5ex,
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
30 }
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
31 \renewcommand{\lstlistingname}{Code}
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
32 \usepackage{caption}
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
33 \captionsetup[lstlisting]{font={small,tt}}
11
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
34 \usepackage{url}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 \begin{document}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
38 \title{CbCを用いたPerl6処理系}
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
39
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
40 %\affiliate{IPSJ}{情報処理学会}
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
41 \affiliate{IERYUKYU}{琉球大学工学部情報工学科}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
43 \author{清水 隆博}{Takahiro SHIMIZU}{IERYUKYU}[anatofuz@cr.ie.u-ryukyu.ac.jp]
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
44 \author{河野 真治}{Shinji KONO}{IERYUKYU}[kono@ie.u-ryukyu.ac.jp]
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
46 %概要
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 \begin{abstract}
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
48 スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
49 Perl6は設計と実装が区分されており様々な処理系が開発されている.現在主流なPerl6はRakudoと言われるプロジェクトである.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
50 RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し,NQPをVMが解釈するという処理流れになっている.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
51 このVMは任意のVMが選択できるようになっており,現在はMoarVM,JavaVM,Javascriptが動作環境として選択可能である.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
52 主に利用されているVMにCで書かれたMoarVMが存在する.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
53 MoarVMはJITコンパイルなどをサポートしているが,全体的な起動時間及び処理速度がPerl5と比較し非常に低速である.
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
54 この問題を解決するためにContinuation based C (CbC)という言語を一部用いる.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
55 本論文ではMoarVMの一部をCbCを用いて書き直し,実際にどのようなパフォーマンスが出るかを報告する.
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
56
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
57
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 \end{abstract}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 \begin{jkeyword}
3
154c6acc0e23 add_abst
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
61 プログラミング言語, コンパイラ, CbC, Perl6, MoarVM
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 \end{jkeyword}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 \maketitle
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
67 \section{研究目的}
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
68 現在も広く使われているスクリプト言語PerlことPerl5の後継言語としてPerl6が開発されている.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
69 Perl6は設計と実装が区分されており,現在広く使われている実装はRakudoと呼ばれるプロジェクトである.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
70 Rakudoの実装はPerl6コンパイラ開発者用のサブセットであるNQP(NotQuitPerl)で実装されているPerl6の事を指す.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
71 現在RakudoはNQPを解釈できる実行環境として,C言語で実装されたMoarVM,JVM,Javascript上で動作する様に開発されている.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
72 Rakudoとして主に使われている処理系はMoarVMであるが,MoarVMの処理時間がPerl5などの多くのスクリプト言語と比較し非常に低速である.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
73 その為現在日本国内ではPerl6を実務として利用するケースは概ね存在しない.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
74 Perl6の持つ言語機能や型システムは非常に柔軟かつ強力であるため実用的な処理速度に達すれば言語の利用件数が向上することが期待される.
4
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
75 この問題を解決するために現在当研究室で開発しているContinuation Based C(以下CbC)を用いて改良を行う.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
76 CbCはCよりさらにきめ細やかな記述が可能であるためスクリプト言語などのプログラミング言語の記述と親和性が高い事が推測される.
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
77 故に本研究はCbCをスクリプト言語の実装に適応した場合,どのような利点やプログラミング上の問題点に遭遇するかCbCの応用としての側面でも行う.
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
78 本稿ではまずCbC,Perl6の特徴及び現在の実装について述べ,次に改良を行うMoarVMの一連の処理流れについて述べる.
4
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
79 そして今回改良した一部分と今後の展開について記す.
1035c41fc2db add abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
80
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
81 \section{CbC}
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
82 \subsection{CbCの概要}
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
83 CbCは当研究室で開発しているプログラミング言語である.
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
84 Cレベルでのプログラミングを行う場合,本来プログラマが行いたい処理の他にmallocなどを利用したメモリのアロケートやエラーハンドリングなどが存在する.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
85 これらをmeta computationと呼ぶ.これらmeta computationと通常の処理を分離することでバグの原因がmeta computation側にあるか処理側にあるかの分離などが可能となる.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
86 しかしC言語などを用いたプログラミングで分離を行おうとすると,それぞれ事細かに関数やクラスを分割せねばならず容易ではない.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
87 CbCでは関数よりmeta computationを細かく記述する為にCodeSegmentという単位を導入した.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
88 CbCではCodeSegment,DetaSegmentを基本単位として記述するプログラミングスタイルを取る.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
89
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
90 \subsection{CodeSegmentとDataSegment}
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
91 CbCではCの関数の代わりにCodeSegmentを導入する.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
92 CodeSegmentはCの関数宣言の型名の代わりに\_\_codeと書くことで 宣言できる.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
93
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
94 \subsection{現在の実装}
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
95 CbCは現在主要なCコンパイラであるgcc及びllvmをバックエンドとしたclang上の2種類の実装が存在する.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
96 gccはバージョン9.0.0に,clangは7.0.0に対応している.
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
97
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
98 \subsection{CbCコンパイラのバグ}
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
99 CbCコンパイラ自身はそれぞれ用意したテストスイートを通化するものの,MoarVMの様な巨大なプロジェクトのCSをコンパイルを実行する場合,予期せぬバグが発生した.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
100 主にCS間のgotoにおけるtail callフラグの除去や,DSとして渡している構造体の変数のアドレスがスタックポインタの値より上位に来てしまい,通常のCの関数をcallした際にローカル変数の領域がDSのアドレスの周辺を利用してしまう.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
101 その為DSの構造体の値が書き換わり,CからDSにreturnした際にDSの構造体が破壊されるバグである.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
102 現状ではCbCコンパイラがプログラマの意図と反する挙動を取るためCbCコンパイラのバグを回避するプログラミングが要求されている.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
103 本来コンパイラ側のバグを回避するプログラミングをプログラマに要求するスタイルは好ましくない.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
104 従ってCbCコンパイラ自身の信頼性を向上させる事も今後の課題となっている.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
105 \subsection{CbCとCの互換性}
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
106 CbCはCコンパイラ上に実装している為,CSを利用しない場合は通常のCプログラムとして動作する.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
107 CbCコンパイラは内部的に与えられているソースコードがCbCであるかどうかを判断し,そうでない場合は通常のコンパイラとして動作する.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
108 その為MoarVMのビルドにおいてもCbCで書き換えたソースコードがあるターゲットと,手を加えていないオリジナルのターゲットの2種類を同一のCbCコンパイラでビルドする事が可能である.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
109
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
110
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
111 \subsection{言語処理系におけるCbCの応用}
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
112 CbCを言語処理系,特にスクリプト言語に応用すると幾つかの箇所に置いて利点があると推測される.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
113 CbCにおけるCSはコンパイラの基本ブロックに相当する.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
114
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
115
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
116 \section{Perl6の概要}
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
117 この章では現在までのPerl6の遍歴及びPerl6の言語的な特徴について記載する.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
118 \subsection{Perl6の構想と初期の処理系}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
119 Perl6は2002年にLarryWallがPerlを置き換える言語として設計を開始した.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
120 Perl5の言語的な問題点であるオブジェクト指向機能の強力なサポートなどを取り入れた言語として設計された.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
121 Perl5は設計と実装が同一であり,Larryらによって書かれたC実装のみだった.Perl6は設計と実装が分離しており様々な処理系が開発されきた.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
122 まず2005年に唐鳳によってHaskellで実装されたPugs\cite{pugs}が登場した.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
123 Pugsは最初に登場したPerl6実装であり,この実装を基にしてPerl6の仕様も修正された.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
124 現在Pugsは歴史的な実装となっており,更新はされていない.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
125
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
126 \subsection{Parrot}
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
127 その後Pythonとの共同動作環境としてParrot\cite{parrot}が実装された.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
128 ParrotはPASMと呼ばれるバイトコードを解釈可能なレジスタマシンである.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
129 ParrotでのPerl6の実装はNQP(NotQuitPerl)と呼ばれるPerl6のサブセットでPerl6を記述するというアイディアの基実装された.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
130 ParrotVMは2006年のversion8.1.0が最後のリリースである.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
131 こちらもPugsと同様に現在のPerl6プロジェクトでは歴史的な実装とされている.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
132 現在主に使用されている実装であるRakudoは2010年にRakudo-Starという一連のツール郡としてリリースされた.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
133 Perl6処理系自体は現在も未完成であり,Perl6プロジェクトとして提供しているテストリポジトリ「Roast\cite{roast}」で定義されているテストケースを完全に通化する処理系は現在未だ存在しない.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
134
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
135 Perl6は言語仕様及び処理実装がPerl5と大幅に異なっており,言語的な互換性が存在しない.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
136 従って現在ではPerl6とPerl5は別言語としての開発方針になっている.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
137 Perl6は現在有力な処理系であるRakudoから名前を取り\texttt{Raku}という言語名に変更しようという動きが一部存在している.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
138
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
139 \subsection{Rakudo}
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
140
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
141 RakudoとはParrotで構想に上がったNQP,NQPに基づくPerl6を基にしたプロジェクトである.
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
142 RakudoがPerl6のコンパイラかつインタプリタであると考えても良い.
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
143 Rakudoにおけるコンパイラとは厳密には2種類存在する.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
144 まず第1のものがPerl6,もしくはNQPをMoarVM,JVMのバイトコードに変換するNQPコンパイラである.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
145 次にそのNQPが出力したバイトコードをネイティブコードに変換するVMの2種類である.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
146 このVMは現在MoarVM,JavaVM,Javascript,GraalVMを選択可能である.
15
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
147 Rakudo及びNQP projectではこのNQPコンパイラの部分をフロントエンド,VMの部分をバックエンド\cite{rani1}と呼称している.
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
148 NQPで主に書かれたPerl6のことをRakudoと呼ぶ.
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
149 Perl6はNQP以外にもPerl6独自の一種のシンタックスシュガーの様な物を持っており,これはNQPコンパイラ側で処理を行う.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
150
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
151 \subsection{NQP}
14
56f4ac0231ee tweak tex and add bibfile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
152
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
153 RakudoにおけるNQP\cite{nqp}は現在MoarVM,JVM上で動作し,MoarVMを一部利用することでNodeJSからも動作させる事が可能である.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
154 NQPはPerl6のサブセットであるため主な文法などはPerl6に準拠しているが幾つか異なる点が存在する.
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
155 NQP自身はStage0と呼ばれる名前空間上のモジュールのみ動作環境のVMのバイトコードを必要とするが,それ以外はNQPで記述されておりBootstrappingされている言語である.
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
156 その為Rakudoを動作させる為にはMoarVMなどのVM,VMに対応させる様にビルドしたNQPがそれぞれ必要となる.
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
157 現在のNQPではMoarVM,JVMに対応するStage0はそれぞれMoarVMbytecode,jarファイルが用意されており,Javascriptではバイトコードの代わりにランタイム独自のModuleLoaderなどが設計されている.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
158 MoarVMのModuleLoaderはStage0あるMoarVMbytecodeで書かれた一連のファイルが該当する.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
159
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
160 Stage0にあるファイルはNQPのコンパイラの構成要素そのものである.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
161 NQPは6modelと呼ばれるオブジェクトモデルを採用としているが,これを構築する為に必要なNQPCORE,正規表現系のQRegex,MoarVMのModuleLoaderなどがmoarvmbytecodeで記述されている.これらMoarVMBytecodeの拡張子は.moarvmである.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
162 MoarVMに対してStage0のディレクトリにライブラリパスを設定し,nqp.moarvmを実行させることでnqpの対話型環境が起動する.
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
163
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
164 実際にperl6を動かすためにはself buildしたNQPコンパイラが必要となる.その為にstage0を利用してStage1をビルドしNQPコンパイラを作成する.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
165
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
166 Roastやドキュメントなどによって設計が定まっているPerl6とは異なりNQP自身の設計は今後も変更になる可能性が開発者から公表されている.
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
167 現在の公表されているNQPのオペコードはNQPのGitHubリポジトリ\cite{nqpopcode}に記述されているものである.
5
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
168
06f3183ef6c3 add about Perl6
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
169
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
170 \subsection{Rakudo Perl6}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
171 Rakudo実装上におけるPerl6はRakudo Perl6と呼ばれているGitリポジトリで管理されているプログラムのことである.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
172 前述した通りRakudo Perl6はPerl6のサブセットであるNQPを用いて記述されている.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
173 従ってyaccやlexと言ったPerl5の文字解析,構文解析に利用していたプログラムは利用せず,NQP側で構文定義などを行っている.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
174 NQPはNQP自身でBootstrappingされている為,Rakudo Perl6のbuild時にはNQPの実行環境として要したVM,それに基づいてbuildしたNQPがそれぞれ必要となる.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
175
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
176 言語的な特徴としてはPerl5とは違いアトミックに演算を行う事が可能なatom演算子や,すべてがオブジェクトであるオブジェクト指向言語としての進化も見られる.
15
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
177 またPerl6は漸進的型付け言語である.
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
178 従来のPerlの様に変数に代入する対象の型や文脈に応じて型を変更する動的型言語としての側面を持ちつつ独自に定義した型を始めとする様々な型に静的に変数の型を設定する事が可能である.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
179
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
180 \subsection{現在のPerl6}
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
181 Perl6の言語仕様\cite{perl6design}とその時点での実装状況を纏めた公式ドキュメント\cite{perl6doc}は分離している.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
182 従来は言語仕様は自然言語の仕様書であったが,現在はテストスイートである「Roast\cite{roast}」そのものと定義されている.
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
183 現在のPerl6の仕様はRoastを確認し,現在rakudo上に実装されている機能を見る場合は公式ドキュメントを確認する.
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
184
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
185
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
186 \section{CbCによるMoarVM}
13
80944267f9c7 tweak tex and mv footnote sites
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
187 この章では改良を行ったPerl6処理系であるMoarVMについて述べる.
15
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
188 \subsection{方針}
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
189 MoarVMそのものをCbCで書き換えることも考えられるがMoarVM自体既に巨大なプロジェクトである為すべてを書き換える事は困難である.
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
190 その為まず比較的CbCで書き換えることが容易な箇所を修正する.
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
191 前章までに述べた通りCbCのCodeSegmentはコンパイラの基本ブロックに該当する.
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
192 従ってMoarVMにおける基本ブロックの箇所をCodeSegmentに書き換える事が可能である.
8580ad6c50dd tweak .tex and bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
193 MoarVMにおける基本ブロックはインタプリタが実行するバイトコードごとの処理に該当する.
10
9c172999d70e tweak Papers for CbC abstract
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
194 \subsection{CbCコンパイラによるバグ}
6
6dcf1143dc8f add about NQP
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
195
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
196 \section{CbCを用いる事についての評価}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
197 Perl6処理系はまずPerl6の豊富な文法に対応する物を作成せねばならず,類似する他のプログラミング言語処理系と比較してもより複雑となっている.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
198 実際にPerl5を始めとしたスクリプト言語とPerl6がどのような処理時間の違いが見られるかを実測する.
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
201 % \subsection{単純なループ処理の測定}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
202 % 簡単な例題としてfor文を用いて100000回ループさせ,ある変数をインクリメントするというプログラムを作成する.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
203 % 今回の評価対象としてPerl6は2018年4月にリリースされたMoarVM,NQP,Rakudoの実装を用いる.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
204 % Perl5は5.26.2を利用した.
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
205 %
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
206 % \begin{table}[htb]
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
207 % \begin{tabular}{|c|c|c|} \hline
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
208 % ループ回数 & Perl5 (sec) & Perl6(sec) \\ \hline \hline
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
209 % 1000000 & 0.131 & 1.444 \\ \hline
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
210 % 10000000 & 0.131 & 1.444 \\ \hline
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
211 % 100000000 & 3.258 & 124.69 \\ \hline
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
212 % \end{tabular}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
213 % \end{table}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
215
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
216 \section{今後の課題}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
217
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 \section{まとめ}
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
9
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
221 %å\subsection{MoarVMの処理流れ}
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
222 %MoarVMはC言語で実装されており,Perl5で記述されたConfigure.plを
8e80522a88bd tweek mindmap and wrote table of contents for Paper
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
223
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
224
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 % BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
226 \nocite{*}
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
227 \bibliographystyle{ipsjsort}
ea10413281c5 tweak Makefile and create reference.bib
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
228 \bibliography{reference}
2
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
229
a758898008e6 add tex and Makefile
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 \end{document}