uitvoerbare pseudocode?

stemmen
3

Ik probeer om stand van de techniek voor het volgende idee te bepalen:

1) typen gebruiker een code in een taal genaamd (insert_name_here);

2) gebruiker kiest een bestemming taal uit een lijst van bekende outputkandidaten (javascript, ruby, perl, python);

3) de processor vertaalt insert_name_here in uitvoerbare code doeltaal;

4) de processor loopt dan de code met de betreffende systeem oproep op basis van de gekozen taal

De reden dat dit werkt is omdat er een vooraf vastgestelde 1-1 mapping tussen alle taalconstructies van insert_name_here naar alle ondersteunde bestemming talen.

( Disclaimer: .. Dit uiteraard produceert geen elegant code die is goed afgestemd op de taal bestemming Het doet gewoon een rudimentaire vertaling die is uitvoerbaar Het doel is om ontwikkelaars in staat om een quick-and-dirty implementatie van algoritmen in te krijgen verschillende talen voor die gevallen waarin ze niet het gevoel dat het opnieuw uitvinden van het wiel, maar zijn vereist voor welke reden dan ook te werken met een specifieke taal op een specifiek project.)

Betekent dit al?

De vraag is gesteld op 03/12/2008 om 22:52
bron van user
In andere talen...                            


5 antwoorden

stemmen
4

De .NET CLR is zodanig ontworpen dat C ++. Net, C # .Net, en VB.Net allemaal samen te stellen dezelfde machine taal, en u kunt "decompileren" dat CLI terug in één van die talen.

Dus ja, ik zou zeggen dat het al bestaat, maar niet precies zoals u beschrijft.

antwoordde op 03/12/2008 om 22:57
bron van user

stemmen
2

Er zijn converters beschikbaar voor verschillende talen. Het probleem dat u gaat hebben is het omgaan met bibliotheken. Terwijl mapping tussen taal statements gemakkelijk zou kunnen zijn, het vinden van mappings tussen functies bibliotheek zal zeer moeilijk zijn.

Ik ben niet echt zeker hoe nuttig dat soort codegenerator zou zijn. Waarom zou je iets wilt in één taal te schrijven en dan onmiddellijk omzetten in iets anders? Ik kan de reden voor 4e generatie talen die schema's of modellen om te zetten in code te zien, maar ik zie niet echt het punt van uw inspanning.

antwoordde op 03/12/2008 om 23:05
bron van user

stemmen
2

Dit lijkt een beetje bizar. Als u het gebruik van de term "stand van de techniek" in zijn meest voorkomende vorm, je bespreken van een potentieel octrooieerbaar idee. Als dat is het geval is, heb je:

1 / Gepubliceerd het idee, het starten van de klok draait op patentaanvraag - Ik neem aan, wellicht ten onrechte, dat u bent gevestigd in de Verenigde Staten in andere jurisdicties kunnen andere regels.

2 / Vertelde de hele planeet uw idee, wat betekent dat het vrijwel nutteloos om te proberen en octrooi, tenzij je erg snel handelen.

Als je niet na te denken over het patenteren van dit en waren gewoon gebruik van de term "stand van de techniek" in een leken zin, mijn excuses. Ik werk voor een bedrijf dat patenten zeer serieus neemt en het is geboord in ons, in detail, wat we mogen doen met de informatie voor het indienen.

Dat gezegd hebbende, octrooieerbaar ideeën roman, nuttige en niet voor de hand moet zijn. Ik zou denken dat uw idee niet zou overgaan op de derde van deze, omdat je een taal vertaler, die de stand van de techniek van de vele pascal-to-C en Fortran-to-c converters die er zijn je beschrijft.

De een sprankje hoop zou het vermogen van uw idee om een ​​van meerdere output talen (die p2c en f2c niet te doen) te genereren, maar ik denk zelfs dat zou worden gedekt door de wil van cross-compilers (zoals GCC), die draaien bron in een van de vele verschillende object talen.

IBM heeft een product genaamd Visual Age Generator waarin u de code in een (gesloten) taal en het wordt omgezet in COBOL / C / Java / anderen om te draaien op verschillende doelgroepen platforms van PC's tot de grote honking System z mainframes, dus er is uw eerste probleem (na te denken over het octrooieren van een idee dat IBM, het grootste patenter in de wereld, wordt al gebruikt).

antwoordde op 04/12/2008 om 00:07
bron van user

stemmen
2

Ton van hen. p2c, f2c, en de originele uitvoering s van C ++ en Objective C onmiddellijk lijkt me. Buiten dat, het is een beetje moeilijk te onderscheiden wat u beschrijft van een compiler, vooral voor ons oude jongens wiens compilers gegenereerde ASM code voor een tussentijdse represetation toch.

antwoordde op 04/12/2008 om 00:54
bron van user

stemmen
3

Ja, een programma dat een programma te transformeren van de ene voorstelling naar de andere heeft bestaan. Het heet een "compiler".

En als op uw vraag of dat altijd mogelijk is: zolang uw doeltaal is minstens zo krachtig als de brontaal, dan is het mogelijk. Dus, als uw doeltaal is Turing-compleet is, dan is het altijd mogelijk is, omdat er geen taal die is krachtiger dan een Turing-compleet taal kunnen zijn.

Echter, er hoeft niet een domme 1: 1 mapping.

Bijvoorbeeld: de Microsoft Volta compiler die compileert CIL bytecode moet JavaScript broncode heeft een probleem: NET heeft threads, JavaScript niet. Maar u kunt uitvoeren draden met voortzettingen. Nou, JavaScript niet voortzettingen ook niet, maar je kunt voortzettingen implementeren met uitzonderingen. Dus, Volta transformeert de CIL CPS en vervolgens implementeert CPS met uitzonderingen. (Nieuwere versies van Javascript hebben semi-coroutines in de vorm van generatoren, die kan ook worden gebruikt, maar Volta is bedoeld om te werken in een breed scala van JavaScript-versies, waaronder uiteraard JScript in Internet Explorer.)

antwoordde op 04/12/2008 om 09:22
bron van user

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