Spesso quando si traduce tra le lingue (sia con la traduzione del programma che con la compilazione) è una traduzione distruttiva a senso unico. La funzionalità della "porta" non è persa, ma alcuni degli intenti e delle espressioni sono.
Per esempio, il porting di un programma da Java a C è possibile, ma si perde la nozione di classi e metodi. Se quel programma dovesse essere riportato su Java, avresti bisogno di dedurre l'intento di quello che sarebbe considerato un oggetto per tornare allo stato originale. E questo è qualcosa che un computer non è bravo a fare. In questo modo si finirebbe con un programma Java che assomigliava più a un programma C con strutture dati e una grande collezione di funzioni statiche.
Considera anche un compilatore. Una volta che un linguaggio è stato compilato per assemblare o anche per dire CIL o JVM, concetti come se le affermazioni vengono perse quando vengono trasformate in rami.
A un livello più alto, esistono dei traduttori da origine a fonte, ma alcune lingue hanno caratteristiche (cioè delegati in C #) che non esistono in altri linguaggi (come Java che non ha delegati). La traduzione può avvenire, ma è leggermente distruttiva (cioè Java avrebbe bisogno di una classe wrapper per simulare i delegati).
Quindi, detto tutto questo, c'è un linguaggio che ha lo scopo di essere strutturalmente compatibile con tutte le altre lingue supportando tutte le funzionalità linguistiche di tutte le lingue?
Non mi preoccupo molto di essere in grado di tradurre completamente tra le lingue come sono con la capacità di esprimere il codice di ogni lingua nel linguaggio comune. Quindi l'obiettivo sarebbe quello di tradurre nella lingua comune e tornare alla lingua di partenza senza perdere nulla. Ad esempio: Java- > Common- > Java o LISP- > Common- > LISP