Ο Paul Graham ανακοίνωσε μια νέα γλώσσα προγραμματισμού Bel

Η γλώσσα Bel είναι γραμμένη στη γλώσσα Bel.

Ο Paul Graham ανακοίνωσε μια νέα γλώσσα προγραμματισμού Bel
Το 1960, ο John McCarthy περιέγραψε τη Lisp, έναν νέο τύπο γλώσσας προγραμματισμού. Λέω «νέου τύπου» γιατί η Lisp δεν ήταν απλώς μια νέα γλώσσα, αλλά ένας νέος τρόπος περιγραφής των γλωσσών.

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

Δεν είχε σκοπό να περιγράψει μια γλώσσα προγραμματισμού με τη συνήθη έννοια - μια γλώσσα που χρησιμοποιείται για να πει στον υπολογιστή τι να κάνει. Στο έργο του το 1960, ο Lisp έγινε κατανοητός ως ένα επίσημο μοντέλο υπολογισμού παρόμοιο με τη Μηχανή Turing. Ο McCarthy δεν σκέφτηκε να το χρησιμοποιήσει σε υπολογιστές μέχρι που το πρότεινε ο Steve Russell, ο μεταπτυχιακός φοιτητής του.

Η Lisp το 1960 δεν είχε τα κοινά χαρακτηριστικά στις γλώσσες προγραμματισμού. Για παράδειγμα, δεν υπήρχαν αριθμοί, σφάλματα ή I/O. Έτσι, οι άνθρωποι που χρησιμοποιούσαν το Lisp ως βάση για τις γλώσσες που χρησιμοποιούνται για τον προγραμματισμό των υπολογιστών έπρεπε να προσθέσουν μόνοι τους αυτές τις δυνατότητες. Και αυτό το έκαναν εγκαταλείποντας την αξιωματική προσέγγιση.

Έτσι, η ανάπτυξη του Lisp προχώρησε σε δύο - και φαινομενικά αρκετά ανεξάρτητα - στάδια: ένα επίσημο στάδιο, που εισήχθη σε μια εργασία του 1960, και ένα στάδιο υλοποίησης, στο οποίο η γλώσσα προσαρμόστηκε και επεκτάθηκε για να εκτελείται σε υπολογιστές. Η κύρια εργασία, εάν μετρηθεί με τον αριθμό των ευκαιριών που υλοποιήθηκαν, έλαβε χώρα στο στάδιο της υλοποίησης. Το Lisp από το 1960, μεταφρασμένο σε Common Lisp, περιέχει μόνο 53 γραμμές. Κάνει μόνο ό,τι είναι απαραίτητο για να ερμηνεύσει τις εκφράσεις. Όλα τα άλλα προστέθηκαν στο στάδιο της υλοποίησης.

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

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

Θέλω να είμαι ξεκάθαρος για το τι είναι το Bel και τι δεν είναι. Αν και έχει πολλά περισσότερα χαρακτηριστικά από το Lisp του 1960 του McCarthy, το Bel εξακολουθεί να είναι ένα προϊόν στην επίσημη φάση του. Όπως και η Lisp, που περιγράφεται σε ένα έγγραφο του 1960, δεν είναι μια γλώσσα που μπορείτε να χρησιμοποιήσετε για να προγραμματίσετε. Κυρίως γιατί, όπως και η Lisp του McCarthy, δεν ενδιαφέρεται για την αποτελεσματικότητα. Όταν προσθέτω κάτι στο Bel, περιγράφω την έννοια της προσθήκης χωρίς να προσπαθώ να παράσχω μια αποτελεσματική υλοποίηση.

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

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

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

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

Συνέχεια περιγραφής της γλώσσας εδώ.

Ευχαριστώ για τη μετάφραση: Denis Mitropolsky

PS

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο