# HG changeset patch # User Takahiro SHIMIZU # Date 1555318784 -32400 # Node ID b135f074e78c1b18d5748fc090069ac5a61ed0f3 # Parent 19155754a58637e835391aa46e1c1fc9e58c18dc update diff -r 19155754a586 -r b135f074e78c slide.html --- a/slide.html Sat Apr 06 17:28:17 2019 +0900 +++ b/slide.html Mon Apr 15 17:59:44 2019 +0900 @@ -1,16 +1,11 @@ - - - - - Perl6の内部表現 - - + + @@ -42,6 +37,7 @@ prettyPrint(); } ); + @@ -49,7 +45,7 @@ - + @@ -70,15 +66,15 @@
-

Perl6の内部表現

+

Perl6の内部表現

- Takahiro Shimizu - + Takahiro Shimizu +
@@ -86,19 +82,74 @@ +
+ +

このセッションの内容

+ + -
- - -

このセッションの内容

+
+
+ + +

Perl6とは

+
    +
  • 当初Perl5の時期バージョンとして開発されていたプログラミング言語
  • +
  • 仕様と実装が分離しており, 現在はテストが仕様となっている
  • +
  • 実装は複数存在しているが,現在主流な実装はRakudoとなっている
  • +
  • 言語的にはスクリプト言語であり, 漸進的型付き言語となっている
  • +
+ +
+
+ + +

Perl6のソースコード概要

    -
  • 現在の主要なCコンパイラであるGCCとLLVM/Clangが実際にどのような処理をするかを追っていきます
  • -
  • コンパイラのトレースにはLLVMをバックエンドとして利用しているlldbを用います
  • +
  • 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);
+
+ +
+
+ + +

Perl6の言語的な特徴

+ +
    +
  • 漸進的型付き言語である為, 型を強制することも可能となる
  • +
+ +
my Int $int_value  = 31;
+$int_value = "hello"; # Compile error!
+
+
diff -r 19155754a586 -r b135f074e78c slide.md --- 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と呼ばれる diff -r 19155754a586 -r b135f074e78c slide.pdf.html --- a/slide.pdf.html Sat Apr 06 17:28:17 2019 +0900 +++ b/slide.pdf.html Mon Apr 15 17:59:44 2019 +0900 @@ -1,16 +1,11 @@ - - - - - Perl6の内部表現 - - + + @@ -55,15 +50,15 @@
-

Perl6の内部表現

+

Perl6の内部表現

- Takahiro Shimizu - + Takahiro Shimizu +
@@ -71,18 +66,74 @@
+
+ -

このセッションの内容

+ generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] + on 2019-04-15 17:44:28 +0900 with Markdown engine kramdown (1.16.2) + using options {} + --> +

このセッションの内容

+ + + +
+
+ + +

Perl6とは

+ + +
+
+ + +

Perl6のソースコード概要

+ +
my $str_value = 'hello world!';
+$str_value.say; # hello world!
+
+ + +
my $sample_value = 'hello world!';
+$sample_value.say; # hello world!
 
+$sample_value = '31';
+$sample_value.say; # 31
+
+say($sample_value * 3);
+
+ +
+
+ + +

Perl6の言語的な特徴

+ + + +
my Int $int_value  = 31;
+$int_value = "hello"; # Compile error!
+
+