KotlinというJVM言語が面白そうだよ〜
今更ながら(?)Kotlin(コトリン)というプログラミング言語に興味を持ったので調べています。
参考サイト:Welcome - Kotlin - Confluence
Kotlinは去年の7月に発表された言語で
という特徴を持っています。
上記参考サイトによると、Kotlinのデザインゴールは
- Javaとの互換性をもった言語を作ること
- コンパイルの速さが少なくともJavaと同等
- Javaより安全に。よくある落とし穴(NULLポインタへの間接参照のような)の静的なチェック
- Javaより簡潔に。型推論、クロージャ、extension functionsなどのサポートにより実現
- 有用な表現力を維持しつつ、最も成熟した競合(Scala)よりもシンプルに
てな感じです。
今のところ、コンパイラはありません。
コンパイラはIntelliJ IDEA(JetBrains製のIDE)と並行して開発されているそうです。
上記参考サイトによると、去年の暮れに最初のバージョンを出す予定だったらしいですが、出ていません。
Kotlinプロジェクトのブログの1月4日の記事で大きな構文の変更が発表されたので、コンパイラ登場までもう少しかかりそうです。
Kotlinは名前もロゴもかわいいし、興味深い機能をたくさん持った言語なので、今後非常に注目される言語になるのではないでしょうかっ!!?
最後に、これだけではつまらないと思うのでコード例を。
まだまだKotlinについて知らないことだらけですが、FizzBuzz書きました(* ̄∇ ̄*)
fun main(args : Array<String>) {
for(i in 1..10) {
if(i.isFizz()) {
print("Fizz")
}
if(i.isBuzz()) {
println("Buzz")
} else if(i.isFizz()) {
println()
} else {
println(i)
}
}
}
fun Int.isFizz() : Boolean {
return this % 3 == 0
}
fun Int.isBuzz() : Boolean {
return this % 5 == 0
}修正(2012-01-14 0:14)
Kotlinの機能をできるだけ多く使ったバージョンです。
fun main(args : Array<String>) {
iterate(1..100) {
val strBuilder = StringBuilder()
if(it.isFizz()) {
strBuilder += "Fizz"
}
if(it.isBuzz()) {
strBuilder += "Buzz"
}
if(strBuilder.length() == 0) {
strBuilder += it.toString()
}
val str = strBuilder.toString()
System.out?.println(str)
}
}
//Higher-order function
fun iterate(range : IntRange, function : (n : Int) -> Unit) {
for(n in range) {
function(n)
}
}
//Single-expression functions
//Extension functions
fun Int.isFizz() = this % 3 == 0
fun Int.isBuzz() = this % 5 == 0
//Operator overloading
fun StringBuilder.plusAssign(obj : Any) {
this.append(obj)
}