После года разработки доступен (http://www.ceylon-lang.org/blog/2015/10/29/ceylon-1-2-0/) язык программирования Ceylon 1.2.0 (http://ceylon-lang.org/), развиваемый компанией Red Hat в качестве языка общего назначения, претендующего на роль замены Java. Для разработки приложений предоставляются Ceylon SDK (https://modules.ceylon-lang.org/categories/SDK), коллекция модулей (http://modules.ceylon-lang.org/) и интегрированная среда разработки Ceylon IDE (http://ceylon-lang.org/documentation/1.2/ide/features/), построенная на основе платформы Eclipse. Код связанных с языком компонентов распространяется (https://github.com/ceylon) под лицензией GPLv2, а код среды разработки под лицензией EPL. Бинарные пакеты можно загрузить (http://ceylon-lang.org/download/) в форматах deb и rpm.
Целью разработки Ceylon является желание избавить Java от устаревших концепций и подходов, которые мешают дальнейшей эволюции языка и достижению более высокого уровня эффективности. Кроме реализации лучших возможностей Java, в Ceylon также заимствованы некоторые дополнительные конструкции из языков Smalltalk, Python и ML. Написанные на языке Ceylon программы и модули могут выполняться в стандартной виртуальной машине Java (JVM) или компилироваться в JavaScript для выполнения в web-браузере или под управлением Node.js.
Поддерживается бесшовная интеграция с другими языками, базирующимися на JVM, например, модули на языке Ceylon можно использовать в программах на Java и наоборот.
Язык использует статическую типизацию и спроектирован с оглядкой на простоту изучения, лёгкость восприятия кода и разработку больших проектов, в которых участвует большое число программистов. Синтаксис Ceylon во многом напоминает Си, Java и C#. При помощи Ceylon значительно проще создавать фреймворки и библиотеки классов, а также естественно описывать древовидные структуры (в частности, формировать пользовательский интерфейс). В язык добавлены элементы, упрощающие написание кода, который можно использовать повторно в других проектах.Модули на языке Ceylon упаковываются в архивы .car и помещаются в специальные репозитории. В процессе выполнения приложения нужные модули загружаются сразу из внешнего или локального репозитория, не требуя предварительной установки. Язык поддерживает архитектуру модульной "peer-to-peer" загрузки классов, обладающую такими возможностями как учет требований приложения к версиям модулей и поддержку работы сразу с несколькими репозиториями модулей, как локальными, так и внешними (http://modules.ceylon-lang.org/).
По сравнению с прошлым выпуском внесено более 1500 изменений (http://www.ceylon-lang.org/documentation/1.1/roadmap/). Из наиболее заметных улучшений можно отметить:
- Поддержка (http://www.ceylon-lang.org/blog/2015/06/21/constructors/)&nb...именованных конструкторов;
- Средства для сериализации данных;
- Поддержка аннотации "native", позволяющий использовать в кросс-платформенных модулях код, специфичный для определённых платформ;
- Улучшение системы типизации, чувствительной к потоку выполнения (flow-sensitive);
- Средства для деструктуририрования кортежей и записей;
- Новые выражения let, switch, if и object;
- Расширение возможностей аннотаций "constraint";
- В инструмент проверки типов (typechecker) и бэкенд JavaScript добавлена поддержки конструкторов типов (http://www.ceylon-lang.org/blog/2015/06/03/generic-function-... ("type function");
- В интегрированной среде разработки представлен новый отладчик, реализована поддержка нескольких тем подсветки синтаксиса, добавлена опция для вставки Java-блоков как кода на языке Ceylon.
- Новая команда "ceylon war" для упаковки модулей в пакеты в формате Java EE WAR;
- Новая команда "ceylon browse" для открытия документации по модулю в браузере;
- Возможность одновременного задания нескольких команд в одном вызове ceylon, например, "ceylon compile,doc,run com.redhat.hello";
- Возможности команды ceylon теперь можно расширять при помощи плагинов, написанных на языке Ceylon;
- Переработана работающая в браузере среда разработки Web IDE (http://try.ceylon-lang.org/), которая переписана на языке Ceylon и поддерживает подсветку синтаксиса, интерактивные уведомления об ошибках, автодополнение ввода, online-документацию и обмен примерами через Gist;
- API расширен новыми функциями map(), set(), distinct(), frequences(), group(), tabulate(), summarize(), getOrDefault(), defaultNullItems(), coalescedMap, Collection.permutations(), formatFloat().Некоторые (http://ceylon-lang.org/features/) особенности (http://ceylon-lang.org/documentation/1.2/introduction/) Ceylon:
- Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;- Отсутствие специальных типов, всё реализовано в виде объектов;
- Именованные и опциональные параметры;
- Nullable-типы (http://en.wikipedia.org/wiki/Nullable_type) (кроме значений базового типа, допускается использование состояний NULL);
- Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);
- Определение типов для локальных блоков (через ключевое слово "local");
- Удобная организация работы с последовательностями (массивами);
- Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;
- Использование для присвоения первоначальных значений (инициализации переменных) оператора ":=";
- Новый синтаксис интерполяции строк;
- Новые типы: Natural, Numeric и т.п.
- Классы, методы и атрибуты выглядят одинаково;
- Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;
- Упрощение уровней public, protected, private access, visibility;
- Определение inline-функций в стиле Smalltalk.
URL: http://www.ceylon-lang.org/blog/2015/10/29/ceylon-1-2-0/
Новость: http://www.opennet.me/opennews/art.shtml?num=43217
Ну началось, кто следующий?
вся проблема в патентовании: проще, видимо, новый язык создать, чем отчисления за пользование существующим оплатить.
отсюда вывод: концентрации человечьего мозгоресурса на одном продукте мешает патентная система, она - зло.
> letЭто было в Симпсон^wБейсике.
>> let
> Это было вЭто есть в bash-е!
Это есть в JS и Rust'е!
это есть в английксом.
> это есть в английксом.это было в латыни!
> Это есть в JS и Rust'е!Это есть в Ocaml
Прожорливый поди.
>>Классы, методы и атрибуты выглядят одинаковосмешались в кучу кони, люди
Хорошо, что буквы не цейлонские, ато они у них сильно непонятные.
class Counter(count=0) {
variable Integer count;
shared Integer currentValue => count;
shared void increment() => count++;
}
Именно "Вериэйбл"function distance(Point from, Point to) {
return ((from.x-to.x)^2 + (from.y-to.y)^2)^0.5;
}
Именно "Фанкшн". То, что это функция определенно важнее того, что она возвращает.interface Sized {
shared formal Integer size;
shared Boolean empty => size==0;
}
Это абстрактный класс? или Интерфейс? У интерфейса, вообще, бывают не публичные методы? И почему шаред? Он что, методами поделился?for (p in people)
Ожидаем foreach(int i=0;i<j;i++)
Ну, они же ещё заявляют, что язык прост в изучении. Никаких сокращений ключевых слов. Именно "Вэриэйбл". Именно "шаред". Чтобы сразу было всем всё понятно. Написано же, интерфейс методами делится.С другой стороны, в Rust читать всякие fn, pub.. не приятнее.
Сколько можно то?! Ещё один язык? Очередная замена Java? Ааааа...
Есть косяк. Java Memory Model описывает только язык Java.
Если чего-то скомпилировать в байткод, то для многопоточных приложений никаких гарантий нет.
Вообще нет никакого описания. Т.о. невозможно написать корректное многопоточное приложение.
Это же относится к Scala и прочим.
Единственный выход - это Red Hat должен создать собственную спецификацию модели памяти. А это даже SUN-у с первого раза не удалось. На Java до версии 1.5 невозможно написать корректное многопоточное приложение.
> Т.о. невозможно написать корректное многопоточное приложение.
> Это же относится к Scala и прочим.orly? http://akka.io/
У них баги открытые. Например, Offer stronger guarantees under the Java Memory model for List, Vector. И куча закрытых по данной теме.
А гарантий-то дать невозможно. Просто опереться на что-нибудь возможности нет. У JVM нет никакой модели памяти. Есть только у языка Java.
Ещё есть некоторые забавные штуки, когда кусок кода на Java в несколько раз быстрее выполняется. Детектится, что можно вставить специальные инструкции процессора. Для Scala это не тетектится.На X86 просто так сложно получить эффект от некорректности многопоточного приложения - TSO. Но он проявляется в самых неожиданных местах в самое неподходящие время :-)
> Html html = Html {Всегда проигрываю с такого. И это пример кода на главной странице языка.
"претендующего на роль замены Java"
> Val document = Html {определенно было бы лучше
Щас про все языки так говорят: "у нас синтаксис как в си!".Ceylon's syntax is ultimately derived from C. So if you're a C, Java, or C# programmer, you'll immediately feel right at home.
Я после ознакомления с туром по языку не чувствую себя как дома. совсем
И вообще, слоник на лого уже занят PHP
postresql... hadoop...
Этот слон не от PHP, а с пачки цейлонского чая. Бренд куплен, всё нормально.
смотрю, пошла мода на то, что любая крупная софтверная контора разрабатывает свой язык программирования. может и мишаня там что-то пилит?
очередное ненужно.кто нибуть уже осилит уже сделать ЯП для jvm чтоб создавало бандлы с встроенной jvm?
зоопарк какой-то
Почему новые языки называют либо в честь кофя, либо в честь чая? Жду языков Tort, Baton и Pirogspovidlom.
> Почему новые языки называют либо в честь кофя, либо в честь чая?Ну, почему же... есть и другие ассоциации. Например, с островом: Kotlin ;)
Кажется я придумал как назову своя язык.
Зачем это все, если есть Fortran, Ada и С??? Нє, ну вот реально, нафейхоа??? Не хватает чего-то кому-то, или шо?
чтобы быстро и качественно разрабатывать и поддерживать по.
Посмотрев на примеры в Web IDE есть сомнения
Чтобы не платить патентных отчислений.
Тогда юзаем алгол-68
> По сравнению с прошлым выпуском внесено более 1500 измененийпрочитал как 100500 изменений
>CeylonТолько выпустили, а уже устарели. Шри-Ланка, Ктулху вас обрыгай. Шри-Ланка, сраные империалисты.
Цейлон, ага...
>>Ceylon
> Только выпустили, а уже устарели. Шри-Ланка, Ктулху вас обрыгай. Шри-Ланка, сраные империалисты.
> Цейлон, ага...На карте Сиам найдёте? (ВОт я как-то подзабыл географию :) ).
>Red Hat
>интегрированная среда разработки Ceylon IDE
>http://ceylon-lang.org/documentation/1.2/ide/features/
>Скриншоты с OS XИли это новый гном?
Нужен как минимум скрин всего рабочего стола. По крайней мере для меня.
eclipse - это очень плохо. Ибо хорошо - это idea или на худой конец netbeans.Ну и я не доверяю гуголу, который родил Python и GO которые по итогу не быстрее старой доброй джавки.
Выдыхай, бобёр!
python старше google.
И тем не менее, если бы не гугл - где бы сейчас был питон....
Индакод продакшен представляет Цэйлон, новый язык программирования для индусов.
Только думал скалу пощупать. Что щас за цейлон хвататься?
А ведь дальше будет хуже, каждый отдел в такой крупной конторе будет выпускать свой язык.
> Только думал скалу пощупать. Что щас за цейлон хвататься?
> А ведь дальше будет хуже, каждый отдел в такой крупной конторе будет
> выпускать свой язык.Если взять разработку на С и С++ то по сути так и есть, хотя язык вроде один
Kotlin правильнее, чем Scala, по-моему. К сожалению, он очень молод и неразвит, по сравнению со Scala. Цель цейлона мне не ясна. Лучше RH бы присоединились к развитию Kotlin-а.
Система типов в Ceylon естественнее, чем в scala. Там есть типы-суммы и типы-произведения, и очень глубокий вывод типов. А котлин больше ориентирован на практическое использование, там сознательно урезали систему типов, чтобы не усложнять язык.
следующий будет Batik
Принцесса Дури
Они эволюционировали. И у них есть План.
план понахватать самого лучшего м слепить суперязык, проходили уже
> Использование для присвоения первоначальных
> значений (инициализации переменных) оператора ":=";посмотрел примеры, не нашел нигде :=
Нужен язык под названием "Cocaine" и всех на него подсадить, остальное забыть!