pseudocod runnable?

voturi
3

Sunt încercarea de a determina stadiul anterior al tehnicii pentru următoarea idee:

1) utilizatorul introduce în unele cod într-un limbaj numit (insert_name_here);

2) utilizatorul alege o limbă de destinație dintr-o listă de candidați de ieșire bine-cunoscute (javascript, rubin, perl, python);

3) procesorul traduce insert_name_here în codul executabilă în limba de destinație;

4) procesorul ruleaza apoi codul folosind apelul sistem relevant bazat pe limba aleasă

Motivul acestei lucrări se datorează faptului că există o pre-stabilită 1 până la 1 mapare între toate constructe lingvistice de la insert_name_here la toate limbile acceptate de destinație.

( Disclaimer: .. Acest lucru , evident , nu produce cod „elegant“ , care este bine adaptate la limba de destinație Se face pur și simplu o traducere rudimentar , care este executabilă Scopul este de a permite dezvoltatorilor pentru a obține o implementare murdar rapidă și-a algoritmilor în mai multe limbi diferite pentru acele cazuri în care acestea nu simt ca re-inventa roata, dar care sunt necesare pentru orice motiv pentru a lucra cu o anumită limbă pe un anumit proiect.)

Asta există deja?

Întrebat 03/12/2008 la 22:52
sursa de către utilizator
În alte limbi...                            


5 răspunsuri

voturi
4

CLR .NET este proiectat astfel încât C ++. Net, C # .Net, și toate VB.Net compila în aceeași limbă mașină, și puteți „decompila“ care CLI înapoi la oricare dintre aceste limbi.

Deci da, aș spune că există deja, deși nu exact așa cum ați descrie.

Publicat 03/12/2008 la 22:57
sursa de către utilizator

voturi
2

Sunt convertoare disponibile pentru diferite limbi. Problema pe care o avea se ocupă cu bibliotecile. În timp ce mapare între declarațiile lingvistice ar putea fi ușor, găsirea mapările între funcții de bibliotecă va fi foarte dificil.

Nu sunt foarte sigur cum util acest tip de generator de cod ar fi. De ce ai vrea să scrie ceva într-o limbă și apoi imediat converti la altceva? Pot să văd rațiunea pentru limbi Gen 4-lea, care convertesc diagrame sau modele în cod, dar eu nu văd într-adevăr punctul de efort.

Publicat 03/12/2008 la 23:05
sursa de către utilizator

voturi
2

Acest lucru pare un pic bizar. Dacă utilizați termenul „stadiul cunoscut al tehnicii“ , în forma sa cea mai comuna, despre care discutați o idee cu potențial brevetabile. În cazul în care este cazul, aveți:

1 / Publicat ideea, începând cu ceasul care rulează pe depozit de brevet de invenție - Sunt presupunând că, probabil, în mod incorect, că sunteți cu sediul în SUA Alte jurisdicții pot avea alte reguli.

2 / Ti-am spus intreaga planeta ideea ta, ceea ce înseamnă că este destul de mult inutil pentru a încerca și de brevet, el, dacă nu acționează foarte repede.

Dacă nu te gândești la brevetarea de acest lucru și au fost doar folosind termenul „stadiul cunoscut al tehnicii“, într-un sens profanii, îmi cer scuze. Eu lucrez pentru o companie care ia brevete foarte în serios și este forate în noi, în detaliu, ceea ce ne-am voie să facem cu informații înainte de depunerea.

Acestea fiind spuse, idei brevetabile trebuie să fie noi, utile și non-evidente. Mi-ar crede că ideea ta nu ar trece pe a treia dintre acestea din moment ce descrie un traducător de limbă, care ar avea stadiul tehnicii multe convertoare-to-Pascali C și Fortran-la-c acolo.

Singura licărire de speranță ar fi capacitatea de ideea ta de a genera una dintre mai multe limbi de ieșire (care P2C și F2C nu fac), dar cred chiar că ar fi acoperite de către place de compilatoare transversale (cum ar fi CGC), care transforma sursă într-una din mai multe limbi diferite ale unui obiect.

IBM are un produs numit Visual Age Generator în care codul într-o singură limbă (de proprietate) și este convertit în COBOL / C / Java / altele pentru a rula pe diferite platforme țintă de la PC-uri la honkin mare System z mainframe-uri, deci nu este prima ta problemă (gândire despre breveta o idee pe care IBM, cel mai mare patenter din lume, utilizează deja).

Publicat 04/12/2008 la 00:07
sursa de către utilizator

voturi
2

Tone de ele. P2C, F2C, precum și punerea în aplicare inițială s C ++ si Objective C să mă lovească imediat. Dincolo de asta, e un fel de greu de a distinge ceea ce descrie de orice compilator, mai ales pentru noi, cei vechi ale căror compilatoare generat codul de ASM pentru un represetation intermediar, oricum.

Publicat 04/12/2008 la 00:54
sursa de către utilizator

voturi
3

Da, un program care transforma un program de la o reprezentare la alta nu există. Se numește „compilator“.

Și la întrebarea dacă aceasta este întotdeauna posibil: atâta timp cât limba dvs. țintă este cel puțin la fel de puternic ca limba sursă, atunci este posibil. Deci, în cazul în care limba țintă este Turing-complet, atunci este întotdeauna posibil, deoarece nu poate exista nici un limbaj care este mai puternic decât un limbaj Turing-completă.

Cu toate acestea, nu trebuie să fie un mut de 1: 1 de cartografiere.

De exemplu: compilatorul Microsoft Volta care compilează CIL bytecode la sourcecode JavaScript are o problemă: .NET are fire, JavaScript nu. Dar puteți implementa fire cu continuări. Ei bine, JavaScript nu are nici continuări, dar puteți pune în aplicare continuări cu excepții. Deci, Volta transformă CIL la CPS și apoi se pune în aplicare CPS cu excepții. (Versiunile mai noi de JavaScript au semi să aibă corutine sub formă de generatoare, acestea ar putea fi, de asemenea, folosite, dar Volta este destinat să lucreze într-o gamă largă de versiuni JavaScript, inclusiv, evident, JScript în Internet Explorer.)

Publicat 04/12/2008 la 09:22
sursa de către utilizator

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