More Related Content
PDF
PDF
第三回ありえる社内勉強会 「いわががのLombok」 PDF
レビューで保守性のためにした コメントをふりかえってみた PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる PDF
JavaのテストGroovyでいいのではないかという話 PPT
第4回勉強会 Groovyの文法からSpockまで PDF
Java開発の強力な相棒として今すぐ使えるGroovy PDF
What's hot
PDF
ClassLoader Leak Patterns PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java PDF
Groovy Bootcamp 2015 by JGGUG PDF
PDF
PDF
Groovy Shell Scripting 2015 PDF
PDF
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」 PPT
PDF
PDF
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで PDF
PDF
PDF
OpenJDK トラブルシューティング #javacasual PPT
ODP
PDF
Introduce Groovy 2.3 trait PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版 Viewers also liked
PDF
Summary of "Hacking", 0x351-0x354 PDF
PDF
Kink: invokedynamic on a prototype-based language PDF
Matrix Multiplication in Strassen Algorithm PDF
PDF
PDF
PDF
金勘定のためのBigDecimalそしてMoney and Currency API PDF
Quasar: Actor Model and Light Weight Threads on Java PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6 PDF
PDF
PDF
PDF
PDF
Java SE 9の紹介: モジュール・システムを中心に Similar to Kink: プロトタイプベースの俺々 JVM 言語
PPTX
PDF
PPTX
ODP
PDF
The History of Groovy #GroovyBase PDF
OSC2012 Tokyo Spring, USP lab. presentation PDF
More from Taku Miyakawa
PDF
PDF
PDF
Processing LTSV by Apache Pig PDF
PDF
PDF
Kink: developing a programming language on the JVM Kink: プロトタイプベースの俺々 JVM 言語
- 1.
- 2.
1
要旨
• Kink というJVM 言語を作ってます
• クラスのないオブジェクト指向言語です
(Lua や JavaScript みたいに)
• 寝ながら安易にコードが書けることを目指し
ています
- 3.
2
No クラス but値
• クラスはなくて値だけがある
• データやメソッドは値のスロットに直接突っ込む
&DOG = value DOG
DOG.&bark = { 'ワン!' }
&bark { 'ワン!' }
DOG.&howl = { 'ワオー' }
&howl { 'ワオー' }
printline(DOG.bark) # ワン!
- 4.
3
親のスロットを継承
• 自分自身がスロットを持っていなければ親か
ら取ってくる
DOG (親)
&PUPPY = DOG.child &bark { 'ワン!' }
PUPPY.&bark = { 'キャン!' } &howl { 'ワオー' }
printline(PUPPY.bark) # キャン!
printline(PUPPY.howl) # ワオー PUPPY (子)
&bark { 'キャン!' }
- 5.
4
Java 呼び出し
• Javaのメソッドも呼び出せる
• オブジェクトシステムが全然違うので、
methodmissing からリフレクションで富豪的に
useclass('java.util.ArrayList')
&AL = ArrayList.new
AL.add('Flip!')
AL.add('Flap!')
AL.list.loop($printline) # Flip! Flap!
- 6.
5
Kink の特徴
• ミニマリズム!
– クラスの無いオブジェクトシステム
– 分岐もパターンマッチも代入もメソッド呼び出し
• Lisp 好き!
– セミコロンとカンマの無い文法
– 末尾再帰がスタックオーバーフローしない
• Java のメソッドが叩けるよ!
• なにかと富豪的。性能は……
- 7.
6
性能は?
• tarai(13 60) (竹内関数) でベンチマーク
#!/usr/bin/env kink -J-server
&tarai = { (&X &Y &Z)
(X <= Y).then {
Y
}{
tarai(tarai(X - 1 Y Z) tarai(Y - 1 Z X) tarai(Z - 1 X Y))
}
}
[&X &Y &Z] = _argv.map { ¥0.int }
printline(tarai(X Y Z))
- 8.
7
計測結果 (dash の8倍速い!)
dash 0.5.5.1
GNU bc 1.06.95
Kink 2012-03-31
dash = /bin/sh
C Ruby 1.8.7
GNU awk 3.1.7
0 100 200 300 400 500 600 700 800
- 9.
- 10.