Oxygene (linguaggio)
# Oxygene (linguaggio)

Oxygene (noto in precedenza come Chrome) è un linguaggio di programmazione sviluppato da RemObjects Software per la Common Language Infrastructure (CLI). Oxygene è basato sul linguaggio Object Pascal. Rispetto a Delphi.NET (ora deprecato), Oxygene non garantisce piena compatibilità nelle versioni precedenti, ma è progettato per essere pienamente integrato con la piattaforma .NET, supportando tutte le caratteristiche e le tecnologie fornite dal runtime .NET.

A partire dal 2008, RemObjects Software ha fornito in licenza il suo compilatore e la tecnologia IDE a Embarcadero per poterli usare nel prodotto Delphi Prism. Delphi Prism offre piena integrazione in Visual Studio 2005/2008.

## Il linguaggio Oxygene

Oxygene tra le sue origini da Object Pascal (in generale) e da Delphi (in particolare) è stato progettato per riflettere le linee guida .NET. Non tutte le caratteristiche di Object Pascal e Delphi, quindi, sono supportate da Oxygene. Oxygene è un linguaggio di programmazione orientato agli oggetti. Inoltre fornisce supporto al livello del linguaggio per la programmazione parallela. L'obiettivo è utilizzare tutti i processori di un computer al fine di migliorare le prestazioni di un programma. Per raggiungere tale obiettivo, i task devono essere distribuiti su diversi thread.

### Overloading degli operatori

In Oxygene gli operatori possono essere sovraccaricati usando la sintassi class operator:

### Struttura di un programma

Oxygene non utilizza le "Units" (unità) come fa invece Delphi, ma utilizza i namespace .NET per organizzare e raggruppare i tipi. Un namespace può estendersi attraverso molteplici file, ma un singolo file può contenere esclusivamente tipi di uno specifico namespace. Il namespace è definito in cima a ciascun file con la seguente sintassi:

I file Oxygene distinguono una sezione interfaccia e una di implementazione, una struttura mutuata da Delphi. La sezione interfaccia segue la dichiarazione del namespace e contiene le clausole uses, che in Oxygene importano tipi da altri namespace:

I namespace importati devono trovarsi nello stesso progetto o in "assembly" referenziati dallo stesso. Al contrario di C#, in Oxygene non è possibile definire alias per i namespace, ma solo per i singoli tipi.

Così come in Delphi, la sezione interfaccia può contenere inoltre dichiarazioni di tipo. Ad esempio:

Come in C#, nella sezione di implementazione il metodo Main è il punto d'ingresso (entry point) per ogni programma. Esso può avere un parametro args : Array of String per permettere il passaggio di argomenti da riga di comando.

L'implementazione dei metodi dichiarati è inserita nella sezione di implementazione:

Infine, i file terminano sempre con l'istruzione end.

