~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 4C14A8844B5961F90174A65ECB0C1C9A__1717844100 ✰
Заголовок документа оригинал.:
✰ Ceylon (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Цейлон (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Ceylon_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/4c/9a/4c14a8844b5961f90174a65ecb0c1c9a.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/4c/9a/4c14a8844b5961f90174a65ecb0c1c9a__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 06:09:04 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 8 June 2024, at 13:55 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Цейлон (язык программирования) — Википедия Jump to content

Цейлон (язык программирования)

Из Википедии, бесплатной энциклопедии

Цейлон
Парадигма Объектно-ориентированный
Разработано Гэвин Кинг
Разработчик Фонд Затмения
Впервые появился 2011 год ; 13 лет назад ( 2011 )
Стабильная версия
1.3.3 / 21 августа 2017 г .; 6 лет назад ( 21.08.2017 )
Дисциплина набора текста Статический , сильный , безопасный
Платформа Виртуальная машина Java , JavaScript
Лицензия Лицензия Апач 2.0
Расширения имен файлов .цейлон [1]
Веб-сайт только Цейлон .org
Под влиянием
Джава , [2] Скала , Смоллток , ML , [3] Лисп , [4] Пока [5]

Ceylon объектно-ориентированный , строго статически типизированный язык программирования с упором на неизменяемость , созданный Red Hat . Цейлонские программы работают на виртуальной машине Java (JVM) и могут быть скомпилированы в JavaScript . [6] [7] При разработке языка основное внимание уделяется читаемости исходного кода , предсказуемости , удобству использования инструментов , модульности и метапрограммируемости . [8]

К важным особенностям Цейлона относятся: [9]

Название «Цейлон» является косвенной ссылкой на Яву, поскольку Ява и Шри-Ланка , ранее известные как Цейлон, являются островами, известными выращиванием и экспортом кофе и чая .

В августе 2017 года Цейлон был передан в дар фонду Eclipse Foundation . Развитие замедлилось и окончательно остановилось в 2020 году. [13] В апреле 2023 года Eclipse Foundation заявила о прекращении перехода. [14]

Языковые особенности [ править ]

Ceylon находится под сильным влиянием синтаксиса Java , но добавляет много новых функций.

Типовая система [ править ]

Одним из самых новых аспектов Ceylon по сравнению с Java является его система типов . Цейлон отказывается от примитивных типов Java [15] и бокс в пользу системы типов, полностью состоящей из первоклассных объектов. Хотя в некоторых ситуациях это может привести к накладным расходам на упаковку, это делает систему типов более единообразной.

Ceylon допускает типы объединения и пересечения , аналогично TypeScript , Whiley и Flow, которые, по сути, заимствовали идею у Ceylon.

Типы объединений, написанные A|B, позволяет переменной иметь более одного типа. В следующем примере показана функция Ceylon, которая может принимать целое число или строку :

Shared   void   IntegerOrString  (  Integer  |  String   input  )   { 
     if   (  является   целочисленным   вводом  )   { 
         print  (  "Получено целое число ``input``"  ); 
      }   else   { 
         print  (  "Получена строка '``input`''"  ); 
      } 
 } 

Типы пересечений, написанные A&B, являются теоретической основой чувствительной к потоку типизации :

общий   void   IntegerOrString  (  Целое  |  Строковый   ввод  )   { 
     целое число   Добавлено   =   ввод   +   6  ;    // незаконно;   оператор + не определен для Integer|String 

     if   (  is   Integer   input  )   { 
         Integer   добавлен   =   input   +   6  ;    // законно;   теперь известно, что ввод представляет собой целочисленную 
         печать  (  «Получено целое число ``input``»  ); 
      }   else   { 
         print  (  "Получена строка '``input`''"  ); 
      } 
 } 

Состояние is Integer input сужает тип input к <Integer|String> & Integer, который распределяется по Integer&Integer | String&Integer, который, как String и Integer являются непересекающимися типами, что эквивалентно Integer&Integer | Nothing ( Nothingэто тип пустого дна), что упрощается до просто Integer.

Нулевая безопасность [ править ]

Типы объединения и пересечения используются для обеспечения нулевой безопасности . Верхним типом иерархии типов Цейлона является класс Anything, который имеет два подкласса: Object, суперкласс всех обычных классов и всех интерфейсов, и Null, с единственным экземпляром null. С Object и Null являются непересекающимися типами, большинство обычных типов, таких как Integer или List<String>не являются обнуляемыми; тип , допускающий значение NULL, — это объединение Integer|Null, сокращенно Integer?. [16]

Типы пересечений можно использовать для получения необязательного типа из возможно необязательного типа, например параметра типа. Например, сигнатура функции, удаляющей null элементами из потока значений могут быть:

Iterable  <  Элемент  и  объект  >   RemoveNulls  <  Элемент  > (  Итерируемый  <  Элемент  >   поток  ); 

Когда removeNulls вызывается с потоком Integer|Null элементов, результатом будет поток <Integer|Null> & Object элементы, что упрощает Integer.

Функции [ править ]

Как и многие современные языки, Ceylon поддерживает функции первого класса и функции более высокого порядка , включая типы функций и анонимные функции. [17]

// Функция высшего порядка верхнего уровня, использующая блочный синтаксис (не связанная ни с какими классами, созданными пользователем) 
 String   Process  (  String   text  ,   String   TransformString  (  String   toChange  ))   { 
     return   TransformString  (  Text  ); 
  } 

 // Функция верхнего уровня, вызывающая String.reverse в форме выражения. 
 строка    Обратная  (  строка   текстовая  )   =>   текст  .   перевернутый  ; 

  // Ссылка на функцию String.reversed, но в основном эквивалентная функции выше. 
  Строка  (  Строка  )   обратнаяФункцияСсылка   =   Строка  .   перевернутый  ; 

  // Пример, где функция верхнего уровня, указанная выше, предоставляется в качестве аргумента функции более высокого порядка, указанной выше 
 String   Reverse1   =   Process  (  "one"  ,   Reverse  ); 

  // Пример, в котором анонимная функция - (text) => text+text - передается функции более высокого порядка, указанной выше. 
  Строка   перевернутая2   =   процесс  (  «один»  ,   (  текст  )   =>   текст  +  текст  ); 

Перечислимые типы [ править ]

Подобно Java и многим другим языкам, а также с механизмом, аналогичным алгебраическим типам , Ceylon поддерживает перечислимые типы , также известные как перечисления. Это реализовано на Ceylon с помощью шаблона ограничения экземпляров абстрактного класса при объявлении ограниченным набором объектов (в данном случае одноэлементными экземплярами). Другой способ реализовать этот шаблон — новая функция конструктора в Ceylon 1.2, где объекты реализованы как объявления конструкторов с разными именами. [18]

// Традиционный синтаксис для перечислимого типа, в данном случае ограничение экземпляров тремя объектами (для этой цели: Singletons 
 абстрактный   класс   Vehicle  (  общее   строки   имя  )   плоскости   |   )    поезд   |    автомобиль   {} 

 объект   plane   расширяет   Транспортное средство  (  "самолет"  )   {} 
 объект   поезд   расширяет   Транспортное средство  (  "поезд"  )   {} 
 объект   автомобиль   расширяет   Транспортное средство  (  "автомобиль"  )   {} 
 // Ошибка компиляции: тип не является подтипом ни в одном случае перечислимый супертип: 'boat' наследует 'Vehicle' 
 //object Boat расширяет Vehicle("boat") {} 

 на основе конструктора 
 // Новый (начиная с Ceylon 1.2.0) синтаксический класс   Vehicle   of   plane   |    поезд   |    автомобиль   { 
     Строковое   имя  ; 

      абстрактное   новое   имя  (  String   pName  )   { 
         name   =   pName  ; 
      } 

     общий   новый   самолет   расширяется   с именем  (  "самолет"  )   {} 
     общий   новый   поезд   расширяется   с именем  (  "поезд"  )   {} 
     общий   новый   автомобиль   расширяется   с именем  (  "автомобиль"  )   {} 
     // Ошибка компиляции: конструктор значения не встречается в предложении неабстрактного перечислимого класса: «лодка» не указана в пункте «Транспортное средство» 
     // общая новая лодка расширяется с именем («лодка») {} 
 } 

Вывод типа [ править ]

Ceylon строго и статически типизирован, но также поддерживает вывод типа . valueКлючевое слово используется для определения типа переменной, и functionКлючевое слово используется для определения типа функции. Следующие две пары определений эквивалентны:

Целое число   я   =   3  ; 
  значение   я   =   3  ; 

  Целое число   add  (  Целое число   i1  ,   Целое число   i2  )   { 
     return   i1   +   i2  ; 
  } 
 Функция   add  (  Целое число   i1  ,   Целое число   i2  )   { 
     return   i1   +   i2  ; 
  } 

Однако, чтобы сделать возможным однопроходный вывод типа, вывод типа разрешен только для объявлений не верхнего уровня и неразделяемых объявлений. [19]

Точка входа с именами [ править ]

По умолчанию стартер ( ceylon run) запускает общую функцию run() модуля:

/* Классическая программа Hello World */ 
 shared   void   run  ()   { 
     print  (  "Hello, World!"  ); 
  } 

но любая другая общая функция без параметров может использоваться в качестве основного вызова программы с параметром запуска , например:

ceylon run --compile=force --run hello default

Версии [ править ]

Выпущены версии Ceylon: [20]

  • М1 0,1 «Ньютон» (20 декабря 2011 г.)
  • М2 0.2 «Минитель» (2 марта 2012 г.)
  • М3 0,3 «В2000» (21 июня 2012 г.)
  • M3.1 0.3.1 "V2000" (6 июля 2012 г.)
  • M4 0.4 «Аналитическая машина» (29 октября 2012 г.)
  • M5 0.5 «Неса Понг» (13 марта 2013 г.)
  • M6 0.6 «Виртуальный мальчик» (23 сентября 2013 г.)
  • Бета-версия 1.0 «Virtual Boy» (24 сентября 2013 г.)
  • 1.0.0 «Нет больше мистера Славного Парня» (13 ноября 2013 г.)
  • 1.1.0 «Ultimate Ship The Second» (9 октября 2014 г.)
  • 1.2.0 «Серия маловероятных объяснений» (28 октября 2015 г.)
  • 1.2.1 «Необычный апокалипсис» (11 февраля 2016 г.)
  • 1.2.2 «Очаровательно, но иррационально» (11 марта 2016 г.)
  • 1.3.0 «Полное внутреннее отражение» (19 сентября 2016 г.)
  • 1.3.1 «Теперь мы попробуем по-моему» (22 ноября 2016 г.)
  • 1.3.2 «Улыбайтесь толерантно» (02 марта 2017 г.)
  • 1.3.3 «Содержимое может отличаться» (21 августа 2017 г.)

Лицензия [ править ]

Все части Ceylon доступны в виде бесплатного программного обеспечения , в основном по лицензии Apache . [21] Часть исходного кода лицензирована по лицензии LGPL.

См. также [ править ]

Ссылки [ править ]

  1. ^ Кинг, Гэвин. «Цейлонский язык: §4.1 Структура единицы компиляции» . Проверено 4 декабря 2015 г. Единица компиляции представляет собой текстовый файл с расширением имени файла. .ceylon.
  2. ^ «Часто задаваемые вопросы: Что такое Цейлон?» . Проверено 4 декабря 2015 г. Ceylon — новый язык программирования, на который глубоко повлияла Java.
  3. ^ «Цейлон/пользователь — Гиттер» . Проверено 4 декабря 2015 г.
  4. ^ «Цейлон/пользователь — Гиттер» . Проверено 4 декабря 2015 г.
  5. ^ «10 лучших функций цейлонского языка, которые Java хотела бы иметь» . Проверено 29 ноября 2019 г.
  6. ^ «Цейлон 1.0 бета» . Проверено 26 сентября 2013 г.
  7. ^ «Проект Цейлон – Red Hat создает замену Java» . Регистр . 13 апреля 2011 г. Проверено 27 ноября 2011 г.
  8. ^ Кинг, Гэвин (10 января 2012 г.). «Принципы, которыми руководствуется этот проект» . Проверено 4 декабря 2015 г.
  9. ^ «Часто задаваемые вопросы о языковом дизайне: цели» . Проверено 4 декабря 2015 г.
  10. ^ Фестал, Дэвид (10 октября 2014 г.). «Пишите на Цейлоне, развертывайте как OSGI, используйте в Java EE» . Проверено 4 декабря 2015 г.
  11. ^ «Репозитории Maven» . Проверено 4 декабря 2015 г.
  12. ^ «Особенности Ceylon IDE» . Проверено 4 декабря 2015 г.
  13. ^ «Цейлон / Цейлон» . GitHub, Inc. 25 мая 2020 г. Архивировано из оригинала 3 октября 2023 г. Проверено 22 января 2024 г.
  14. ^ «Обзор прекращения действия Eclipse Ceylon™» . Фонд Эклипс. 05.04.2023. Архивировано из оригинала 23 апреля 2023 г. Проверено 23 апреля 2023 г.
  15. ^ Кинг, Гэвин. «Цейлон: часто задаваемые вопросы по языковому дизайну» .
  16. ^ Кинг, Гэвин. «Цейлонский язык: §1.4.3 Безопасность во время компиляции для нулевых значений и чувствительная к потоку типизация» . Проверено 4 декабря 2015 г.
  17. ^ Кинг, Гэвин. «Цейлонский язык: 4.7 функций» . Проверено 5 декабря 2015 г.
  18. ^ Кинг, Гэвин. «Цейлонский язык: 4.5.8 Перечисленные классы» . Проверено 6 декабря 2015 г.
  19. ^ Кинг, Гэвин. «Цейлонский язык: §3.2.9 Вывод типа» . Проверено 4 декабря 2015 г.
  20. ^ https://ceylon-lang.org/download-archive/ Цейлон: скачать предыдущие версии Цейлона.
  21. ^ «Цейлон: Лицензии» . Проверено 4 декабря 2015 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 4C14A8844B5961F90174A65ECB0C1C9A__1717844100
URL1:https://en.wikipedia.org/wiki/Ceylon_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Ceylon (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)