トップQs
タイムライン
チャット
視点
Ceylon
ウィキペディアから
Remove ads
Ceylon(セイロン)は、レッドハット社によって開発されたプログラミング言語およびソフトウェア開発キットである。この言語はJava言語をもとに作られ、Java仮想マシンで動作する。またJavascriptにコンパイルすることができる[2][3]。
この言語とソフトウェア開発キットのプロジェクトは、Java言語とJava SEソフトウェア開発キットで見られた成功と失敗を踏まえた上で、もし今それらが設計されたとしたら、商用コンピューティング向けの言語と開発キットがどんなものになっていたかを示すものであると言える[要出典]。また、レッドハット自身は否定しているものの、業界のアナリストからは同プロジェクトはJavaを抹殺するためのものだと言われている[4][5]。
Remove ads
言語の特徴
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
を使えば、そのクラス自身を指定することもできる。
抽象クラスとは、実装の雛形としてのみ使うことができるクラスである。抽象クラスのインスタンスを作成することはできない。抽象クラスだけが抽象メソッドを持つことが許されている。抽象メソッドには、どんな実装コードをも与えることは出来ないため、そのメソッドは抽象クラスでないサブクラスによって上書きされなければならない。
Remove ads
リリース
出典
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads