Πώς να δημιουργήσετε μια γλώσσα προγραμματισμού: 15 βήματα (με εικόνες)

Πίνακας περιεχομένων:

Πώς να δημιουργήσετε μια γλώσσα προγραμματισμού: 15 βήματα (με εικόνες)
Πώς να δημιουργήσετε μια γλώσσα προγραμματισμού: 15 βήματα (με εικόνες)

Βίντεο: Πώς να δημιουργήσετε μια γλώσσα προγραμματισμού: 15 βήματα (με εικόνες)

Βίντεο: Πώς να δημιουργήσετε μια γλώσσα προγραμματισμού: 15 βήματα (με εικόνες)
Βίντεο: Καθαρισμός Υπολογιστή Από Σκόνη, Εύκολα, Χωρίς Κόπο, Και Με Ασφάλεια 2024, Ενδέχεται
Anonim

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

Βήματα

Δημιουργία γλώσσας προγραμματισμού Βήμα 1
Δημιουργία γλώσσας προγραμματισμού Βήμα 1

Βήμα 1. Γνωρίστε την τεχνολογία

Δεν μπορείτε να δημιουργήσετε μια γλώσσα προγραμματισμού εάν δεν ξέρετε πώς να χρησιμοποιήσετε έναν υπολογιστή.

Δημιουργία γλώσσας προγραμματισμού Βήμα 2
Δημιουργία γλώσσας προγραμματισμού Βήμα 2

Βήμα 2. Εξοικειωθείτε με την ορολογία

Συγγραφείς συγγραφέων χρησιμοποιούν συχνά άγνωστη ορολογία. Διαβάστε τους μεταγλωττιστές πριν προχωρήσετε. Φροντίστε να γνωρίζετε όλα όσα πρέπει να γνωρίζετε.

Δημιουργία γλώσσας προγραμματισμού Βήμα 3
Δημιουργία γλώσσας προγραμματισμού Βήμα 3

Βήμα 3. Αποφασίστε τι πρόβλημα λύνει η γλώσσα σας

Αντιμετωπίζει πρόβλημα συγκεκριμένου τομέα ή είναι γλώσσα γενικού σκοπού;

Δημιουργία γλώσσας προγραμματισμού Βήμα 4
Δημιουργία γλώσσας προγραμματισμού Βήμα 4

Βήμα 4. Σκεφτείτε τη σημασιολογία της γλώσσας σας και τις έννοιές της

  • Θα επιτρέψετε την άμεση πρόσβαση του δείκτη ή όχι;
  • Ποιοι είναι οι τύποι δεδομένων της γλώσσας σας;
  • Είναι μια στατική ή δυναμική γλώσσα;
  • Ποιο είναι το μοντέλο μνήμης σας; Θα χρησιμοποιήσετε συλλέκτη σκουπιδιών ή χειροκίνητη διαχείριση μνήμης; (Εάν χρησιμοποιείτε συλλέκτη σκουπιδιών, προετοιμαστείτε να γράψετε ένα ή να προσαρμόσετε ένα υπάρχον στη γλώσσα σας.)
  • Πώς θα χειριστείτε την ταυτότητα; Θα χρησιμοποιήσετε ένα απλό μοντέλο με σπείρωμα/κλείδωμα ή κάτι πιο περίπλοκο όπως η Linda ή το μοντέλο ηθοποιού; (Από σήμερα οι υπολογιστές έχουν πολλαπλούς πυρήνες.)
  • Υπάρχουν πρωτόγονες λειτουργίες ενσωματωμένες στη γλώσσα ή όλα θα προέρχονται από μια βιβλιοθήκη;
  • Ποιο είναι το παράδειγμα ή το παράδειγμα της γλώσσας σας; Λειτουργικός? Αντικειμενοστραφής? Πρωτότυπο (όπως JavaScript); Προσανατολισμένη στην όψη; Πρότυπο προσανατολισμένο; Or κάτι εντελώς νέο;
  • Πώς θα διασυνδεθεί η γλώσσα σας με υπάρχουσες βιβλιοθήκες και γλώσσες (κυρίως Γ); Αυτό το σημείο είναι σημαντικό εάν δημιουργείτε μια γλώσσα συγκεκριμένου τομέα.
  • Τέλος, μερικές από τις απαντήσεις σε αυτές τις ερωτήσεις θα απαντηθούν στο δεύτερο βήμα και θα σας βοηθήσουν να απαντήσετε στο επόμενο βήμα.
Δημιουργία γλώσσας προγραμματισμού Βήμα 5
Δημιουργία γλώσσας προγραμματισμού Βήμα 5

Βήμα 5. Σκεφτείτε μερικές συγκεκριμένες εργασίες που κάποιος θα ήθελε να είναι σε θέση να εκτελέσει με τη γλώσσα σας

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

Δημιουργία γλώσσας προγραμματισμού Βήμα 6
Δημιουργία γλώσσας προγραμματισμού Βήμα 6

Βήμα 6. Πειραματιστείτε με ιδέες σύνταξης (το κείμενο της γλώσσας) για τα παραπάνω παραδείγματα

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

Δημιουργία γλώσσας προγραμματισμού Βήμα 7
Δημιουργία γλώσσας προγραμματισμού Βήμα 7

Βήμα 7. Γράψτε μια επίσημη γραμματική για τη σύνταξη

Δημιουργία γλώσσας προγραμματισμού Βήμα 8
Δημιουργία γλώσσας προγραμματισμού Βήμα 8

Βήμα 8. Αποφασίστε εάν η γλώσσα θα ερμηνευτεί ή θα μεταγλωττιστεί

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

Δημιουργία γλώσσας προγραμματισμού Βήμα 9
Δημιουργία γλώσσας προγραμματισμού Βήμα 9

Βήμα 9. Γράψτε τον ανιχνευτή και τον αναλυτή μπροστινού ή βρείτε ένα εργαλείο που θα σας βοηθήσει με αυτό

Επίσης, σκεφτείτε πώς ο μεταγλωττιστής/διερμηνέας θα προειδοποιήσει τον χρήστη σας για λανθασμένα προγράμματα και συντακτικά λάθη

Δημιουργία γλώσσας προγραμματισμού Βήμα 10
Δημιουργία γλώσσας προγραμματισμού Βήμα 10

Βήμα 10. Χρησιμοποιήστε τις πληροφορίες ανάλυσης για να γράψετε τον κωδικό αντικειμένου ή μια ενδιάμεση αναπαράσταση

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

Επίσης, ανάλογα με τη γλώσσα σας, μπορεί επίσης να θέλετε να δημιουργήσετε εικονικούς πίνακες δεικτών ή πίνακες πληροφοριών για τις τάξεις σας (προκειμένου να υποστηρίξετε την αντανάκλαση ή το RTTI)

Δημιουργία γλώσσας προγραμματισμού Βήμα 11
Δημιουργία γλώσσας προγραμματισμού Βήμα 11

Βήμα 11. Γράψτε τον εκτελεστή ή τη γεννήτρια κώδικα που θα συνδέσει τα πάντα μαζί

Δημιουργία γλώσσας προγραμματισμού Βήμα 12
Δημιουργία γλώσσας προγραμματισμού Βήμα 12

Βήμα 12. Γράψτε πολλά δοκιμαστικά προγράμματα για να δοκιμάσετε τη γλώσσα

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

Δημιουργία γλώσσας προγραμματισμού Βήμα 13
Δημιουργία γλώσσας προγραμματισμού Βήμα 13

Βήμα 13. Εξετάστε πώς ο χρήστης θα εντοπίσει σφάλματα στα δικά του προγράμματα

Δημιουργία γλώσσας προγραμματισμού Βήμα 14
Δημιουργία γλώσσας προγραμματισμού Βήμα 14

Βήμα 14. Εάν η γλώσσα σας χρησιμοποιεί μια τυπική βιβλιοθήκη, θα θέλετε να τη γράψετε

Μαζί με έναν συλλέκτη σκουπιδιών ή άλλα χαρακτηριστικά χρόνου εκτέλεσης εάν το χρειάζεστε.

Συγκεκριμένα, εάν γράφετε έναν μεταγλωττιστή, θα χρειαστείτε τον κωδικό που θα εκτελέσει το λειτουργικό σύστημα για να ξεκινήσει η εκτέλεση του κωδικού χρήστη (για παράδειγμα, κατανομή όλων των καθολικών μεταβλητών)

Δημιουργία γλώσσας προγραμματισμού Βήμα 15
Δημιουργία γλώσσας προγραμματισμού Βήμα 15

Βήμα 15. Δημοσιεύστε τη γλώσσα σας, μαζί με τις προδιαγραφές για αυτήν και μερικά παραδείγματα για το τι μπορείτε να κάνετε σε αυτήν

Μην ξεχάσετε να τεκμηριώσετε πώς μπορείτε να ενσωματωθείτε με υπάρχουσες βιβλιοθήκες, γλώσσες και πώς να χρησιμοποιήσετε τις δυνατότητες εκτέλεσης ή/και την τυπική βιβλιοθήκη

Βίντεο - Χρησιμοποιώντας αυτήν την υπηρεσία, ορισμένες πληροφορίες ενδέχεται να κοινοποιηθούν στο YouTube

Συμβουλές

  • Ξεκινήστε σχεδιάζοντας τη γλώσσα σας και μην γράψετε κανένα κώδικα, μέχρι να είστε ικανοποιημένοι και να έχετε απαντήσει σε όλες (ή τις περισσότερες) ερωτήσεις ή προβλήματα που σχετίζονται με το σχέδιό σας, καθώς είναι ευκολότερο να αλλάξετε το σχέδιο νωρίτερα από αργότερα.
  • Γνωρίστε την πλατφόρμα -στόχο (λειτουργικό σύστημα και βιβλιοθήκες) για τον μεταγλωττιστή/διερμηνέα σας, άλλωστε, πρόκειται να τη χρησιμοποιήσετε και να τη χειριστείτε.

Προειδοποιήσεις

  • Σκεφτείτε εάν χρειάζεστε πραγματικά μια νέα γλώσσα και τι νέα έχει η γλώσσα σας από άλλες γλώσσες (Μπορεί να είναι ένας συνδυασμός χαρακτηριστικών ή ενός μόνο χαρακτηριστικού).
  • Το να γράφεις γλώσσες είναι δύσκολο αν δεν ξέρεις τι κάνεις. Χρειάζεται επίσης πολύ εξάσκηση.
  • Προετοιμαστείτε να αφιερώσετε λίγο χρόνο στο σχεδιασμό γλωσσών, καθώς δεν θα έχετε την ευκαιρία να αλλάξετε τη γλώσσα σας αφού γράψετε τον μεταγλωττιστή και περάσετε το σημείο σχεδιασμού.
  • Μην προσπαθήσετε να βασίσετε τα χαρακτηριστικά σας σε μια ένωση πολλών γλωσσών, όπως να πείτε ότι η γλώσσα σας θα είναι μια ένωση της γλώσσας Χ, της γλώσσας Υ και της γλώσσας Ζ. Η ιστορία μας έχει δείξει ότι οι γλώσσες που δημιουργήθηκαν με αυτόν τον τρόπο δεν θα βρουν ποτέ επιτυχία, ή όλοι θα προγραμματίζουν PL/1 αντί για κάτι που βασίζεται στο C.

Συνιστάται: