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