The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Компания Red Hat выпустила язык программирования Ceylon 1.2

29.10.2015 18:20

После года разработки доступен язык программирования Ceylon 1.2.0, развиваемый компанией Red Hat в качестве языка общего назначения, претендующего на роль замены Java. Для разработки приложений предоставляются Ceylon SDK, коллекция модулей и интегрированная среда разработки Ceylon IDE, построенная на основе платформы Eclipse. Код связанных с языком компонентов распространяется под лицензией GPLv2, а код среды разработки под лицензией EPL. Бинарные пакеты можно загрузить в форматах 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" загрузки классов, обладающую такими возможностями как учет требований приложения к версиям модулей и поддержку работы сразу с несколькими репозиториями модулей, как локальными, так и внешними.

По сравнению с прошлым выпуском внесено более 1500 изменений. Из наиболее заметных улучшений можно отметить:

  • Поддержка именованных конструкторов;
  • Средства для сериализации данных;
  • Поддержка аннотации "native", позволяющий использовать в кросс-платформенных модулях код, специфичный для определённых платформ;
  • Улучшение системы типизации, чувствительной к потоку выполнения (flow-sensitive);
  • Средства для деструктуририрования кортежей и записей;
  • Новые выражения let, switch, if и object;
  • Расширение возможностей аннотаций "constraint";
  • В инструмент проверки типов (typechecker) и бэкенд JavaScript добавлена поддержки конструкторов типов ("type function");
  • В интегрированной среде разработки представлен новый отладчик, реализована поддержка нескольких тем подсветки синтаксиса, добавлена опция для вставки Java-блоков как кода на языке Ceylon.
  • Новая команда "ceylon war" для упаковки модулей в пакеты в формате Java EE WAR;
  • Новая команда "ceylon browse" для открытия документации по модулю в браузере;
  • Возможность одновременного задания нескольких команд в одном вызове ceylon, например, "ceylon compile,doc,run com.redhat.hello";
  • Возможности команды ceylon теперь можно расширять при помощи плагинов, написанных на языке Ceylon;
  • Переработана работающая в браузере среда разработки Web IDE, которая переписана на языке Ceylon и поддерживает подсветку синтаксиса, интерактивные уведомления об ошибках, автодополнение ввода, online-документацию и обмен примерами через Gist;
  • API расширен новыми функциями map(), set(), distinct(), frequences(), group(), tabulate(), summarize(), getOrDefault(), defaultNullItems(), coalescedMap, Collection.permutations(), formatFloat().



Некоторые особенности Ceylon:

  • Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;
  • Отсутствие специальных типов, всё реализовано в виде объектов;
  • Именованные и опциональные параметры;
  • Nullable-типы (кроме значений базового типа, допускается использование состояний NULL);
  • Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);
  • Определение типов для локальных блоков (через ключевое слово "local");
  • Удобная организация работы с последовательностями (массивами);
  • Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;
  • Использование для присвоения первоначальных значений (инициализации переменных) оператора ":=";
  • Новый синтаксис интерполяции строк;
  • Новые типы: Natural, Numeric и т.п.
  • Классы, методы и атрибуты выглядят одинаково;
  • Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;
  • Упрощение уровней public, protected, private access, visibility;
  • Определение inline-функций в стиле Smalltalk.


  1. Главная ссылка к новости (http://www.ceylon-lang.org/blo...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43217-ceylon
Ключевые слова: ceylon
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 18:47, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Ну началось, кто следующий?
     
     
  • 2.20, Аноним (-), 20:53, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +10 +/
    вся проблема в патентовании: проще, видимо, новый язык создать, чем отчисления за пользование существующим оплатить.
    отсюда вывод: концентрации человечьего мозгоресурса на одном продукте мешает патентная система, она - зло.
     

  • 1.2, DarkAmateur (?), 18:58, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > let

    Это было в Симпсон^wБейсике.

     
     
  • 2.4, Andrey Mitrofanov (?), 19:12, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> let
    > Это было в

    Это есть в bash-е!

     
     
  • 3.5, Уже давно (?), 19:21, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это есть в JS и Rust'е!
     
     
  • 4.16, Аноним (-), 20:44, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +8 +/
    это есть в английксом.
     
     
  • 5.56, XoRe (ok), 23:44, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > это есть в английксом.

    это было в латыни!

     
  • 4.24, Аноним (-), 22:02, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Это есть в JS и Rust'е!

    Это есть в Ocaml

     

  • 1.3, test (??), 19:03, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Прожорливый поди.
     
  • 1.6, Илья (??), 19:22, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >>Классы, методы и атрибуты выглядят одинаково

    смешались в кучу кони, люди

     
     
  • 2.17, Аноним (-), 20:47, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хорошо, что буквы не цейлонские, ато они у них сильно непонятные.
     
  • 2.31, Аноним (-), 06:29, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    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++)

     
     
  • 3.48, Аноним (-), 15:35, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, они же ещё заявляют, что язык прост в изучении. Никаких сокращений ключевых слов. Именно "Вэриэйбл". Именно "шаред". Чтобы сразу было всем всё понятно. Написано же, интерфейс методами делится.

    С другой стороны, в Rust читать всякие fn, pub.. не приятнее.

     

  • 1.7, th3m3 (ok), 19:25, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Сколько можно то?! Ещё один язык? Очередная замена Java? Ааааа...
     
  • 1.8, ДяДя (?), 19:41, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Есть косяк. Java Memory Model описывает только язык Java.
    Если чего-то скомпилировать в байткод, то для многопоточных приложений никаких гарантий нет.
    Вообще нет никакого описания. Т.о. невозможно написать корректное многопоточное приложение.
    Это же относится к Scala и прочим.
    Единственный выход - это Red Hat должен создать собственную спецификацию модели памяти. А это даже SUN-у с первого раза не удалось. На Java до версии 1.5 невозможно написать корректное многопоточное приложение.
     
     
  • 2.25, й (?), 00:46, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Т.о. невозможно написать корректное многопоточное приложение.
    > Это же относится к Scala и прочим.

    orly? http://akka.io/

     
     
  • 3.42, ДяДя (?), 10:54, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    У них баги открытые. Например, Offer stronger guarantees under the Java Memory model for List, Vector. И куча закрытых по данной теме.
    А гарантий-то дать невозможно. Просто опереться на что-нибудь возможности нет. У JVM нет никакой модели памяти. Есть только у языка Java.
    Ещё есть некоторые забавные штуки, когда кусок кода на Java в несколько раз быстрее выполняется. Детектится, что можно вставить специальные инструкции процессора. Для Scala это не тетектится.

    На X86 просто так сложно получить эффект от некорректности многопоточного приложения - TSO. Но он проявляется в самых неожиданных местах в самое неподходящие время :-)

     

  • 1.9, Аноним (-), 19:46, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Html html = Html {

    Всегда проигрываю с такого. И это пример кода на главной странице языка.

     
     
  • 2.19, EHLO (?), 20:51, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "претендующего на роль замены Java"
     
  • 2.46, Аноним (-), 14:01, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Val document = Html {

    определенно было бы лучше

     

  • 1.10, Илья (??), 19:46, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Щас про все языки так говорят: "у нас синтаксис как в си!".

    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.

    Я после ознакомления с туром по языку не чувствую себя как дома. совсем

     
  • 1.11, Аноним (-), 19:48, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И вообще, слоник на лого уже занят PHP
     
     
  • 2.14, username (??), 20:23, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    postresql... hadoop...
     
  • 2.18, Аноним (-), 20:50, 29/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Этот слон не от PHP, а с пачки цейлонского чая. Бренд куплен, всё нормально.
     

  • 1.12, Нанобот (ok), 19:58, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    смотрю, пошла мода на то, что любая крупная софтверная контора разрабатывает свой язык программирования. может и мишаня там что-то пилит?
     
  • 1.13, Аноним (13), 20:23, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    очередное ненужно.

    кто нибуть уже осилит уже сделать ЯП для jvm чтоб создавало бандлы с встроенной jvm?

     
  • 1.15, Eklykti (?), 20:29, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    зоопарк какой-то
     
  • 1.21, Аноним (-), 20:57, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему новые языки называют либо в честь кофя, либо в честь чая? Жду языков Tort, Baton и Pirogspovidlom.
     
     
  • 2.51, ffirefox (?), 23:04, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему новые языки называют либо в честь кофя, либо в честь чая?

    Ну, почему же... есть и другие ассоциации. Например, с островом: Kotlin ;)

     
  • 2.53, Аноним (-), 00:39, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Кажется я придумал как назову своя язык.
     

  • 1.23, Defective Life (?), 21:46, 29/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем это все, если есть Fortran, Ada и С??? Нє, ну вот реально, нафейхоа??? Не хватает чего-то кому-то, или шо?
     
     
  • 2.30, Илья (??), 06:05, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    чтобы быстро и качественно разрабатывать и поддерживать по.
     
     
  • 3.38, Аноним (-), 10:10, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Посмотрев на примеры в Web IDE есть сомнения
     
  • 2.35, Аноним (-), 08:55, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы не платить патентных отчислений.
     
     
  • 3.40, 1 (??), 10:15, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда юзаем алгол-68
     

  • 1.26, Штунц (?), 01:38, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > По сравнению с прошлым выпуском внесено более 1500 изменений

    прочитал как 100500 изменений

     
  • 1.27, A.Stahl (ok), 02:26, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Ceylon

    Только выпустили, а уже устарели. Шри-Ланка, Ктулху вас обрыгай. Шри-Ланка, сраные империалисты.
    Цейлон, ага...

     
     
  • 2.34, ryoken (?), 08:40, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>Ceylon
    > Только выпустили, а уже устарели. Шри-Ланка, Ктулху вас обрыгай. Шри-Ланка, сраные империалисты.
    > Цейлон, ага...

    На карте Сиам найдёте? (ВОт я как-то подзабыл географию :) ).

     

  • 1.28, Аноним (-), 04:30, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Red Hat
    >интегрированная среда разработки Ceylon IDE
    >http://ceylon-lang.org/documentation/1.2/ide/features/
    >Скриншоты с OS X

    Или это новый гном?

     
     
  • 2.54, Аноним (-), 00:41, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Нужен как минимум скрин всего рабочего стола. По крайней мере для меня.
     

  • 1.29, Классический анонимуз (?), 05:00, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    eclipse - это очень плохо. Ибо хорошо - это idea или на худой конец netbeans.

    Ну и я не доверяю гуголу, который родил Python и GO которые по итогу не быстрее старой доброй джавки.

     
     
  • 2.36, oopsy (?), 09:40, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Выдыхай, бобёр!
    python старше google.
     
     
  • 3.45, Аноним (-), 12:55, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И тем не менее, если бы не гугл - где бы сейчас был питон....
     

  • 1.32, Аноним (-), 06:58, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Индакод продакшен представляет Цэйлон, новый язык программирования для индусов.
     
  • 1.33, V_ctor (?), 08:02, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Только думал скалу пощупать. Что щас за цейлон хвататься?
    А ведь дальше будет хуже, каждый отдел в такой крупной конторе будет выпускать свой язык.
     
     
  • 2.39, Аноним (-), 10:12, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Только думал скалу пощупать. Что щас за цейлон хвататься?
    > А ведь дальше будет хуже, каждый отдел в такой крупной конторе будет
    > выпускать свой язык.

    Если взять разработку на С и С++ то по сути так и есть, хотя язык вроде один

     
  • 2.47, Аноним (-), 14:05, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Kotlin правильнее, чем Scala, по-моему. К сожалению, он очень молод и неразвит, по сравнению со Scala. Цель цейлона мне не ясна. Лучше RH бы присоединились к развитию Kotlin-а.
     
     
  • 3.49, Аноним (-), 15:47, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Система типов в Ceylon естественнее, чем в scala. Там есть типы-суммы и типы-произведения, и очень глубокий вывод типов. А котлин больше ориентирован на практическое использование, там сознательно урезали систему типов, чтобы не усложнять язык.
     

  • 1.37, Аноним (-), 09:42, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    следующий будет Batik
     
     
  • 2.52, Defective Life (?), 00:23, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Принцесса Дури
     

  • 1.41, Yuris (??), 10:39, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Они эволюционировали. И у них есть План.
     
     
  • 2.50, Илья (??), 18:00, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    план понахватать самого лучшего м слепить суперязык, проходили уже
     

  • 1.55, MirandaUser2 (?), 03:38, 31/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Использование для присвоения первоначальных
    > значений (инициализации переменных) оператора ":=";

    посмотрел примеры, не нашел нигде :=

     
  • 1.57, Аноним (57), 20:25, 01/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нужен язык под названием "Cocaine" и всех на него подсадить, остальное забыть!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру