εκτελέσιμη ψευδοκώδικας;

ψήφοι
3

Είμαι προσπαθεί να καθορίσει προηγούμενης τέχνης για τα εξής ιδέα:

1) οι τύποι των χρηστών σε κάποιο κώδικα σε γλώσσα που ονομάζεται (insert_name_here)?

2) χρήστης επιλέγει μια γλώσσα προορισμού από μια λίστα γνωστών υποψηφίων εξόδου (javascript, ρουμπίνι, perl, python)?

3) ο επεξεργαστής μεταφράζεται insert_name_here σε εκτελέσιμη κώδικα στη γλώσσα προορισμού?

4) ο επεξεργαστής τρέχει στη συνέχεια τον κωδικό χρησιμοποιώντας το σχετικό κλήση συστήματος βασίζεται στην επιλεγμένη γλώσσα

Ο λόγος για τον οποίο δουλεύει αυτό είναι επειδή υπάρχει μια προκαθορισμένη 1 προς 1 χαρτογράφηση μεταξύ όλων των γλωσσών κατασκευές από insert_name_here σε όλες τις γλώσσες που υποστηρίζονται προορισμό.

( Disclaimer: .. Αυτό προφανώς δεν παράγει «κομψή» κώδικα που είναι καλά προσαρμοσμένη στη γλώσσα προορισμό Κάνει απλά μια υποτυπώδη μετάφραση που είναι εκτελέσιμη Ο σκοπός είναι να επιτρέπει στους προγραμματιστές να πάρετε μια γρήγορη-και-βρώμικο εφαρμογή των αλγορίθμων πολλές διαφορετικές γλώσσες για τις περιπτώσεις εκείνες όπου δεν αισθάνονται σαν επανεφεύρεση του τροχού, αλλά είναι απαραίτητα για οποιοδήποτε λόγο να συνεργαστεί με μια συγκεκριμένη γλώσσα για ένα συγκεκριμένο έργο.)

Μήπως αυτό υπάρχουν ήδη;

Δημοσιεύθηκε 03/12/2008 στις 22:52
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
4

Το .NET CLR έχει σχεδιαστεί έτσι ώστε C ++. Net, C # .Net, και VB.Net όλα συγκεντρώνουν στην ίδια γλώσσα μηχανής, και μπορείτε να «αποκωδικοποιήσει» που CLI πίσω σε κάθε μία από αυτές τις γλώσσες.

Ναι λοιπόν, θα έλεγα ότι υπάρχει ήδη αν και όχι ακριβώς όπως την περιγράψατε.

Απαντήθηκε 03/12/2008 στις 22:57
πηγή χρήστη

ψήφοι
2

Υπάρχουν μετατροπείς διατίθενται για διαφορετικές γλώσσες. Το πρόβλημα θα έχετε την ευκαιρία να ασχολείται με τις βιβλιοθήκες. Ενώ η αντιστοίχιση μεταξύ των δηλώσεων γλώσσα μπορεί να είναι εύκολη, βρίσκοντας αντιστοιχίες μεταξύ των λειτουργιών της βιβλιοθήκης θα είναι πολύ δύσκολο.

Δεν είμαι σίγουρος πόσο χρήσιμο αυτό το είδος της γεννήτριας κώδικα θα είναι. Γιατί θα θέλετε να γράψετε κάτι σε μια γλώσσα και αμέσως μετά το μετατρέψει σε κάτι άλλο; Μπορώ να δω το σκεπτικό για την 4η γλώσσες Gen που μετατρέπουν τα διαγράμματα ή μοντέλα σε κώδικα, αλλά δεν βλέπω πραγματικά το σημείο της προσπάθειας σας.

Απαντήθηκε 03/12/2008 στις 23:05
πηγή χρήστη

ψήφοι
2

Αυτό φαίνεται λίγο παράξενο. Αν χρησιμοποιείτε τον όρο «προηγούμενη τεχνική» στην πιο κοινή μορφή της, θα συζητάμε ένα δυνητικά κατοχυρωθεί με δίπλωμα ευρεσιτεχνίας ιδέα. Αν αυτή είναι η περίπτωση, θα πρέπει:

1 / Δημοσιεύθηκε την ιδέα, ξεκινώντας το ρολόι τρέχει για υποβολή αιτήσεων διπλωμάτων ευρεσιτεχνίας - υποθέτω, ίσως λανθασμένα, ότι είστε βασίζονται στις ΗΠΑ Άλλες χώρες μπορεί να έχουν άλλους κανόνες.

2 / είπα ολόκληρο τον πλανήτη ιδέα σας, που σημαίνει ότι είναι λίγο πολύ άχρηστο για να προσπαθήσουμε και να το δίπλωμα ευρεσιτεχνίας, αν δεν δράσουμε πολύ γρήγορα.

Αν δεν σκέφτεστε για κατοχύρωση με δίπλωμα ευρεσιτεχνίας αυτό και ήταν μόνο με τη χρήση του όρου «προηγούμενη τεχνική» σε laypersons έννοια, ζητώ συγγνώμη. Δουλεύω για μια εταιρεία που παίρνει πολύ σοβαρά τα διπλώματα ευρεσιτεχνίας και είναι διάτρητοι μέσα μας, με μεγάλη λεπτομέρεια, τι επιτρέπεται να κάνει με τις πληροφορίες πριν από την υποβολή της.

Τούτου λεχθέντος, κατοχυρωθεί με δίπλωμα ευρεσιτεχνίας ιδέες πρέπει να είναι νέα, χρήσιμα και μη-προφανείς. Θα ήθελα να πιστεύω ότι η ιδέα σας δεν θα περάσει στο τρίτο από αυτά από τη στιγμή που περιγράφουν μια γλώσσα μεταφραστής που θα έχουν την προηγούμενη τεχνική των πολλών pascal-to-c και FORTRAN-to-γ μετατροπείς εκεί έξω.

Η μία αχτίδα ελπίδας, θα είναι η δυνατότητα της ιδέας σας για να δημιουργήσει μία από τις πολλές γλώσσες εξόδου (το οποίο P2C και F2C δεν κάνει), αλλά νομίζω ότι ακόμη και ότι θα πρέπει να καλύπτονται από τους ομοίους του cross compilers (όπως gcc) που μετατρέπουν πηγή σε μία από τις πολλές διαφορετικές γλώσσες αντικειμένου.

Η IBM έχει ένα προϊόν που ονομάζεται Visual Γεννήτρια ηλικία στην οποία κώδικα σε ένα (ιδιόκτητο) γλώσσα και είναι μετατρέπονται σε COBOL / C / Java / άλλους να τρέχουν σε διαφορετικές πλατφόρμες στόχο από υπολογιστές στο μεγάλο honkin' Σύστημα z μεγάλοι υπολογιστές, έτσι δεν υπάρχει η πρώτη σας πρόβλημα (να σκεφτόμαστε κατοχύρωση με δίπλωμα ευρεσιτεχνίας μια ιδέα ότι η IBM, η μεγαλύτερη patenter στον κόσμο, χρησιμοποιεί ήδη).

Απαντήθηκε 04/12/2008 στις 00:07
πηγή χρήστη

ψήφοι
2

Τόνοι από αυτά. P2C, F2C, και η αρχική υλοποίηση s της C ++ και C Στόχος μου φαίνονται αμέσως. Από εκεί και πέρα, είναι κάπως δύσκολο να διακρίνει αυτό που περιγράφουν από κάθε compiler, ειδικά για εμάς παλιά παιδιά των οποίων οι συντάκτες παραγόμενο κώδικα ASM για ένα ενδιάμεσο represetation ούτως ή άλλως.

Απαντήθηκε 04/12/2008 στις 00:54
πηγή χρήστη

ψήφοι
3

Ναι, ένα πρόγραμμα που μετατρέπουν ένα πρόγραμμα από μια αναπαράσταση σε άλλη δεν υπάρχει. Είναι ονομάζεται «compiler».

Και στο ερώτημά σας αν αυτό είναι πάντα δυνατό: όσο γλώσσα-στόχος σας είναι τουλάχιστον τόσο ισχυρό όσο η γλώσσα-πηγή, τότε είναι δυνατόν. Έτσι, αν η γλώσσα-στόχος σας είναι Turing-πλήρης, τότε είναι πάντα δυνατό, γιατί δεν μπορεί να υπάρξει καμία γλώσσα που είναι πιο ισχυρό από μια Turing-πλήρης γλώσσα.

Ωστόσο, υπάρχει δεν χρειάζεται να είναι μια χαζή 1: 1 χαρτογράφησης.

Για παράδειγμα: το μεταγλωττιστή Microsoft Volta που συγκεντρώνει CIL bytecode σε πηγαίο κώδικα Javascript για έχει ένα πρόβλημα: .NET έχει τα θέματα, το JavaScript δεν το κάνει. Αλλά μπορείτε να εφαρμόσετε τα θέματα που με συνέχειες. Λοιπόν, το JavaScript δεν έχει συνέχειες είτε, αλλά μπορείτε να εφαρμόσετε συνέχειες με εξαιρέσεις. Έτσι, Volta μετατρέπει την CIL να CPS και στη συνέχεια εφαρμόζει CPS με εξαιρέσεις. (Νεότερες εκδόσεις της JavaScript έχει ημι-coroutines με τη μορφή των γεννητριών? Εκείνων που θα μπορούσαν επίσης να χρησιμοποιηθούν, αλλά Volta πρόκειται να εφαρμοστεί σε ένα ευρύ φάσμα των εκδόσεων JavaScript, συμπεριλαμβανομένων προφανώς JScript στον Internet Explorer.)

Απαντήθηκε 04/12/2008 στις 09:22
πηγή χρήστη

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