tl; dr : parole diverse per la stessa cosa in diverse comunità / circostanze.
Il processo di traduzione di un programma da una lingua A in un'altra lingua B (o anche la stessa lingua) è chiamato compilation e il programma che esegue questo processo è chiamato compiler .
Nota: alcune persone usano il termine compilation se B è percepito come livello inferiore a A . Alcune persone sono ancora più rigide e chiamano la compilation solo se B è una sorta di linguaggio di una macchina binaria.
Tuttavia, ci sono alcuni termini specializzati che vengono utilizzati in alcune circostanze.
Se A == B , il processo viene talvolta definito ottimizzazione , offuscamento , minimizzazione o pretty-printing , a seconda dell'obiettivo del processo.
Se A è percepito come inferiore a B , a volte viene chiamato decompilazione . (E se A è una forma di codice di una macchina binaria e B è un linguaggio assembly, viene chiamato smontaggio ).
Se A è un linguaggio assembly e B è una forma di codice macchina binario, si chiama assembly .
Se A e B sono all'incirca allo stesso livello di astrazione e specialmente se il risultante B programma è destinato a essere umano- leggibile e idiomatico, si chiama translation o traduzione source-to-source .
Se A è una sorta di linguaggio macro o modello, potrebbe essere chiamato espansione .
Il termine sintesi è specifico dell'ingegneria elettronica e si riferisce alla sintesi di un sistema elettronico da un modello matematico, in contrasto con l'approccio più tradizionale dell'ingegneria di un sistema primo e più tardi che lo modella matematicamente. (Penso che il termine sia anche usato in Model-Driven Development in analogia con l'elettronica.)