Domanda

Molti linguaggi di programmazione condividono caratteristiche generiche e anche abbastanza universali. Ad esempio, se confrontato Java, VB6, .NET, PHP, Python, allora si dovrebbe trovare le funzioni comuni come strutture di controllo, la manipolazione numerica e stringhe, ecc

Cosa è stato fatto per definire queste funzioni in un meta-linguaggio (o indipendente dal linguaggio) livello?

UML offre un riferimento descrittivo di software in ogni aspetto, ma l'attenzione del mondo reale sembra essere processi di dati. È UML rilevante?

Non sto chiedendo: "Perché non abbiamo un unico linguaggio che sostituisce la pletora attuali." Abbiamo bisogno di molti strumenti diversi (almeno in questo eon).

Non sto chiedendo che tutte le lingue in forma di un modello - il montaggio vs. linguaggi compilati sono abbastanza diversi per far sì che irrealizzabile (e alcune persone chiamare un linguaggio HTML, anche se non sarebbe). Ogni tentativo inizierebbe con una portata correttamente stretto. In linea con questo, non mi aspetto il modello per coprire anche una piccola selezione con piena validità.

mi aspetto però che un tale modello potrebbe essere usato per trasposizione da una lingua all'altra (con gli obiettivi limitati - si pensi traduzione jist).

È stato utile?

Soluzione

Quello che stai descrivendo suona come il semantica formale di linguaggi di programmazione . Ci sono una varietà di approcci e ognuno darà un modo per specificare formalmente il significato di un programma in un linguaggio di programmazione. In alcuni casi, questa specifica è essenzialmente una traduzione in un'altra lingua, come lambda calcolo, o la compilazione di una macchina astratta formalmente indicato come secd.

C'è tanto lavoro qui è difficile scegliere un riferimento specifico. Ma spero di averti dato alcune parole chiave utili per continuare la ricerca.

Altri suggerimenti

Ci sono stati molti tentativi di questo, ma nessuno ha avuto molto successo. La prima Sono a conoscenza è UNCOL più di 50 anni fa.

Hai dato un elenco di lingue che hanno molto in comune perché sono molto simili - sono tutte le lingue procedurali con radici comuni e alcune estensioni OO gettato in, in modo che non è troppo da aspettarselo. Se si inizia a guardare diverse lingue come LISP, Haskell, Erlang, prologo, o anche SQL si inizia a vedere le cose molto diverse.

UML è in genere utilizzato per definire algoritmi / codice in termini più semplici prima di passare al codice vero e proprio.

Per rispondere a quello che sto indovinando essere la tua domanda, c'è già un insieme definito di parti necessarie di lingue, mentre, per se, altro ... Sarà questo mai essere impostato come uno standard, o messi in una libreria di base che viene utilizzato da tutti i linguaggi:. No, questo è perché i diversi sviluppatori di lingue come farlo se stessi

Credo che il più vicino si può arrivare a questo senza perdita di generalità è una macchina di Turing, che non è molto utile ai fini pratici. Ma se si consente Turing linguaggi macchina di essere "etichettati" e riutilizzato, si potrebbe costruire i concetti che è necessario, lavorando da basso ad alto livello.

Credo che MOF è il linguaggio universale. È possibile ad esempio creare diagrammi UML da MOF tramite un metamodello UML. Se si salvano queste informazioni metamodel in xmi quindi è possibile salvare ciò che mai informazioni necessarie e ancor più che in qualsiasi lingua. XMI semantica è così ricco che non v'è alcun limite al suo utilizzo. Se si esegue il mapping UML XMI sulla cima di una sincronizzazione diretta con metamodello MOF allora questo è per me il linguaggio universale.

L'autore di pattern Calcolo sembra proporre un modello così universale. Mi aspetto che si rivelerà essere altrettanto utile come i precedenti tentativi di definire un modello universale, vale a dire, buona in parti ma non è l'ultima parola.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top