Un'altra domanda su SO mi ha presentato Oxygene , precedentemente Chrome prima del browser con lo stesso nome è venuto alla ribalta. È nella famiglia di sintassi Pascal, ma introduce molta grammatica ed elementi orientati agli oggetti dalla famiglia C, in particolare Java / C #. Uno dei suoi punti di forza pubblicizzati è che la lingua è implementata come indipendente dal runtime; i programmi scritti in Oxygene possono essere utilizzati come .NET, J2EE, Android o Cocoa, il che rende un linguaggio gestibile in memoria quasi come quello C / C ++ in terra non gestita.
Tuttavia, la mia domanda è se quel tipo di indipendenza sia davvero utile, dato che i quadri e gli ambienti che si prefiggono sono così diversi (e incompatibili). Ci sono una serie di problemi inerenti alla scrittura di un programma che può essere compilato in modo da mirare a tutti e tre questi runtime, e un linguaggio comune è solo la punta dell'iceberg. Java non ha uno spazio dei nomi System.Windows.Forms; ha java.swing e le classi sottostanti sono completamente differenti. Allo stesso modo, l'interoperabilità tra database di Java avviene tramite JDBC, mentre .NET ha il sotto-framework ADO.NET. Anche se avere un linguaggio comune è bello, essere fluenti in una "lingua" è tanto (in più, IMO) che parlare fluentemente delle biblioteche mirate come nella sintassi della lingua.
Qualcuno ha un esempio comune di dove le lingue indipendenti dal runtime sono state sfruttate per creare programmi veramente portabili su tutti i runtime supportati?