Oxygene (язык программирования)

Oxygene (язык программирования)
Oxygene
Chrome-128.png
Релиз:

4.0.25 (20 августа 2010)

Испытал влияние:

Object Pascal, C#

Лицензия

Commercial

Сайт:

Oxygene Homepage

Oxygene («Кислород») (ранее известный как Chrome («Хром»)) — язык программирования, разработанный компанией RemObjects Software для стандарта Common Language Infrastructure. Язык Oxygene был создан на основе языка Object Pascal.

Первоначально привязанный к Delphi.NET, после приобретения прав компанией Embarcadero, Oxygene не обладает полной обратной совместимостью. Так, например, в его состав не входят библиотеки классов, совместимые с VCL, что практически исключает перенос на платформу .NET унаследованных приложений, созданных с помощью Delphi или Kylix и использовавших библиотеку классов VCL.

Компания «RemObjects Software» предлагает полную интеграцию с Visual Studio 2003/2005/2008, а с июня 2010 года - интеграцию с MonoDevelop и Visual Studio 2010. Отдельного IDE для Oxygene на данный момент не существует.

Содержание

Особенности

  • интеграция с CLI.
  • Основан на Object Pascal с добавлением множества новых возможностей.
  • Поддержка механизма «контракты для классов» («class contracts») — механизм ограничения на данные, схожий с контрактным программированием.
  • Определение переменных непосредственно внутри блока кода.
  • Анонимные типы.
  • Анонимные методы и делегаты.
  • Асинхронные методы и работа с потоками.
  • Лямбда-исчисление.
  • Поддержка .NET 2.0.
  • Обобщённые типы и методы. (только для .NET 2.0)
  • Обнуляемые типы (Nullable types). (только для .NET 2.0)
  • Итераторы.
  • Частичные классы (для .NET 1.1 и 2.0)
  • Методы-расширения (Extension methods).
  • Поддержка LINQ.
  • Вывод типов.
  • Виртуальные свойства и события.
  • Улучшенная поддержка событий с несколькими обработчиками (multicast events).
  • Инициализаторы переменных внутри кода.
  • Улучшенная поддержка циклов for.
  • Знак двоеточия для безопасной работы с типами.
  • Поддержка WPF.
  • Полная поддержка альтернативных фреймворков, созданных для Visual Studio (смотри Portable.NET и Mono (среда разработки))

Примеры кода

Hello World

namespace HelloWorld;
 
interface
 
type
  HelloClass = class
  public
    class method Main; 
  end;
 
implementation
 
class method HelloClass.Main;
begin
  System.Console.WriteLine('Hello World!');
end;
 
end.


Обобщённый контейнер

namespace GenericContainer;
 
interface
 
type
  TestApp = class
  public
    class method Main;
  end;
 
  Person = class
  public
    property FirstName: String;
    property LastName: String;      
  end;        
 
implementation
 
uses 
  System.Collections.Generic;
 
class method TestApp.Main;
begin
  var myList := new List<Person>; //вывод типов
  myList.Add(new Person(FirstName := 'Иван', LastName := 'Петров'));  
  myList.Add(new Person(FirstName := 'Маша', LastName := 'Петрова'));
  myList.Add(new Person(FirstName := 'Сергей', LastName := 'Петров'));  
  Console.WriteLine(myList[1].FirstName);  //Проверка не требуется
  Console.ReadLine;        
end;
 
end.


Обобщённый класс

namespace GenericMethodTest;
 
interface
 
type
GenericMethodTest = static class
public
  class method Main;
private
  class method Swap<T>(var left, right : T);
  class method DoSwap<T>(left, right : T);
end;
 
implementation
 
class method GenericMethodTest.DoSwap<T>(left, right : T);
begin
  var a := left;
  var b := right;
  Console.WriteLine('Type: {0}', typeof(T));
  Console.WriteLine('-> a = {0}, b = {1}', a , b);
  Swap<T>(var a, var b);
  Console.WriteLine('-> a = {0}, b = {1}', a , b);
end;
 
class method GenericMethodTest.Main;
begin
  var a := 23;// вывод типа
  var b := 15;
  DoSwap<Integer>(a, b); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.
 
  var aa := 'abc';// вывод типа
  var bb := 'def';
  DoSwap<String>(aa, bb); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.
 
  DoSwap(1.1, 1.2); // вывод типа для обобщённых параметров
  Console.ReadLine();
end;
 
class method GenericMethodTest.Swap<T>(var left, right : T);
begin
  var temp := left;
  left:= right;
  right := temp;
end;
 
end.

Программа должна вывести:

Type: System.Int32
-> a = 23, b = 15
-> a = 15, b = 23
Type: System.String
-> a = abc, b = def
-> a = def, b = abc
Type: System.Double
-> a = 1,1, b = 1,2
-> a = 1,2, b = 1,1
---


Улучшенная обработка операторов выбора

case aClassID.ToUpper of
   'XYZ': result := TMyXYZClass;
   'ABC': result := TMyOtherClass;
else raise new Exception('Неправильный ID класса');
end;
case aClass type of
   TMyXYZClass: TMyXYZClass(aClass).DoSomething;
   TMyOtherClass: TMyOtherClass(aClass).DoSomethingElse;
else raise new Exception('Неправильная ссылка на класс');
end;

См. также

Дополнительные источники


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Oxygene (язык программирования)" в других словарях:

  • Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ …   Википедия

  • Delphi (язык программирования) — У этого термина существуют и другие значения, см. Delphi. Эта статья  о языке программирования. Об интегрированной среде разработки см. Delphi (среда разработки). Delphi …   Википедия

  • Oxygene — Oxygene: Oxygene (альбом)  музыкальный альбом Жана Мишеля Жарра. Oxygene (язык программирования)  язык программирования, ранее известный как Chrome. Oxygen  телеканал …   Википедия

  • Хронология языков программирования — Списки языков программирования По категориям Хронологический Генеалогический Хронология языков программирования  упорядоченный в хронологическом порядке список языков программирования. Содержание …   Википедия

  • Список языков программирования — Списки языков программирования Алфавитный По категориям Хронологический Генеалогический Цель этого алфавитного списка языков программирования состоит в том, чтобы дать полный перечень всех существующих языков программирования, как используемых в… …   Википедия

  • Chrome — Chrome: Google Chrome  браузер, разрабатываемый компанией Google. Вышел в 2008 году. Google Chrome OS  операционная система Google для нетбуков. Анонсирована в 2009 году. Google Chrome Frame  дополнение для IE. Отображает страницы… …   Википедия

  • Список .NET-языков — Эта страница информационный список. Языки программирования .NET (Языки с поддержкой CLI или CLI языки)  компьютерные языки программирования, используемые для создания библиотек и программ, удовлетворяющих требованиям Comm …   Википедия

  • Object Pascal — Семантика: императивная Класс языка: мультипарадигмальный: императивный, структурный, объектно ориентированный, обобщённый[1], процедурный Тип исполнения: компилируемый …   Википедия

  • Delphi (среда разработки) — У этого термина существуют и другие значения, см. Delphi. Embarcadero Delphi …   Википедия

  • MIDletPascal — MIDletPascal …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»