Domanda

Domanda: è un compilatore una specie di programma di numerazione Gödel?

Wikipedia ci dice che un compilatore è: "In Computing, un compilatore è un programma per computer che traduce il codice del computer scritto in un linguaggio di programmazione (la lingua di origine) in un'altra lingua (la lingua di destinazione)". https://en.wikipedia.org/wiki/compiler

Anche Wikipedia ci dice: "Una numerazione Gödel è una funzione che assegna a ciascun simbolo e formula ben formata di qualche lingua formale un numero naturale unico, chiamato il suo numero di Gödel". https://en.wikipedia.org/wiki/g%C3%B6Del_Numbering

lavoro svolto : la mia intuizione dice sì. Ecco la mia linea di pensiero: un linguaggio di programmazione è un linguaggio formale. Ogni programma è una formula ben formata e un compilatore assegna a ciascun simbolo di questa formula a una rappresentazione binaria di un numero che il computer può leggere. (Dettaglio: un computer è una macchina di Turing universale, quindi può eseguire aritmetico)

Ma, non conosco i dettagli di come funzionano i compilatori, quindi sono venuto qui per chiedere se il mio ragionamento è corretto.

È stato utile?

Soluzione

no.Considerare le seguenti due funzioni C:

int f(int a) {
    return a * 2;
}

int g(int a) {
    return a + a;
}
.

Se siamo un po 'liberali qui, entrambi sono "formula ben formata di un linguaggio formale".Eppure la maggior parte dei compilatori C con ottimizzazione attiva compila queste due funzioni nello stesso identico codice.Questo viola l'unicità di una numerazione Gödel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top