Mercurial > hg > Papers > 2019 > anatofuz-prosym
comparison Slide/slide.md @ 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 |
---|---|
5 code-engine: coderay | 5 code-engine: coderay |
6 | 6 |
7 | 7 |
8 ## 研究目的 | 8 ## 研究目的 |
9 - スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている. | 9 - スクリプト言語であるPerl5の後継言語としてPerl6が現在開発されている. |
10 - Perl6は設計と実装が区分されており様々な処理系が開発されている.現在主流なPerl6はRakudoと言われるプロジェクトである. | 10 - 現在主流なPerl6はRakudoと言われるプロジェクトである. |
11 - RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し, NQPをVMが解釈するという処理の流れになっている. | 11 - RakudoではPerl6自体をNQP(NotQuitPerl)と言われるPerl6のサブセットで記述し, NQPをVMが解釈するという処理の流れになっている. |
12 - このVMは任意のVMが選択できるようになっており, 現在はMoarVM, JavaVM, JavaScriptが動作環境として選択可能である. | 12 - 主に利用されているVMに, Cで書かれたMoarVMが存在する. |
13 - 主に利用されているVMにCで書かれたMoarVMが存在する. | 13 - MoarVMは全体的な起動時間及び処理速度が, Perl5と比較し非常に低速である. |
14 - MoarVMはJITコンパイルなどをサポートしているが, 全体的な起動時間及び処理速度がPerl5と比較し非常に低速である. | |
15 - この問題を解決するためにContinuation based C (CbC)という言語を一部用いてMoarVMの書き換えを行う. | 14 - この問題を解決するためにContinuation based C (CbC)という言語を一部用いてMoarVMの書き換えを行う. |
16 - CbCを用いたMoarVMの書き換えを検討し,並列デバッグ方法などについて検討する. | 15 - CbCを用いたMoarVMの書き換えを検討し,並列デバッグ方法などについて検討する. |
17 | |
18 | 16 |
19 ## Continuation Based C (CbC) | 17 ## Continuation Based C (CbC) |
20 | 18 |
21 - Continuation Based C (CbC) はCodeGearとDataGearを単位として用いたプログラミング言語である. | 19 - Continuation Based C (CbC) はCodeGearとDataGearを単位として用いたプログラミング言語である. |
22 - CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する. | 20 - CodeGearはCの通常の関数呼び出しとは異なり,スタックに値を積まず, 次のCodeGearにgoto文によって遷移する. |
46 } | 44 } |
47 ``` | 45 ``` |
48 | 46 |
49 ## CbCの現在の実装 | 47 ## CbCの現在の実装 |
50 | 48 |
51 - CbCは現在2種類の実装がある. | 49 - CbCは現在3種類の実装がある. |
52 - gcc (version 9.0.0) | 50 - gcc (version 9.0.0) |
53 - llvm/clang (version 7.0.0) | 51 - llvm/clang (version 7.0.0) |
52 - micro-c | |
54 | 53 |
55 ## 言語処理系の応用 | 54 ## 言語処理系の応用 |
56 - CbCではCodeGearを処理単位として利用でき, これはコンパイラの基本ブロックに相当する. | 55 - CbCではCodeGearを処理単位として利用でき, これはコンパイラの基本ブロックに相当する. |
57 - 従来のスクリプト言語などの処理系では, 主にcase文で実装していた命令コードディスパッチの箇所をCodeGearの遷移として記述する事が可能である. | 56 - 従来のスクリプト言語などの処理系では, 主にcase文で実装していた命令コードディスパッチの箇所をCodeGearの遷移として記述する事が可能である. |
58 - CodeGearの遷移として記述する事で, 命令処理ごとに分割する事が可能となり, モジュール化が可能となる. | 57 - CodeGearの遷移として記述する事で, 命令処理ごとに分割する事が可能となり, モジュール化が可能となる. |
60 - これらの検証とPerl6の高速化を行う為に, CbCを用いてPerl6処理系の書き換えを行っていく. | 59 - これらの検証とPerl6の高速化を行う為に, CbCを用いてPerl6処理系の書き換えを行っていく. |
61 | 60 |
62 ## Perl6の概要 | 61 ## Perl6の概要 |
63 | 62 |
64 - Perl6とはPerl5の後継言語として当初開発が開始された言語である. | 63 - Perl6とはPerl5の後継言語として当初開発が開始された言語である. |
65 - 仕様と実装が分離しており, 仕様は公式テストスイートであるRoastそのものとなっている. | 64 - 仕様と実装が分離しており, 仕様は公式テストスーツであるRoastそのものとなっている. |
66 - 歴史的にHaskellで実装されたPugs, Pythonとの共同基盤を目指したParrotなどの実装が存在する. | 65 - 歴史的にHaskellで実装されたPugs, Pythonとの共同基盤を目指したParrotなどの実装が存在する. |
67 - 言語仕様としては漸進的型付け言語であり, 従来のPerl5とは互換性が無い. | 66 - 言語仕様としては漸進的型付け言語であり, 従来のPerl5とは互換性が無い. |
68 - 現在の主要な実装はRakudoと呼ばれる実装である. | 67 - 現在の主要な実装はRakudoと呼ばれる実装である. |
69 | 68 |
70 ## Rakudo | 69 ## Rakudo |