Soumettre la recherche
Mettre en ligne
Kink の宣伝
•
2 j'aime
•
2,669 vues
T
Taku Miyakawa
Suivre
Kink というオレオレ JVM 言語の宣伝。 JJUG CCC 2013 Fall, JVM 言語 BOF での発表資料。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 25
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
擬似乱数生成器の評価
擬似乱数生成器の評価
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
Recommandé
擬似乱数生成器の評価
擬似乱数生成器の評価
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
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Contenu connexe
En vedette
金勘定のための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
En vedette
(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の紹介: モジュール・システムを中心に
Plus de 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
Plus de 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
Dernier
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Dernier
(8)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
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 事例 これから!
Télécharger maintenant