Suche senden
Hochladen
Kink の宣伝
•
2 gefällt mir
•
2,669 views
T
Taku Miyakawa
Folgen
Kink というオレオレ JVM 言語の宣伝。 JJUG CCC 2013 Fall, JVM 言語 BOF での発表資料。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 25
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Empfohlen
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Weitere ähnliche Inhalte
Andere mochten auch
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Andere mochten auch
(8)
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Graph Algorithms Part 1
Graph Algorithms Part 1
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Mehr von Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
Mehr von Taku Miyakawa
(6)
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Java Quine Golf
Java Quine Golf
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Kürzlich hochgeladen
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Kürzlich hochgeladen
(9)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Kink の宣伝
1.
Kink の宣伝 宮川 拓 /
@miyakawa_taku 2013-11-09 JVM Language BOF / JJUG CCC Fall
2.
1 自己紹介 • 宮川 拓
/ @miyakawa_taku • Kink を作ってる人です
3.
2 Kink の概要 • クラスのないオブジェクト指向。プロトタイプ ベース –
型とかあるわけがない • 言語仕様におけるミニマリズム – なんでも関数呼び出し。代入も関数呼び出し • 末尾呼び出しの最適化 – 再帰でループが書ける • 簡潔、デンジャラス
4.
3 プロトタイプベース
5.
4 クラスなしで値を作る # bark 変数と
howl 変数を持つ値を作って # Dog 変数にぶっこむ :Dog = value( 'bark' { 'わん' } 'howl' { 'わおーん' } ) # bark, howl 関数を呼び出す print_line(Dog.bark) # => わん print_line(Dog.howl) # => わおーん
6.
5 「親」から変数を継承する # Dog の変種を作る :Puppy_dog
= Dog.child Puppy_dog.:bark = { 'きゃん' } # bark, howl 関数を呼び出す print_line(Puppy_dog.bark) # => きゃん print_line(Puppy_dog.howl) # => わおーん
7.
6 なんでも関数呼び出し
8.
7 代入も関数呼び出し :Line = 'example.org:8080' 変数への代入は 変数参照オブジェクトに対する関数呼び出し :Line.op_set('example.org:8080') つまり、「左辺値」を特別扱いしない
9.
8 多重代入も関数呼び出し [:Host_name :Port_number] =
Line / ':' 多重代入は「変数参照を要素に持つリスト」に対する 関数呼び出し [:Host_name :Port_number].op_set(Line / ':')
10.
9 末尾呼び出しの最適化 Demo
11.
10 Kink の素敵なところ 単純な仕掛けの組み合わせで高次の機能を 実現するところ
12.
11 例: トレイト # Kink
のトレイトは単に [名前 関数 名前 関数 ...] のリスト :Bark_twice_trait = [ 'bark_twice' { > :Self Self.bark + Self.bark } ] # リストを展開して set_vars 関数に渡す Dog.set_vars(*** Bark_twice_trait) # トレイトによって導入された bark_twice 関数を呼び出す print_line(Dog.bark_twice) # => わんわん
13.
12 例: トレイト • 専用の言語要素を導入することなく、できあい の仕掛けを用いてトレイトを実現している
14.
13 リンク • リポジトリ – https://bitbucket.org/kink/kink •
マニュアル – http://doc.kink-lang.org/kink/manual-ja/
15.
14 個別の議論
16.
15 Java との組み合わせ
17.
16 Java との組み合わせ ○ Kink
→ Java △ Java → Kink • Java のクラスファイルにコンパイルすることはできな い(多分できてもあまり嬉しくない) • 実行時に Java クラスを作ってインスタンス化するこ とはできる
18.
17 Kink → Java
(一部 Java → Kink) use('java.lang.Thread') use('java.util.concurrent.Executors') :Thread_pool = Executors.newSingleThreadExecutor # Runnable の動的プロキシを作って submit に渡す Thread_pool.submit { { true } .loop { print_line('Tick!') Thread.sleep(1000) } }
19.
18 Kink / Java
のオブジェクトグラフ Kink のオブジェクト 関数群 Java のオブジェクト ThreadPoolExecutor の共有プロトタイプ parent Thread_pool ThreadPoolExecutor の Java インスタンス backed-by • ひとつの Java クラスのインスタンスを後ろに持つ Kink の値は ひとつのプロトタイプを共有する • 共有プロトタイプが機能を提供する
20.
19 処理系の実装
21.
20 抽象構文木のインタプリタ プログラム 抽象構文木 :Puppy_dog = Dog.child Puppy_dog.:bark
= { 'きゃん' } 関数呼び出し print_line print_line(Puppy_dog.bark) print_line(Puppy_dog.howl) ローカル 環境 引数リスト 関数呼び出し bark … • プログラムを抽象構文木に変換して、これをグルグル回す • バイトコードへの変換はしない(今のところ)
22.
21 末尾呼び出し最適化の実装 Invoker foo 関数 bar 関数 呼び出し先 =
bar 呼び出し先 = foo • いったん処理系に戻して、スタックが深くならないようにする • JVM は末尾呼び出しをサポートしていないので、自前で実装 • MLVM#TailCalls に期待していいのか?
23.
22 Invokedynamic • まだ使っていない • 変数参照の高速化のために使うかも(たぶん 来年以降)
24.
23 デバッグ・解析機能 REPL (対話シェル) はあります!
25.
24 事例 これから!
Jetzt herunterladen