Соответствующая новость и обсуждение на OpenNet.
Сегодня утром краем глаза глянул на сайт ceylon-lang.org. Полного впечатления о языке, конечно же, не получил. Но какие-то моменты в глаза бросились.
Из очень хороших вещей в языке встретились nullable-типы, а так же (долгожданный мной) аналог typedef из C/C++.
Так же заметно, что элементы из функциональных языков (вроде паттерн-матчинга) мигрируют в сторону мейнстрима. Но в более примитивной, а значит и более приспособленной к массовому применению ;), форме. В Ceylon это проявляется, например, в возможности указывать объединение типов. Что-то вроде:
//union type void printName(String|Named name) { switch (name) case (is String) { println(name); } case (is Named) { println(name.first + " " + name.last); } }
Здесь тип аргумента name – это или String, или Named. Чтобы работать с таким аргументом нужно использовать приведенный выше вариант оператора switch. Аналогичная штука может использоваться и для выстраивания объектных иерархий:
abstract class Node() of Leaf | Branch {} Node node = ...; switch (node) case (is Leaf) { ... } case (is Branch) { .... }
В целом же, читая Quick introduction и первые главы Tour of Ceylon складывается впечатление, что язык получился намного более простым и, вероятно, более приспособленным для “повседневных” задач мейнстрима, чем Scala. Несколько смущает количество дополнительных деклараций – shared, formal, actual, default и пр. для методов классов. Закрадывается подозрение, что авторы языка в чем-то перемудрили и напрасно отказываются от уже привычной терминологии (тех же public или override). Но, может быть, я ошибаюсь из-за незнания предмета.
Так что, на первый взгляд, у RedHat действительно получился язык, который более удобен, чем Java, и более прост, чем Scala. Но вот нужен ли он для JVM – отдельный большой вопрос. Впрочем, меня он пока не волнует, т.к. я все еще C++ программист ;)
язык вышел давно, недавно они только сайт открыли
ОтветитьУдалить