옥시즌 (프로그래밍 언어)

옥시즌(, 이전 이름: 크롬)은 렘오브젝트에서 개발한 공통 언어 기반의 프로그래밍 언어이다. 코드기어의 델파이닷넷과 비교하면, 옥시즌은 하위 호환성을 지니지 않는다.

특징 
 공통 언어 기반
 오브젝트 파스칼에 기반을 두었지만 많은 새로운 기능이 추가
 인라인 변수 선언
 익명 자료형, 익명 대리자
 비동기 메소드
 람다 연산
 닷넷 2.0
 반복자
 불완전 클래스
 확장 메소드
 LINQ 지원
 형 추론
 인라인 변수 생성자
 완전한 비주얼스튜디오 지원

예제

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.

제네릭 컨테이너(Generic container) 
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>; //type inference
  myList.Add(new Person(FirstName := 'John', LastName := 'Doe'));
  myList.Add(new Person(FirstName := 'Jane', LastName := 'Doe'));
  myList.Add(new Person(FirstName := 'James', LastName := 'Doe'));
  Console.WriteLine(myList[1].FirstName);  //No casting needed
  Console.ReadLine;
end;

end.

제네릭 메소드(Generic method) 
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;// type inference
  var b := 15;
  DoSwap<Integer>(a, b); // no downcasting to Object in this method.

  var aa := 'abc';// type inference
  var bb := 'def';
  DoSwap<String>(aa, bb); // no downcasting to Object in this method.

  DoSwap(1.1, 1.2); // type inference for generic parameters
  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{{Not a typo|.}}String
-> a = abc, b = def
-> a = def, b = abc
Type: System{{Not a typo|.}}Double
-> a = 1,1, b = 1,2
-> a = 1,2, b = 1,1

각주

외부 링크 
 옥시즌 크롬 위키
 옥시즌 홈페이지

객체 지향 프로그래밍 언어
닷넷 프레임워크
닷넷 프로그래밍 언어
파스칼 프로그래밍 언어 계열
파스칼 컴파일러