今更ながら(?)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) }