Mercurial > hg > Events > OSC2019
diff slide.md @ 1:b135f074e78c
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Apr 2019 17:59:44 +0900 |
parents | 19155754a586 |
children | 41f44d102cf9 |
line wrap: on
line diff
--- a/slide.md Sat Apr 06 17:28:17 2019 +0900 +++ b/slide.md Mon Apr 15 17:59:44 2019 +0900 @@ -5,6 +5,51 @@ ## このセッションの内容 -- 現在の主要なCコンパイラであるGCCとLLVM/Clangが実際にどのような処理をするかを追っていきます -- コンパイラのトレースにはLLVMをバックエンドとして利用しているlldbを用います +- Perl6の主要な実装であるRakudoの内部構造を探ります +- Rakudoの内部で利用されているVMや, Perl6のサブセットなどについて探索します + +!SLIDE +## Perl6とは +- 当初Perl5の時期バージョンとして開発されていたプログラミング言語 +- 仕様と実装が分離しており, 現在はテストが仕様となっている +- 実装は複数存在しているが,現在主流な実装はRakudoとなっている +- 言語的にはスクリプト言語であり, 漸進的型付き言語となっている + + +!SLIDE +## Perl6のソースコード概要 + +- Perl5の文法とは比較的変更が多い +- 変数がオブジェクトと化した事により, 変数からsayメソッドを呼ぶことが可能 + +``` +my $str_value = 'hello world!'; +$str_value.say; # hello world! +``` + +- Perl5と同様に,変数にはデフォルトでは型がないような振る舞いをする +``` +my $sample_value = 'hello world!'; +$sample_value.say; # hello world! + +$sample_value = '31'; +$sample_value.say; # 31 + +say($sample_value * 3); +``` + +!SLIDE +## Perl6の言語的な特徴 + +- 漸進的型付き言語である為, 型を強制することも可能となる + +``` +my Int $int_value = 31; +$int_value = "hello"; # Compile error! +``` + +!SLIDE +## Perl6の処理系の構成 + +- Perl6の処理系は現在はRakudoと呼ばれる