KotlinのFAQだけ翻訳してみた。
JetBrainsのJVM言語「Kotlin」のドキュメントのFAQだけ翻訳してみました。
http://confluence.jetbrains.net/display/Kotlin/FAQ
多少意訳してたり、勝手に段落分けをしている所もあり原文ままとは言えませんが、
訳が漏れている箇所や誤訳などについて、ぜひコメントをお寄せください。
Kotlinとは何か?
「プロジェクトKotlin」は、JetBrainsが開発した、JVM上で動作する静的型付け言語のコードネームです。
業務用途に利用することを想定して開発しました。
なぜ新しい言語が必要なのか?
JetBrainsではJavaプラットフォームでの開発を長らく続けており、その良さを理解してきました。
その一方で、Java言語にはいくつかの制限や問題がありながらも
互換性の問題で、修正が不可能あるいは困難であることも、分かってきました。
Javaが今後も継続するのは確かでしょうが、
レガシーな問題のない、開発者から熱望されているような機能を搭載した
新しい静的型付けJVM言語は、コミュニティにとって有益なものになると考えています。
本プロジェクトの主なデザインゴールは、以下の通りです。
・Java互換の言語を作ること
・Javaより安全にすること。たとえば静的なnullチェック機能など
・Javaより簡潔であること。型推論、高階層関数(クロージャ)、拡張関数、mixinとfirst-class delegationのサポートなど
・それでいて、実用的な表現。最も成熟した競合であるScalaと比較して、よりシンプルであること。
他の新しい言語ではいけない理由は?
端的に言えば、以下の通りです。
・Scalaは複雑すぎて、サポートツールの開発が困難
・Groovyは動的です。そのため、エラーを生みやすく、コードベースが大きくなりやすい。さらに、遅い。
・Gosuは静的型付けですが、全てのgenericsをcovariantとして扱ってしまい、
Javaが配列の扱いで犯した過ちを繰り返してしまっています。
さらに言えば、Gosuは本質的にはスクリプト言語です。
・CeylonはJavaと非互換です。なぜならオーバーロードをサポートしていないからです。
いつリリースされるのか?
2011年末にパブリックベータ版の公開を予定しています。
これはオープンソースプロジェクトか? ライセンスは何か?
パブリックベータ版を公開してすぐに、コンパイラとIntelliJ IDEAプラグインを
Apache2ライセンスにてオープンソース公開します。
Java互換なのか?
はい。コンパイラーはJavaバイトコードを出力します。
KotlinからJavaを呼び出す事も、JavaからKotlinを呼び出すこともできます。
「Javaとの相互運用性」を参照してください(訳注:順次翻訳します)
Java以外のプラットフォームへの展開は?
現在はJavaプラットフォームのみをターゲットにしていますが、
他のプラットフォームも視野に入れています。
JavaScriptは最も魅力的な次のターゲットです。
これは関数型言語ですか? オブジェクト指向言語ですか?
これはオブジェクト指向言語です。
高階層関数と関数リテラルをサポートしますが、関数型言語だというわけではありません。
オブジェクト指向の開発者をターゲットとしています。
Genericsについては?
KotlinはGenericsをサポートしています。
reifiedで、declaration-site varianceとusage-site varianceをサポートしていますが、
ワイルドカードタイプはサポートしていません。(訳注:誰かここの翻訳を助けて!!)
なぜ型を右側に書くのか?
その方がコードが読みやすくなると考えているためです。
さらに、いくつかのシンタックスが使えるようになり、
たとえば、型アノテーションを簡単に除外できます。
Scalaを見れば、この表記が問題にならないことはよく分かるでしょう。
この言語は拡張可能か?
いくつかの方法で拡張できるように考えています。
アノテーションへのインライン関数や、型ローダーや、language-quotationsなど。
以下、ユーザからの質問より抜粋
終わりに。
英文をそのまま掲載している所は、
私の理解が追いつかなかったり、対応する日本語訳を知らないところです。
ぜひ、教えてください! m(_ _)m