kjørbart pseudo?

stemmer
3

Jeg prøver å bestemme kjent for følgende idé:

1) brukertyper i noen kode på et språk som heter (insert_name_here);

2) brukeren velger en destinasjon språk fra en liste over kjente utgangs kandidater (javascript, rubin, Perl, Python);

3) prosessoren settes insert_name_here inn i kjørbar kode i destinasjons språk;

4) prosessoren kjører deretter koden ved hjelp av relevant system samtale basert på det valgte språket

Grunnen til at dette fungerer er fordi det er en pre-etablert 1-1 mapping mellom alle språkkonstruksjoner fra insert_name_here til alle støttede destinasjons språk.

( Disclaimer: .. Det er tydeligvis ikke produserer elegant kode som er godt tilpasset til målet språket Det gjør rett og slett en elementær oversettelse som er kjørbar Hensikten er å tillate utviklere å få en rask-and-dirty implementering av algoritmer flere forskjellige språk i de tilfellene der de ikke føler re-oppfinne hjulet, men er nødvendig uansett grunn til å jobbe med et bestemt språk på et bestemt prosjekt.)

Eksisterer dette allerede?

Publisert på 03/12/2008 klokken 21:52
kilden bruker
På andre språk...                            


5 svar

stemmer
4

.NET CLR er utformet slik at C ++. Net, C # .Net, og VB.Net alle kompilere den samme maskinen språk, og du kan "dekompilere" som CLI tilbake i ett av disse språkene.

Så ja, jeg vil si det allerede eksisterer men ikke akkurat som du beskriver.

Svarte 03/12/2008 kl. 21:57
kilden bruker

stemmer
2

Det finnes omformere tilgjengelig for ulike språk. Problemet du skal ha er å håndtere biblioteker. Mens mapping mellom språk uttalelser kan være lett, vil finne tilordninger mellom bibliotekfunksjoner være svært vanskelig.

Jeg er ikke helt sikker på hvor nyttig den type kode generator ville være. Hvorfor skulle du ønske å skrive noe på ett språk og deretter umiddelbart konvertere den til noe annet? Jeg kan se begrunnelsen for 4. gen språk som konverterer diagrammer eller modeller i koden, men jeg forstår ikke helt se poenget med din innsats.

Svarte 03/12/2008 kl. 22:05
kilden bruker

stemmer
2

Dette virker litt merkelig. Hvis du bruker begrepet "kjent" i sin vanligste form, du diskuterer en mulig patenterbar idé. Hvis det er tilfelle, må du:

1 / Publisert ideen, som starter klokken kjører på patent innlevering - Jeg antar, kanskje feilaktig, at du er basert i USA Andre jurisdiksjoner kan ha andre regler.

2 / Fortalte hele planeten ideen din, noe som betyr at det er ganske mye unyttig å prøve og patent det, med mindre du handle svært raskt.

Hvis du ikke har planer om å patentere dette, og var bare å bruke begrepet "kjent" i en lekfolk forstand, beklager jeg. Jeg jobber for et selskap som tar patenter svært alvorlig, og det er boret inn i oss, i stor detalj, hva vi har lov til å gjøre med informasjonen før innlevering.

Når det er sagt, patenterbare ideer må være ny, nyttig og ikke-åpenbare. Jeg vil tro at din idé ikke ville passere på den tredje av disse siden du beskriver et språk oversetter som ville ha den tidligere kjente av de mange Pascal-to-c og Fortran-to-c omformere der ute.

Den ene glimt av håp vil være evnen til ideen å generere en av flere output språk (som P2C og f2c ikke gjør), men jeg tror selv det ville bli dekket av slike kryss kompilatorer (som GCC) som slår kilde til en av mange forskjellige objekt språk.

IBM har et produkt som heter Visual Age Generator der du kode i en (proprietær) språk og det er konvertert til COBOL / C / Java / andre til å kjøre på ulike målgrupper plattformer fra PCer til store honkin' System z stormaskiner, så det er din første problemet (tenker på patentering en idé som IBM, den største patenter i verden, bruker allerede).

Svarte 03/12/2008 kl. 23:07
kilden bruker

stemmer
2

Tonnevis av dem. P2C, f2c, og den opprinnelige implementeringen s av C ++ og Objective C slår meg umiddelbart. Utover det, er det litt vanskelig å skille det du beskriver fra en kompilator, spesielt for oss gamle gutta som kompilatorer generert ASM koden for en mellom represetation uansett.

Svarte 03/12/2008 kl. 23:54
kilden bruker

stemmer
3

Ja, et program som forvandler et program fra en representasjon til en annen ikke eksisterer. Det kalles en "kompilator".

Og så til spørsmålet ditt om det er alltid mulig: så lenge målspråket er minst like kraftig som kildespråket, så er det mulig. Så hvis målspråket er Turing-komplett, så er det alltid mulig, fordi det kan være noen språk som er kraftigere enn en Turing-komplett språk.

Men det trenger ikke å være en dum 1: 1 mapping.

For eksempel: Microsoft Volta kompilator som kompilerer CIL bytecode til Javascript kildekode har et problem: NET har gjenger, gjør Javascript ikke. Men du kan implementere tråder med fortsettelser. Vel, Javascript ikke har fortsettelser heller, men du kan implementere fortsettelser med unntak. Så, forvandler Volta den CIL til CPS og deretter implementerer CPS med unntak. (Nyere versjoner av Java har semi coroutines i form av generatorer, de kan også anvendes, men Volta er ment for å arbeide over et bredt spekter av Javascript-versjoner, herunder selvsagt JScript i Internet Explorer).

Svarte 04/12/2008 kl. 08:22
kilden bruker

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