Java
Scala
Ceylon

Java大好きな人が作ったCeylon言語ってどんなもの?

More than 5 years have passed since last update.


Ceylon言語

って聞いたことありますか?

2013/11/12にバージョン1.0.0がレッドハット社からリリースされました。

Ceylon公式ページ

Javaに非常に影響を受けて作られている言語で

ほぼJavaに近い感覚で書くことが出来ます。

JVM上で動く言語です。

その他にJavaScriptで出力し、

JavaScriptエンジン上(Node.js上など)で動かすことが出来ます。

読みはセイロンだと思われます。

(セイロンティーとかのセイロンだと思います。

 ジャワティー JAVA Teaインスパイアかなと想像)

Javaキラーとも呼ばれているようですがCeylon言語の開発者は

Javaが大好きなようで、そのJavaの問題を解決しつつも

最近流行のScalaの言語仕様の複雑さを出来るだけ押さえたいと言う方針のようです。

最近の関数型言語の中でJavaと相性のいいScalaが流行ってきていますが

個人的にJavaが大好きな自分として

記述方式やコードの感触がよりJavaに近いCeylonが流行ってくれたらなぁと感じたので

自分が勉強するついでに今回紹介して行こうと思ってます。


実は・・・

ちなみに1.0.0がリリースされるよりもっと前の2年くらい前に日本でも一瞬話題になったようで

日本語記事を検索すると出てくるのですが

少しずつ仕様が変わっている箇所があるようなので動かないコードだったりするときもあるので注意。


なんと!公式ページも・・・

現在は公式ページのリファレンスもコード記述が古いものがあり

最新の1.0.0では読み替えながら書かないと動かないところもあり!(2013/12/1 現在)

気をつけてー。


どんな特徴なのか?

・静的型付けである

・型推論がある

・デフォルトで変数のnull禁止

・ジェネリクスがある

・デフォルトで変数に再代入できない

・基本的にキャスト禁止(型チェックのスコープが厳密)

・Javaの影響を受けていて書式が非常に似ている

・高階関数のサポート

などなど、他にも色々ありますが、

気がついたら追加しようと思います。

次回以降でどんな風に記述してチェックされるか具体的に書こうと思います。

Ceylonの良いとこ説明コードその1

Javaでの型の厳しさを持ちつつ

Javaの記述方式を大きく変えずJavaエンジニアが移行しやすい印象。

それでいながら、Javaで問題となってきたnullの存在や副作用の問題。

型の厳密さを破壊しエラーとなるキャストなどに言語側で制限を設定することで

より見通しのよいコードになることが考えられている言語に感じます。


簡単な実行形式の例


hello.ceylon

void hellowWorld() { 

String[] names = [ "World", "Ceylon", "Project" ];
for (String name in names) {
print("Hello, ``name ``!");
}
}

Javaエンジニアの人であれば

少しコードを見ればスッと理解出来ると思います。

さらにJavaのクラスも利用することが出来ます。

(その場合、おそらくJavaScriptエンジン上で動作出来なくなります)

記事:CeylonでJavaのクラスを利用してみる

scalaからも影響を受けているようで

nullや再代入、副作用などについてチェックし表現する機能が言語に組み込まれています。

開発環境のIDEはEclipseを使うことが出来、Eclipseプラグインが提供されています。

次回 に、開発環境の設定を説明していこうかなと思います。