Компания Red Hat представила сайт и код нового языка программирования Ceylon
Для формирования сообщества разработчиков на языке программирования Ceylon введён в строй сайт проекта - ceylon-lang.org и открыт доступ к Git-репозиториям с кодом. Язык Ceylon был представлен компанией Red Hat в апреле этого кода, как язык общего назначения, претендующий на роль замены Java. Спецификации Ceylon, код компилятора, runtime-компонентов, библиотек и интегрированной среды разработки на базе Eclipse можно загрузить из GitHub. Реализация компилятора Ceylon написана на языке Java. Код доступен под лицензией GPLv2.Учтя сильные и слабые стороны языка Java, создатели Ceylon поставили перед собой цель избавления от устаревших концепций и подходов, которые мешают дальнейшей эволюции Java и достижения более высокого уровня эффективности. Написанные на языке Ceylon программы могут выполняться в стандартной виртуальной машине Java (JVM). Язык использует статическую типизацию и спроектирован с оглядкой на простоту изучения и лёгкость восприятия кода. Синтаксис Ceylon во многом напоминает Java и C#. Отмечается, что при помощи Ceylon значительно проще создавать фреймворки и библиотеки классов, а также естественно описывать древовидные структуры (в частности, пользовательский интерфейс).
В настоящий момент проект находится на стадии подготовки первого экспериментального выпуска (Milestone 1), который ожидается после устранения нескольких нерешенных проблем. В первом выпуске будет реализована поддержка выражений, базовых возможностей языка, процедурного и объектно-ориентированного кода. Во втором тестовом выпуске появятся средства функционального программирования, поддержка смешанного наследования, вложенных классов, псевдонимов типов и конструкции switch/case. В третьем выпуске, который будет распространяться как Ceylon 1.0, намечена поддержка аннотаций, мета-модели типов, перехвата методов, атрибутов и классов.
Некоторые особенности Ceylon:
- Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;
- Отсутствие специальных типов, всё реализовано в виде объектов;
- Именованные и опциональные параметры;
- Nullable-типы (кроме значений базового типа, допускается использование состояний NULL);
- Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);
- Определение типов для локальных блоков (через ключевое слово "local");
- Удобная организация работы с последовательностями (массивами);
- Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;
- Использование для присвоения значений оператора ":=";
- Новый синтаксис интерполяции строк;
- Новые типы: Natural, Numeric и т.п.
- Классы, методы и атрибуты выглядят одинаково;
- Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;
- Упрощение уровней public, protected, private access, visibility;
- Определение inline-функций в стиле Smalltalk.
© OpenNet