Lisp
Επιπλέον, κάθε μια από τις διαλέκτους μπορεί να έχει πάνω από μια υλοποιήσεις. Οι ρουτίνες συλλογής απορριμάτων που αναπτύχθηκαν από τον τότε μεταπτυχιακό φοιτητή του MIT, Daniel Edwards, έκαναν πρακτική την εκτέλεση της Lisp σε υπολογιστικά συστήματα γενικής χρήσης, αν και η απόδοση ήταν ακόμα προβληματική.Για παράδειγμα, η Common Lisp και η Scheme χρησιμοποιούν διαφορετικές λέξεις-κλειδιά για να ορίσουν συναρτήσεις. Λόγω του ότι ενδείκνυται για εφαρμογές κακο-διατυπωμένες, περίπλοκες και δυναμικές, η Lisp έχει αρχίσει ξανά να απολαμβάνει αυξημένη δημοτικότητα. Δες επίσης The evolution of Lisp , ένα άρθρο από τους Guy L.
Το 1994, η ANSI δημοσίευσε το πρότυπο της Common Lisp, ANSI X3.226-1994 Information Technology Programming Language Common Lisp. Εκείνη την περίοδο η παγκόσμια αγορά για τη Lisp ήταν πολύ μικρότερη από ότι είναι σήμερα. Έχοντας παρακμάσει στη δεκαετία 1990, η Lisp συναντά αναζωογόνηση του ενδιαφέροντος από το 2000. επεξεργασία λιστών και αναδρομή) που κατέληξαν να χρησιμοποιούνται στη Lisp. Ο αρχικός συμβολισμός του McCarthy χρησιμοποιούσε Μ-εκφράσεις που μπορούσαν να διερμηνευθούν σε S-εκφράσεις .
Ως αποτέλεσμα, οι συναρτήσεις της Lisp μπορούν να επεξεργαστούν, να μεταβληθούν, ακόμα και να δημιουργηθούν μέσα από ένα Lisp πρόγραμμα χωρίς ιδιαίτερη λεξική ανάλυση ή χρήση δυαδικού κώδικα μηχανής. Επίσης, η Common Lisp έχει δανειστεί κάποια στοιχεία από τη Scheme, όπως lexical scoping και lexical closures. Επιπλέον, οι διάλεκτοι Lisp χρησιμοποιούνται ως scripting γλώσσες σε αρκετές εφαρμογές, η πιο γνωστή εκ των οποίων είναι η Emacs Lisp στον Emacs συντάκτη κειμένου και η Autolisp στο AutoCAD. Η Lisp ήταν η πρώτη ομοεικονική γλώσσα προγραμματισμού: η βασική αναπαράσταση του κώδικα ενός προγράμματος έχει τον ίδιο τύπο λίστας που επίσης χρησιμοποιείται για τις κύριες δομές δεδομένων της γλώσσας.
Σήμερα, οι διάλεκτοι της Lisp με την περισσότερη χρήση και διάδοση είναι η Common Lisp και η Scheme. Η Lisp δημιουργήθηκε αρχικά ως μια πρακτική μαθηματική σημειολογία για προγράμματα υπολογιστών, βασισμένη στο λογισμό λάμδα του Alonzo Church. Όπως και η Fortran, η Lisp έχει αλλάξει πολύ σε σχέση με την πρώτη της εμφάνιση, με αρκετές διαλέκτους της να υπάρχουν ανά την ιστορία της.
Για παράδειγμα, μια συνάρτηση f που παίρνει τρία ορίσματα μπορεί να καλεσθεί με (f x y z). Η Lisp εφευρέθηκε από τον John McCarthy το 1958 ενώ ήταν στο MIT. Για παράδειγμα, η M-έκφραση car από τον Horace Enea και της CGOL από τον Vaughan Pratt. Δυο μακροεντολές της συμβολικής γλώσσας του IBM 704 έδωσαν το όνομά τους στις βασικές λειτουργίες για την αποδόμηση των λιστών: car (Contents of Address Register – τα περιεχόμενα του καταχωρητή διευθύνσεων) και cdr (Contents of Decrement Register – τα περιεχόμενα του καταχωρητή μειώσεων).
Οι διαλέκτοι της Lisp χρησιμοποιούν ακόμα το car και cdr (προφέρεται: ) για τις λειτουργίες που επιστρέφουν το πρώτο στοιχείο μιας λίστας, και το υπόλοιπο της λίστας, αντίστοιχα. Στα περίπου πενήντα χρόνια της ιστορίας της, η Lisp έχει γεννήσει πολλές παραλλαγές πάνω στο βασικό θέμα μιας γλώσσας με S-εκφράσεις. Ως αποτέλεσμα, τα προγράμματα σε Lisp μπορούν να διαχειρίζονται και να επεξεργάζονται πηγαίο κώδικα Lisp ως άλλη μια δομή δεδομένων.
Gabriel. Το άρθρο αυτό βασίζεται στο αντίστοιχο αρθρο της αγγλικής βικιπαίδειας. . Η Lisp χρησιμοποιήθηκε ως η υλοποίηση της γλώσσας Micro Planner που έθεσε τα θεμέλια για το διάσημο σύστημα τεχνητής νοημοσύνης SHRDLU.
Τη δεκαετία 1970, ενώ η έρευνα στην τεχνητή νοημοσύνη δημιουργούσε εμπορικές εταιρίες, η απόδοση των υπαρχόντων συστημάτων Lisp έγινε σημαντικό ζήτημα. Η Lisp ήταν δύσκολο σύστημα στο να υλοποιηθεί με τις τεχνικές μεταγλώττισης και το υλικό της δεκαετίας του 1970. και Richard P.
Σύντομα οι εξελίξεις τόσο στον τομέα του υλικού υπολογιστών όσο και στην τεχνολογία μεταγλώττισης έκαναν τις μηχανές Lisp ξεπερασμένες, πράγμα επιζήμιο για την αγορά της Lisp. Κατά τις δεκαετίες 1980 και 1990 έγινε μεγάλη προσπάθεια να ενοποιηθούν οι πολυάριθμες διάλεκτοι Lisp (κυρίως οι InterLisp, Maclisp, ZetaLisp και Franz Lisp) σε μία και μόνη γλώσσα. Έδειξε ότι με μερικούς απλούς τελεστές και ένα συμβολισμό για συναρτήσεις, μπορεί να δημηουργηθεί μια Turing-πλήρης γλώσσα για αλγορίθμους. Η Lisp υλοποιήθηκε για πρώτη φορά από τον Steve Russell σε ένα IBM 704 υπολογιστή.
Η νέα αυτή γλώσσα, η Common Lisp, ήταν ουσιαστικά ένα συμβατό υποσύνολο των διαλέκτων που αντικατέστησε. Αυτό ανέδειξε τα συστήματα μακροεντολών που επιτρέπουν στους προγραμματιστές να δημιουργήσουν νέα σύνταξη ή ακόμα και νέες μικρές γλώσσες που περιέχονται στη Lisp. Το γεγονός ότι ο κώδικας είναι απαράλλακτος από τα δεδομένα, δίνει στη Lisp μια χαρακτηριστική σύνταξη που αναγνωρίζεται εύκολα.
Ο McCarthy δημοσίευσε τη σχεδίαση της Lisp σε ένα άρθρο στο Communications of the ACM το 1960, με τίτλο Αναδρομικές Συναρτήσεις Συμβολικών Εκφράσεων και ο Υπολογισμός τους με Μηχανή, Μέρος I, ( Recursive Functions of Symbolic Expressions and Their Computation By Machine, Part I .) Το δεύτερο μέρος δεν δημοσιεύθηκε ποτέ. Ο Russell είχε διαβάσει το άρθρο του McCarthy και συνειδητοποίησε (προς έκπληξη του McCarthy) ότι η eval συνάρτηση μπορούσε να υλοποιηθεί ώς ένας ερμηνευτής για τη Lisp. Ο πρώτος πλήρης μεταγλωττιστής για Lisp, γραμμένος σε Lisp, υλοποιήθηκε το 1962 από τον Tim Hart και τον Mike Levin στο ΜΙΤ.
Ως μια από τις πρώτες γλώσσες προγραμματισμού, η Lisp πρωτοπόρησε στην εισαγωγή πολλών ιδεών στην επιστήμη υπολογιστών, όπως οι δομές δένδρων, η αυτόματη διαχείρηση αποθήκευσης δεδομένων, οι δυναμικοί τύποι, ο αντικειμενοστρεφής προγραμματισμός, και ο μεταγλωττιστής που μεταγλωττίζει τον εαυτό του. Το όνομα Lisp προέρχεται από τη φράση List Processing. Οι συνδεδεμένες λίστες είναι μία από τις σημαντικότερες δομές δεδομένων στη Lisp, και ο πηγαίος κώδικας των προγραμμάτων Lisp αποτελείται ο ίδιος απο λίστες. Νεότερες γλώσσες όπως η Java και η Python έχουν ενσωματώσει περιορισμένες εκδόσεις κάποιων στοιχείων της Lisp, αλλά αδυνατούν να δείξουν τη συνέπεια και σύμπραξη που βρίσκεται στις έννοιες της Lisp.
Το μεγαλύτερο κομμάτι της νέας δραστηριότητας συγκεντρώνεται γύρω από υλοποιήσεις της Common Lisp από το Ανοικτό λογισμικό, και συμπεριλαμβάνει την ανάπτυξη νέων φορητών βιβλιοθηκών και εφαρμογών. Πολλοί νέοι προγραμματιστές Lisp έχουν πεισθεί από συγγραφείς όπως ο Paul Graham και ο Eric S. Για παράδειγμα, υπάρχουν πάνω από δώδεκα υλοποιήσεις της Common Lisp. Οι διαφορές μεταξύ των διαλέκτων μπορεί να είναι πολύ προφανείς.
Γρήγορα εξελίχθηκε στην γλώσσα προτίμησης για έρευνα σε τεχνητή νοημοσύνη. Για μια δεδομένη διάλεκτο, όμως, όλες οι υλοποιήσεις υποστηρίζουν την ίδια βασική γλώσσα, με διαφορές στις επεκτάσεις και τις βιβλιοθήκες. Από την δημιουργία της, η Lisp συνδεόταν στενά με την ερευνητική κοινότητα της τεχνητής νοημοσύνης, ειδικά στα συστήματα PDP-10.
Steele, Jr. Αυτό οδήγησε στην δημιουργία των μηχανών Lisp: ειδικό υλικό για την εκτέλεση περιβάλλοντος και προγραμμάτων Lisp.
Εκεί εμφανίστηκε πρώτη φορά σε πιο γενική μορφή (η δομή cond.) Κληρονομήθηκε από την Algol από την οποία και έγινε δημοφιλής. Η Lisp επηρέασε πολύ τον Alan Kay, τον αρχηγό της έρευνας πάνω στη Smalltalk ενώ στη συνέχεια και η Lisp επηρεάστηκε από τη Smalltalk, υιοθετώντας στοιχεία αντικειμενοστρεφούς προγραμματισμού (κλάσσεις, εμφανίσεις, κλπ) στο τέλος της δεκαετίας 1970. Κυρίως λόγω των απαιτήσεων της σε πόρους, όσον αφορά το υλικό (συμπεριλαμβανομένου των πρώτων μικροεπεξεργαστών,) η Lisp δεν έγινε τόσο δημοφιλής έξω από την κοινότητα της τεχνητής νοημοσύνης όσο η Fortran και η C, η οποία προήλθε από την Algol. Ο Graham αναπτύσσει μια νέα διάλεκτο Lisp που λέγεται Arc. Το Practical Common Lisp του Peter Seibel, ένα εκπαιδευτικό βιβλίο που δημοσιεύτηκε το 2004, ήταν για λίγο το δεύτερο δημοφιλέστερο βιβλίο προγραμματισμού στο amazon.com. Οι δύο κύριες διάλεκτοι της Lisp που χρησιμοποιούνται σήμερα για γενικής χρήσης προγραμματισμό είναι η Common Lisp και η Scheme.
Η γλώσσα που χρησιμοποιούν οι Hart και Levin είναι πολύ πιο κοντά στο σημερινό στυλ Lisp σε σχέση με τον προηγούμενο κώδικα του McCarthy. Η Information Processing Language ήταν η πρώτη γλώσσα για AI, από το 1955 ή 1956, και ήδη περιείχε πολλές από τις ιδέες (όπως π.χ. Αρχικά προσδιορίστηκε το 1958, και είναι η δεύτερη σε ηλικία γλώσσα προγραμματισμού υψηλού επιπέδου, νεότερη μόνο από τη Fortran.
Ο μεταγλωττιστής αυτός εισήγαγε το μοντέλο σταδιακής μεταγλώττισης της Lisp, στο οποίο μεταγλωττισμένες και ερμηνευόμενες συναρτήσεις μπορούν να αναμειχθούν ελεύθερα. Η Scheme έχει ένα μινιμαλιστικότερο σχεδιασμό, με πολύ μικρότερο σύνολο λειτουργιών αλλά με κάποια επιπλέον στοιχεία υλοποίησης (όπως tail-call optimization και πλήρη υποστήριξη continuation) που δεν υπάρχουν στην Common Lisp.
Η κλήση μιας συνάρτησης γράφεται ως μια λίστα όπου το όνομα της συνάρτησης είναι πρώτο, και ακολουθούν τα ορίσματα. Αυτό γενικά θεωρείται ένα από τα βασικά πλεονεκτήματα της γλώσσας, όσον αφορά την εκφραστικότητα, και κάνει τη γλώσσα επιδεκτική σε μετακυκλικό υπολογισμό. Η πολύ διαδεδομένη δομή του if-then-else, που τώρα υποθέτουμε ως δεδομένο, προφανές και απαραίτητο στοιχείο κάθε γλώσσας προγραμματισμού, εφευρέθηκε από τον McCarthy για χρήση στη Lisp.
Raymond να ασχοληθούν με μια γλώσσα που άλλοι θεωρούν απαρχαιωμένη. Lisp ονομάζεται μια οικογένεια γλωσσών προγραμματισμού υπολογιστών με μεγάλη ιστορία και χαρακτηριστική σύνταξη με πλήρεις παρενθέσεις.
Οι νέοι αυτοί προγραμματιστές Lisp συχνά περιγράφουν τη γλώσσα ως διαφωτιστική εμπειρία και ισχυρίζονται ότι είναι αρκετά πιο παραγωγικοί από ότι σε άλλες γλώσσες. Αυτές οι γλώσσες αντιπροσωπεύουν σημαντικά διαφορετικές επιλογές στο σχεδιασμό. Η Common Lisp, προερχόμενη κυρίως από τις MacLisp, Interlisp και Lisp Machine Lisp, είναι ένα εκτεταμένο υπερσύνολο παλιότερων διαλέκτων Lisp, με ένα ογκώδες πρότυπο γλώσσας που περιλαμβάνει πολλούς ενσωματωμένους τύπους δεδομένων και συντακτικές μορφές, καθώς και ένα σύστημα αντικειμένων.
Όλος ο κώδικας του προγράμματος γράφεται ως λίστες μέσα σε παρενθέσεις.
