pseudocodice eseguibile?

voti
3

Sto tentando di determinare la tecnica per la seguente idea:

1) utente digita un codice in un linguaggio chiamato (insert_name_here);

2) l'utente sceglie una lingua di destinazione da un elenco di candidati di uscita ben noti (javascript, rubino, Perl, Python);

3) il processore traduce insert_name_here in codice eseguibile nella lingua di destinazione;

4) il processore esegue quindi il codice utilizzando la chiamata di sistema in questione in base alla lingua scelta

Il motivo per cui funziona è perché c'è un prestabilito 1-1 mappatura tra tutti i costrutti del linguaggio da insert_name_here a tutte le lingue di destinazione supportate.

( Disclaimer: .. Questo, ovviamente, non produce codice elegante che è ben adattato a lingua di destinazione Lo fa semplicemente una traduzione rudimentale che è eseguibile Lo scopo è quello di permettere agli sviluppatori di ottenere un'implementazione rapida e-sporco di algoritmi in diverse lingue per quei casi in cui non si sentono come re-inventare la ruota, ma sono necessari per qualsiasi motivo di lavorare con una lingua specifica su un progetto specifico.)

Questo già esiste?

È pubblicato 03/12/2008 alle 22:52
fonte dall'utente
In altre lingue...                            


5 risposte

voti
4

Il CLR .NET è stato progettato in modo tale che C ++. Net, C # .Net, e VB.Net compilati correttamente allo stesso linguaggio macchina, e si può "decompilare" che CLI nuovamente a una qualsiasi di queste lingue.

Quindi sì, direi che esiste già anche se non esattamente come lei.

Risposto il 03/12/2008 a 22:57
fonte dall'utente

voti
2

Ci sono convertitori disponibili per lingue diverse. Il problema che si sta per avere a che fare con le librerie. Mentre mappatura tra istruzioni del linguaggio potrebbe essere facile, trovando mapping tra le funzioni di libreria sarà molto difficile.

Io non sono davvero sicuro di come utile che tipo di generatore di codice sarebbe. Perché si vuole scrivere qualcosa in una lingua e poi subito convertirlo in qualcosa d'altro? Posso vedere il razionale per le lingue 4th Gen che convertono i diagrammi o modelli in codice, ma io in realtà non vedere il punto del vostro sforzo.

Risposto il 03/12/2008 a 23:05
fonte dall'utente

voti
2

Questo sembra un po 'strano. Se si utilizza il termine "stato dell'arte" nella sua forma più comune, si sta discutendo un'idea potenzialmente brevettabile. Se questo è il caso, si ha:

1 / Pubblicato l'idea, a partire l'orologio in esecuzione sul deposito del brevetto - Sto assumendo, forse erroneamente, che si sta sede negli Stati Uniti Altri giurisdizioni possono avere altre regole.

2 / Told tutto il pianeta la vostra idea, il che significa che è praticamente inutile per cercare di brevetto, a meno che non si agisce molto velocemente.

Se non stai pensando di brevettare questo e sono stati semplicemente utilizzando il termine "stato dell'arte" in un certo senso laici, mi scuso. Io lavoro per una società che prende molto sul serio i brevetti e sta forato in noi, con dovizia di particolari, ciò che è permesso a che fare con le informazioni prima del deposito.

Detto questo, le idee brevettabili deve essere nuova, utile e non ovvio. Vorrei pensare che la tua idea non sarebbe passata al terzo di questi dal momento che stai descrivendo un traduttore di lingua che avrebbe stato della tecnica dei tanti convertitori Pascal-to-C e Fortran-to-c là fuori.

L'uno barlume di speranza sarebbe la capacità della vostra idea di generare una delle più lingue di uscita (che P2C e f2c non fare), ma penso anche che sarebbe coperto da artisti del calibro di compilatori cross (come gcc) che si trasformano fonte in una delle molte lingue oggetto diverso.

IBM ha un prodotto chiamato Visual Age Generator in cui il codice in una lingua (proprietario) ed è convertito in COBOL / C / Java / altri per funzionare su diverse piattaforme di destinazione dal PC al grande honkin' mainframe System z, quindi non c'è la vostra prima problema (pensando di brevettare un'idea che IBM, la più grande patenter nel mondo, sta già utilizzando).

Risposto il 04/12/2008 a 00:07
fonte dall'utente

voti
2

Tonnellate di loro. P2C, F2C, e l'implementazione s originale del C ++ e Objective C mi colpisce subito. Oltre a ciò, è una specie di difficile distinguere quello che stai descrivendo da qualsiasi compilatore, soprattutto per noi vecchietti cui compilatori generato il codice ASM per un represetation intermedia in ogni caso.

Risposto il 04/12/2008 a 00:54
fonte dall'utente

voti
3

Sì, un programma che trasforma un programma da una rappresentazione all'altra non esiste. Si chiama "compilatore".

E per quanto riguarda la tua domanda se tale è sempre possibile: a patto che la lingua di destinazione è almeno altrettanto potente come la lingua di partenza, allora è possibile. Quindi, se la vostra lingua di destinazione è Turing-complete, allora è sempre possibile, perché non ci può essere un linguaggio che è più potente di un linguaggio Turing-completo.

Tuttavia, ci non ha bisogno di essere uno stupido mappatura 1: 1.

Per esempio: il compilatore Microsoft Volta che compila CIL bytecode al codice sorgente JavaScript ha un problema: NET ha le discussioni, JavaScript non lo fa. Ma è possibile implementare le discussioni con continuazioni. Beh, JavaScript non ha continuazioni sia, ma è possibile implementare continuazioni con le eccezioni. Così, Volta trasforma il CIL per CPS e poi implementa CPS con le eccezioni. (Versioni più recenti di JavaScript sono semi-coroutine in forma di generatori; chi potrebbe essere utilizzato anche, ma Volta è destinato a lavorare in una vasta gamma di versioni JavaScript, tra cui, ovviamente, JScript in Internet Explorer.)

Risposto il 04/12/2008 a 09:22
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more