Ceylon
From Wikipedia, the free encyclopedia
Ceylon(セイロン)は、レッドハット社によって開発されたプログラミング言語およびソフトウェア開発キットである。この言語はJava言語をもとに作られ、Java仮想マシンで動作する。またJavascriptにコンパイルすることができる[2][3]。
| パラダイム |
オブジェクト指向プログラミング、関数型プログラミング、命令型プログラミング、マルチパラダイムプログラミング |
|---|---|
| 登場時期 | |
| 開発者 |
レッドハット、Gavin King |
| 最新リリース | 1.2.0、1.3.3 / 2015年10月29日[1] |
| 影響を受けた言語 |
Scala、Smalltalk、ML、LISP、Java |
| プラットフォーム |
クロスプラットフォーム |
| ライセンス |
Apache-2.0 |
| ウェブサイト | |
| 拡張子 |
ceylon |
この言語とソフトウェア開発キットのプロジェクトは、Java言語とJava SEソフトウェア開発キットで見られた成功と失敗を踏まえた上で、もし今それらが設計されたとしたら、商用コンピューティング向けの言語と開発キットがどんなものになっていたかを示すものであると言える[要出典]。また、レッドハット自身は否定しているものの、業界のアナリストからは同プロジェクトはJavaを抹殺するためのものだと言われている[4][5]。
言語の特徴
Ceylon言語はJava言語の構文のほとんど全てを受け継いでいる。下記は Hello World プログラムのCeylon言語版である[6]。
void hello() {
writeLine("Hello World!");
}
演算子の多重定義
Ceylon言語では、プログラミング言語で一般的に混乱の原因とみなされている演算子の多重定義の仕組みを提供していない。その代わりCeylon言語には、組み込み型のメソッドの省略形であるような演算子については多相性を利用できる仕組みがある。これは演算子の多重定義よりも安全で簡素な仕組みである。
インターフェース
インターフェースは、構成要素の定義のみがあって実装が含まれていないデータ構造である。異なる実装をもつ異なるデータ型に含まれる構成要素を定義するのに便利である。全てのインターフェースは暗黙に抽象データ型になっている。
インターフェースは予約語 satisfies を使ってクラスとして実装する。satisfies の後ろに、複数のインターフェースをカンマで区切って書けば、複数のインターフェースを一つのクラスで実装することができる。Ceylon言語のインターフェースでは、要素の定義だけでなく、一定の制限を満たすものであれば実装コードも記述することができる。インターフェースにはデータを初期化するコードを含めることはできないが、ミクスインであれば複数含めることができる。
shared interface Comparable<in T> {
shared formal Comparison compare(T other);
shared Boolean largerThan(T other) {
return compare(other)==larger;
}
shared Boolean smallerThan(T other) {
return compare(other)==smaller;
}
...
}
継承
Ceylon言語のクラスは、Java言語のそれと同様、最大でひとつのクラスから実装を継承することができる。継承は予約語 extends を使って宣言する。予約語 this を使えば、そのクラス自身を指定することもできる。
抽象クラスとは、実装の雛形としてのみ使うことができるクラスである。抽象クラスのインスタンスを作成することはできない。抽象クラスだけが抽象メソッドを持つことが許されている。抽象メソッドには、どんな実装コードをも与えることは出来ないため、そのメソッドは抽象クラスでないサブクラスによって上書きされなければならない。