is my understanding correct?
Non proprio. La programmazione funzionale è più un insieme di caratteristiche originariamente ispirate al lambda calcolo che una base per un intero progetto linguistico. Alcuni linguaggi puramente funzionali potrebbero avvicinarsi, ma sospetto che debbano ancora avere delle regole che non si riferiscono direttamente al calcolo lambda. E naturalmente non tutte le lingue hanno le funzionalità richieste per la programmazione funzionale.
are there any models other than lambda calculus?
Se con ciò intendi serie di sceneggiature ispirate ad altri rami della matematica, allora assolutamente, senza dubbio. Le funzionalità di base implementate nella maggior parte delle lingue sono legate direttamente a tutti i tipi di rami specifici della matematica. Ma non tutte le funzionalità lo sono necessariamente. La programmazione orientata agli oggetti, ad esempio, è un concetto pensato per aiutare i programmatori a strutturare e modellare il codice in modo più intuitivo, evitando al contempo alcune delle insidie che le persone tendono a incorrere nella programmazione procedurale. Se ha un ramo diretto dell'analogo della matematica, non l'ho mai visto da nessuna parte.
if the languages shares the same model, can we use that to convert a
source code from one language to the other?
Bene, cosa significa "stesso modello". Seguono tutte le stesse regole, variando leggermente solo nella sintassi? Sarebbe abbastanza facile. Ma una singola regola fondamentale potrebbe rendere la traduzione l'una dell'altra molto disordinata. Tipi rigorosi vs dinamici per esempio. Come scriveresti i metodi di un oggetto JavaScript per seguire tutte le stesse regole di un oggetto Java? Altre caratteristiche come il funzionamento dello scope, o l'assenza / presenza di chiusure richiederebbe un sacco di spese generali da emulare in modo universale tra i paradigmi linguistici.
Penso che la cosa più vicina a un collegamento comune che potresti trovare tra tutte le lingue sia che alla fine tutti devono ridursi a istruzioni che possono in qualche modo essere scomposte ed eseguite in termini di codice macchina su un dato sistema (e il codice macchina varia dipende anche dall'architettura). La complessità insita nel creare un traduttore di programmazione universale sarebbe al tempo stesso faticosamente difficile, se possibile, ma anche massicciamente non riuscire a produrre codice tradotto leggibile tra le lingue senza massaggiare e librerie speciali che farebbero fallire il test 'universale'. Non sarei scioccato se qualcuno avesse dimostrato che questa impresa è tecnicamente impossibile.