LINUX.ORG.RU

Вышла версия M3 языка Ceylon и Ceylon IDE

 ,


0

5

Ceylon — новый язык программирования от Red Hat для JVM, главным разработчиком которого является Gavin King, создатель ORM Hibernate. Целью проекта является создание современного Java-подобного языка со статической типизацией, свободного от болезней роста и исторических недоразумений самого Java.

Компилятор M3 реализует почти всю спецификацию языка Ceylon. Новые возможности этой версии по сравнению с M2 включают:

  • поддержку как JVM, так и компиляции в JavaScript;
  • интерфейсы с неабстрактными членами (mixins);
  • comprehensions (фильтрация и трансформация коллекций);
  • анонимные функции;
  • каррирование функций;
  • декларация функций и объектов прямо в вызове функции при задании аргументов по имени;
  • вложенные интерфейсы;
  • операции над множествами;
  • обращение к внешнему типу из внутреннего (ключевое слово outer).

Следующие функции не вошли в M3, но планируются в окончательной версии:

  • переопределение классов-членов класса и семьи типов;
  • псевдонимы типов;
  • reified generics (сохранение информации о типах дженериков на этапе выполнения, как в .NET);
  • определённые пользователем аннотации;
  • перехватчики методов (method interceptors);
  • типобезопасная метамодель;
  • сериализация.

Одновременно с новым компилятором вышел Ceylon IDE M3 — плагин для Eclipse 3.7 Indigo или 4.2 Juno. Новая версия IDE требует Java 7. По сравнению с версией M1 в ней реализованы взаимодействие Ceylon с Java и поддержка репозитория модулей Ceylon Herd.

>>> Подробности

Что-то мне в нём нравится, не могу понять что... Нужно попробовать

Nensha ()

Все никак руки не доходят попробовать, ебилды есть?

encyrtid ★★★★★ ()
Ответ на: комментарий от encyrtid

Ебилдов нет, да и зачем они? Качаем Eclipse, ставим плагин.

Язык красивый в плане идей, но без нормальной стандартной библиотеки (которая ещё в процессе написания) пока почти бесполезный. Так, proof of concept. Можно использовать Java-библиотеки, включая стандартный JDK, но синтаксис корявый - например, принципиальное отсутствие static обходится костылями.

reserved ()
Ответ на: комментарий от reserved

Ебилдов нет, да и зачем они? Качаем Eclipse, ставим плагин.

А сам компилятор? Не нравится мне такой подход, надо будет запилить ебилд.

encyrtid ★★★★★ ()

жэсточайшэ интересно насколько хороша реализация в джс

punya ★★ ()

а чем это всё будет лучше scala, которая уже есть?

proofit404 ()

Интересно, каким образом планируется сделать reified generics - как в Scala @specialized для примитивов?

Bohtvaroh ★★★★ ()
Ответ на: комментарий от proofit404

Scala - функциональный и очень уж «другой» язык. Это не замена Java, а скорее его дополнение - для других задач.

Ceylon пытается стать именно заменой Java. То есть не менять принципиально парадигму, а быть «как Java, но лучше». Вобрать в себя best practices Java-сообщества.

Кроме того, Ceylon - язык «чистый», не подстраивающийся специально под JVM и его исторические заморочки. Некоторые из его возможностей даже неудобно реализовывать именно на JVM. Кроме того, для Ceylon пилят новый SDK на замену JDK, в котором хотят сделать более чистые и «правильные» API - опять-таки свободные от исторических наслоений.

reserved ()

У Гейвина во первых Кинга а не Канга - жесточайший NIH синдром.

r ★★★★★ ()

Gavin Kang, создатель ORM Hibernate

Когда это Gavin успел фамилию сменить? Вроде, ещё недавно был King. :-)

Странно, что уже 19 комментов, а ещё никто не докопался.

alt-x ★★★★★ ()
Ответ на: комментарий от alt-x

Когда это Gavin успел фамилию сменить? Вроде, ещё недавно был King. :-)

Опечатка. Попрошу модераторов поправить.

reserved ()

По списку возможностей это какой-то клоун скалы.

malbolge ★★ ()

новый язык программирования

каррирование функций;

Ну как же без этого :)

AlexVR ★★★★★ ()
Ответ на: комментарий от AlexVR

Тут главное слову каррирование придумать свое значение и все пойдет.

r ★★★★★ ()
Ответ на: комментарий от r

Тут главное слову каррирование придумать свое значение и все пойдет.

А что они называют каррированием?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Несколько наборов параметров. f(x)(y)(z). Прочитал древний тур по скале наверное:)

r ★★★★★ ()
Ответ на: комментарий от r

В общем смысле это и есть карринг; другое дело, что он explicit - нужно каждый параметр в отдельный лист параметров выносить и явно использовать underscore, чтобы получить каррированную функцию. Не Haskell конечно, но на безрыбье... :)

Bohtvaroh ★★★★ ()
Ответ на: комментарий от reserved

Язык красивый в плане идей, но без нормальной стандартной библиотеки (которая ещё в процессе написания) пока почти бесполезный.

Общался с разрабами на конференции. Основная киллер-фича ceylon - удобный язык поверх стандартной библиотеки java. Свою базовую библиотеку они писать не собираются - только если дополнять JavaSE.

VoDA ★★ ()
Ответ на: комментарий от proofit404

а чем это всё будет лучше scala, которая уже есть?

синтаксис, который позволяет написать адекватную IDE с возможностями рефакторинга и грамотного(!) автокомплита.

VoDA ★★ ()
Ответ на: комментарий от VoDA

Язык красивый в плане идей, но без нормальной стандартной библиотеки (которая ещё в процессе написания) пока почти бесполезный.

Общался с разрабами на конференции. Основная киллер-фича ceylon - удобный язык поверх стандартной библиотеки java. Свою базовую библиотеку они писать не собираются - только если дополнять JavaSE.

Отставить - перепутал Цейлон и Котлин. КОтлин работает поверх базовой либы от джавы. А вот Цейлон пилит свою.

VoDA ★★ ()
Ответ на: комментарий от Bohtvaroh

В общем смысле это и есть карринг;

Карринг это «процесс преобразования». Если Гейвин называет каррингом «процесс преобразования» человеком - так может писать что у него там в языке поддерживается вебсервер например - кто-то ж руками напишет:)

В скале где он черпает идеи недочитывая туториалы карринг настоящий:


scala> val f = (x:Int,y:Int) => x + y;
f: (Int, Int) => Int = <function2>
scala> f.curried
res0: Int => (Int => Int) = <function1>
scala> Function.uncurried(res0);
res1: (Int, Int) => Int = <function2>

r ★★★★★ ()
Ответ на: комментарий от VoDA

Cинтаксис разве не для человека в первую очередь должен быть удобным?
А проблемы функциональности IDE - проблемы её разработчиков. У некоторых языков статический парсинг вообще неразрешим, нормальные средства разработки всёравно есть.
Удел роботов вобщем.

proofit404 ()
Ответ на: комментарий от VoDA

Вот с этого момента поподробнее.

Kotlin уже production-ready? Если нет, то когда будет? Ceylon пока что не более чем игрушка, серьёзного на нём ничего не напишешь.

reserved ()
Ответ на: комментарий от proofit404

Cинтаксис разве не для человека в первую очередь должен быть удобным?

Удобство для человека - понятие субъективное. Кому то нравится одно, кому то другое.

Для меня удобный синтаксис это когда код легко читается в том числе начинающими и наличие ошибки показывается ДО компиляции. Scala для меня не удобна поскольку никто кроме компилятора не может адекватно воспринять валидный синтаксис (среды ругаются ошибками на корректный код).

У некоторых языков статический парсинг вообще неразрешим, нормальные средства разработки всёравно есть.

На мой вкус «нормальная среда разработки» - та, что может провалидировать код БЕЗ запуска. Тут почти идеальна ИДЕЯ. За ней идут другие Джава-ИДЕ. Следом идет VS+ReSharper.

Как можно сделать «нормальную среду разработки» для какого нибудь JS чтобы с проверкой на соответствие типов и адекватным рефакторингом - для меня загадка. Я пробовал, но ни одной «нормальной» не нашел. Самая сильная была опять же ИДЕЯ, но и она периодически не могла отловить баги в коде. И приходилось отлаживать страницу в рантайме.

VoDA ★★ ()
Ответ на: комментарий от VoDA

Scala для меня не удобна поскольку никто кроме компилятора не может адекватно воспринять валидный синтаксис (среды ругаются ошибками на корректный код).

Одерски с сотоварищами за последние год-два нехило переструктурировали компилятор, чтобы его могли юзать IDE, и соответственно доделали плагин для eclipse - теперь там всё показывается сразу 1 в 1, как при компиляции. Другое дело, что eclipse - это o_O.

Bohtvaroh ★★★★ ()
Ответ на: комментарий от reserved

Вот с этого момента поподробнее.

Kotlin уже production-ready? Если нет, то когда будет? Ceylon пока что не более чем игрушка, серьёзного на нём ничего не напишешь.

Увы не продакшен. И даже не рекомендован к продакшену. Обещают сделать к концу года... но что это будет и насколько оно будет готово к бою - для меня вопрос.

Попробовал Котлин на тестовых проектах - очень приятный язык. Закрывает многие проблемы Java. Те же NotNullable типы данных (как в C#) помогают избавиться от NPE.

PS у нас NPE - самая частая ошибка.

VoDA ★★ ()
Ответ на: комментарий от VoDA

Scala для меня не удобна поскольку никто кроме компилятора не может адекватно воспринять валидный синтаксис

Ну вообще-то это проблема сред - да и вообще давненько в той же идее я не видел руганины на корректный код.

r ★★★★★ ()
Ответ на: комментарий от Bohtvaroh

Scala для меня не удобна поскольку никто кроме компилятора не может адекватно воспринять валидный синтаксис (среды ругаются ошибками на корректный код).

Одерски с сотоварищами за последние год-два нехило переструктурировали компилятор, чтобы его могли юзать IDE, и соответственно доделали плагин для eclipse - теперь там всё показывается сразу 1 в 1, как при компиляции. Другое дело, что eclipse - это o_O.

Попробуй Котлин. Он поддерживает большинство фич scala. Плюс встроенная модульная система (аналог jugsaw/maven), плюс компиляция в JavaScript код.

Нет и походу не будет implicit convertion. Возможность расширять базовые классы сделана через Extention functions.

PS Подработаю маркетоидом JetBrains - глядишь и возьмут на работу ;)

VoDA ★★ ()
Ответ на: комментарий от r

Ну вообще-то это проблема сред - да и вообще давненько в той же идее я не видел руганины на корректный код.

А насколько много ты имплиситов использовал? Сами JetBrain-овцы говорили, что имплисит довольно сложно отработать со стороны ИДЕ.

VoDA ★★ ()
Ответ на: комментарий от VoDA

Сами JetBrain-овцы говорили, что имплисит довольно сложно отработать со стороны ИДЕ.

IDE делает ровно ту же работу что и компилятор. Другое дело что компилятор скалы вещь непростая.

r ★★★★★ ()
Ответ на: комментарий от r

Сами JetBrain-овцы говорили, что имплисит довольно сложно отработать со стороны ИДЕ.

IDE делает ровно ту же работу что и компилятор. Другое дело что компилятор скалы вещь непростая.

Значит тебе и твой команде подходит скала. А я бы свои на скалу не посадил - даже программисты с 2-3 летним стажем не сразу въезжают. А вот Котлин и, возможно, Цейлон - вполне подходят для этой задачи.

VoDA ★★ ()
Ответ на: комментарий от VoDA

«нормальная среда разработки» - та, что может провалидировать код БЕЗ запуска

flymake же

Как можно для какого нибудь JS

наверное только итеративный подход к разработке

Для меня удобный синтаксис это когда код легко читается начинающими

предпочитаю выразительный однозначный с ясным математическим подтекстом

наличие ошибки показывается ДО компиляции

опять же имхо не вопрос семантики

proofit404 ()
Ответ на: комментарий от VoDA

Попробуй Котлин. Он поддерживает большинство фич scala. Плюс встроенная модульная система (аналог jugsaw/maven), плюс компиляция в JavaScript код.

Слышал о нём, гляну на досуге.

Bohtvaroh ★★★★ ()

Какова скорость выполнения? Тот же D2 весьма неплох в смысле идей, но скорость выполнения весьма удручает.

Vudod ★★★★★ ()

свободного от болезней роста и исторических недоразумений

это так жабокодеров тонко назвали?

DNA_Seq ★★☆☆☆ ()

Java - само по себе недоразумение, зачем делать ещё одно недоразумение поверх старого? :) Языков - море, бери и пиши! C#, D, Nemerle, на крайняк Perl. Но нет, NIH-вирус даже не требует воздушно-какательного пути - он просто возникает сам в мозгу бездельников.

matumba ★★★★★ ()
Ответ на: комментарий от Vudod

Вам нехватило скорости D?!?! Интересно, а что вы такое пишете?

matumba ★★★★★ ()

Хороший, язык, годный. Да еще от компании очень активно использующей Java, радует.

anonymous ()
Ответ на: комментарий от matumba

Вам нехватило скорости D?!?! Интересно, а что вы такое пишете?

Я пишу считалки. Написал сам для интереса метод наименьших квадратов через QR на D, работает втрое медленнее, чем LAPACK-овский в Фортране. Конечно, я понимаю, что в LAPACKе полно оптимизаций, но трёхкратное превосходство в скорости выполнения --- это слишком.

Vudod ★★★★★ ()
Ответ на: комментарий от matumba

Вам нехватило скорости D?!?! Интересно, а что вы такое пишете?

D?!?!

ненужен. Есть Go.

vladimir-vg ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.