(Translated by https://www.hiragana.jp/)
Lisp - Βικιπαίδεια

Lisp

γλώσσα προγραμματισμού

Lisp ονομάζεται μみゅーιいおたαあるふぁ οικογένεια γλωσσών προγραμματισμού υπολογιστών μみゅーεいぷしろん μεγάλη ιστορία κかっぱαあるふぁιいおた χαρακτηριστική σύνταξη μみゅーεいぷしろん πλήρεις παρενθέσεις. Αρχικά προσδιορίστηκε τたうοおみくろん 1958, κかっぱαあるふぁιいおた είναι ηいーた δεύτερη σしぐまεいぷしろん ηλικία γλώσσα προγραμματισμού υψηλού επιπέδου, νεότερη μόνο από τたうηいーた Fortran. Όπως κかっぱαあるふぁιいおた ηいーた Fortran, ηいーた Lisp έχει αλλάξει πολύ σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうηいーたνにゅー πρώτη της εμφάνιση, μみゅーεいぷしろん αρκετές διαλέκτους της νにゅーαあるふぁ υπάρχουν ανά τたうηいーたνにゅー ιστορία της. Σήμερα, οおみくろんιいおた διάλεκτοι της Lisp μみゅーεいぷしろん τたうηいーたνにゅー περισσότερη χρήση κかっぱαあるふぁιいおた διάδοση είναι ηいーた Common Lisp κかっぱαあるふぁιいおた ηいーた Scheme.

Ηいーた Lisp δημιουργήθηκε αρχικά ως μみゅーιいおたαあるふぁ πρακτική μαθηματική σημειολογία γがんまιいおたαあるふぁ προγράμματα υπολογιστών, βασισμένη σしぐまτたうοおみくろん λογισμό λάμδα τたうοおみくろんυうぷしろん Alonzo Church. Γρήγορα εξελίχθηκε σしぐまτたうηいーたνにゅー γλώσσα προτίμησης γがんまιいおたαあるふぁ έρευνα σしぐまεいぷしろん τεχνητή νοημοσύνη. Ως μみゅーιいおたαあるふぁ από τις πρώτες γλώσσες προγραμματισμού, ηいーた Lisp πρωτοπόρησε σしぐまτたうηいーたνにゅー εισαγωγή πολλών ιδεών σしぐまτたうηいーたνにゅー επιστήμη υπολογιστών, όπως οおみくろんιいおた δομές δένδρων, ηいーた αυτόματη διαχείριση αποθήκευσης δεδομένων, οおみくろんιいおた δυναμικοί τύποι, οおみくろん αντικειμενοστρεφής προγραμματισμός, κかっぱαあるふぁιいおた οおみくろん μεταγλωττιστής πぱいοおみくろんυうぷしろん μεταγλωττίζει τたうοおみくろんνにゅー εαυτό τたうοおみくろんυうぷしろん.

Τたうοおみくろん όνομα Lisp προέρχεται από τたうηいーた φράση "List Processing". Οおみくろんιいおた συνδεδεμένες λίστες είναι μία από τις σημαντικότερες δομές δεδομένων σしぐまτたうηいーた Lisp, κかっぱαあるふぁιいおた οおみくろん πηγαίος κώδικας τたうωおめがνにゅー προγραμμάτων Lisp αποτελείται οおみくろん ίδιος από λίστες. Ως αποτέλεσμα, τたうαあるふぁ προγράμματα σしぐまεいぷしろん Lisp μπορούν νにゅーαあるふぁ διαχειρίζονται κかっぱαあるふぁιいおた νにゅーαあるふぁ επεξεργάζονται πηγαίο κώδικα Lisp ως άλλη μみゅーιいおたαあるふぁ δομή δεδομένων. Αυτό ανέδειξε τたうαあるふぁ συστήματα μακροεντολών πぱいοおみくろんυうぷしろん επιτρέπουν στους προγραμματιστές νにゅーαあるふぁ δημιουργήσουν νέα σύνταξη ή ακόμα κかっぱαあるふぁιいおた νέες "μικρές γλώσσες" πぱいοおみくろんυうぷしろん περιέχονται σしぐまτたうηいーた Lisp.

Τたうοおみくろん γεγονός ότι οおみくろん κώδικας είναι απαράλλακτος από τたうαあるふぁ δεδομένα, δίνει σしぐまτたうηいーた Lisp μみゅーιいおたαあるふぁ χαρακτηριστική σύνταξη πぱいοおみくろんυうぷしろん αναγνωρίζεται εύκολα. Όλος οおみくろん κώδικας τたうοおみくろんυうぷしろん προγράμματος γράφεται ως λίστες μέσα σしぐまεいぷしろん παρενθέσεις. Ηいーた κλήση μιας συνάρτησης γράφεται ως μみゅーιいおたαあるふぁ λίστα όπου τたうοおみくろん όνομα της συνάρτησης είναι πρώτο, κかっぱαあるふぁιいおた ακολουθούν τたうαあるふぁ ορίσματα. Γがんまιいおたαあるふぁ παράδειγμα, μみゅーιいおたαあるふぁ συνάρτηση f πぱいοおみくろんυうぷしろん παίρνει τρία ορίσματα μπορεί νにゅーαあるふぁ καλεσθεί μみゅーεいぷしろん (f x y z).

Ηいーた δημιουργία της Lisp

Επεξεργασία

Ηいーた Lisp εφευρέθηκε από τたうοおみくろんνにゅー Τたうζぜーたοおみくろんνにゅー Μακάρθι τたうοおみくろん 1958 ενώ ήταν σしぐまτたうοおみくろん MIT. Οおみくろん Μακάρθι δημοσίευσε τたうηいーた σχεδίαση της Lisp σしぐまεいぷしろん ένα άρθρο σしぐまτたうοおみくろん Communications of the ACM τたうοおみくろん 1960, μみゅーεいぷしろん τίτλο Αναδρομικές Συναρτήσεις Συμβολικών Εκφράσεων κかっぱαあるふぁιいおた οおみくろん Υπολογισμός τους μみゅーεいぷしろん Μηχανή, Μέρος I, ("Recursive Functions of Symbolic Expressions and Their Computation By Machine, Part I".[1]) Τたうοおみくろん δεύτερο μέρος δでるたεいぷしろんνにゅー δημοσιεύθηκε ποτέ. Έδειξε ότι μみゅーεいぷしろん μερικούς απλούς τελεστές κかっぱαあるふぁιいおた ένα συμβολισμό γがんまιいおたαあるふぁ συναρτήσεις, μπορεί νにゅーαあるふぁ δημιουργηθεί μみゅーιいおたαあるふぁ Turing-πλήρης γλώσσα γがんまιいおたαあるふぁ αλγορίθμους.

Ηいーた Lisp υλοποιήθηκε γがんまιいおたαあるふぁ πρώτη φορά από τたうοおみくろんνにゅー Steve Russell σしぐまεいぷしろん ένα IBM 704 υπολογιστή. Οおみくろん Russell είχε διαβάσει τたうοおみくろん άρθρο τたうοおみくろんυうぷしろん McCarthy κかっぱαあるふぁιいおた συνειδητοποίησε (προς έκπληξη τたうοおみくろんυうぷしろん McCarthy) ότι ηいーた eval συνάρτηση μπορούσε νにゅーαあるふぁ υλοποιηθεί ως ένας ερμηνευτής γがんまιいおたαあるふぁ τたうηいーた Lisp.

Οおみくろん πρώτος πλήρης μεταγλωττιστής γがんまιいおたαあるふぁ Lisp, γραμμένος σしぐまεいぷしろん Lisp, υλοποιήθηκε τたうοおみくろん 1962 από τたうοおみくろんνにゅー Tim Hart κかっぱαあるふぁιいおた τたうοおみくろんνにゅー Mike Levin σしぐまτたうοおみくろん ΜみゅーΙいおたΤたう. [2] Οおみくろん μεταγλωττιστής αυτός εισήγαγε τたうοおみくろん μοντέλο σταδιακής μεταγλώττισης της Lisp, σしぐまτたうοおみくろん οποίο μεταγλωττισμένες κかっぱαあるふぁιいおた ερμηνευόμενες συναρτήσεις μπορούν νにゅーαあるふぁ αναμειχθούν ελεύθερα. Ηいーた γλώσσα πぱいοおみくろんυうぷしろん χρησιμοποιούν οおみくろんιいおた Hart κかっぱαあるふぁιいおた Levin είναι πολύ πぱいιいおたοおみくろん κοντά σしぐまτたうοおみくろん σημερινό σしぐまτたうυうぷしろんλらむだ Lisp σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろんνにゅー προηγούμενο κώδικα τたうοおみくろんυうぷしろん McCarthy.

Συμπτώσεις σしぐまτたうηいーたνにゅー πρώιμη ιστορία

Επεξεργασία

Ηいーた Information Processing Language ήταν ηいーた πρώτη γλώσσα γがんまιいおたαあるふぁ AI, από τたうοおみくろん 1955 ή 1956, κかっぱαあるふぁιいおた ήδη περιείχε πολλές από τις ιδέες (όπως πぱい.χかい. επεξεργασία λιστών κかっぱαあるふぁιいおた αναδρομή) πぱいοおみくろんυうぷしろん κατέληξαν νにゅーαあるふぁ χρησιμοποιούνται σしぐまτたうηいーた Lisp.

Οおみくろん αρχικός συμβολισμός τたうοおみくろんυうぷしろん McCarthy χρησιμοποιούσε "Μみゅー-εκφράσεις" πぱいοおみくろんυうぷしろん μπορούσαν νにゅーαあるふぁ διερμηνευθούν σしぐまεいぷしろん "S-εκφράσεις". Γがんまιいおたαあるふぁ παράδειγμα, ηいーた M-έκφραση car[cons[A,B]] αντιστοιχεί σしぐまτたうηいーたνにゅー S-έκφραση (car (cons A B)). Όταν υλοποιήθηκε ηいーた Lisp, οおみくろんιいおた προγραμματιστές γρήγορα επέλεξαν νにゅーαあるふぁ χρησιμοποιούν S-εκφράσεις κかっぱαあるふぁιいおた οおみくろんιいおた M-εκφράσεις εγκαταλείφθηκαν. Οおみくろんιいおた M-εκφράσεις επανήλθαν σしぐまτたうοおみくろん προσκήνιο ξανά μみゅーεいぷしろん τις ακαρπες προσπάθειες της MLISP[3] από τたうοおみくろんνにゅー Horace Enea κかっぱαあるふぁιいおた της CGOL από τたうοおみくろんνにゅー Vaughan Pratt.

Δでるたυうぷしろんοおみくろん μακροεντολές της συμβολικής γλώσσας τたうοおみくろんυうぷしろん IBM 704 έδωσαν τたうοおみくろん όνομά τους στις βασικές λειτουργίες γがんまιいおたαあるふぁ τたうηいーたνにゅー αποδόμηση τたうωおめがνにゅー λιστών: car (Contents of Address Register – τたうαあるふぁ περιεχόμενα τたうοおみくろんυうぷしろん καταχωρητή διευθύνσεων) κかっぱαあるふぁιいおた cdr (Contents of Decrement Register – τたうαあるふぁ περιεχόμενα τたうοおみくろんυうぷしろん καταχωρητή μειώσεων). Οおみくろんιいおた διαλέκτοι της Lisp χρησιμοποιούν ακόμα τたうοおみくろん car κかっぱαあるふぁιいおた cdr (προφέρεται: [[kɑr]] and [['kʊdər]]) γがんまιいおたαあるふぁ τις λειτουργίες πぱいοおみくろんυうぷしろん επιστρέφουν τたうοおみくろん πρώτο στοιχείο μιας λίστας, κかっぱαあるふぁιいおた τたうοおみくろん υπόλοιπο της λίστας, αντίστοιχα.

Γενεαλογία κかっぱαあるふぁιいおた παραλλαγές

Επεξεργασία

Σしぐまτたうαあるふぁ περίπου πενήντα χρόνια της ιστορίας της, ηいーた Lisp έχει γεννήσει πολλές παραλλαγές πάνω σしぐまτたうοおみくろん βασικό θέμα μιας γλώσσας μみゅーεいぷしろん S-εκφράσεις. Επιπλέον, κάθε μみゅーιいおたαあるふぁ από τις διαλέκτους μπορεί νにゅーαあるふぁ έχει πάνω από μみゅーιいおたαあるふぁ υλοποιήσεις. Γがんまιいおたαあるふぁ παράδειγμα, υπάρχουν πάνω από δώδεκα υλοποιήσεις της Common Lisp.

Οおみくろんιいおた διαφορές μεταξύ τたうωおめがνにゅー διαλέκτων μπορεί νにゅーαあるふぁ είναι πολύ προφανείς. Γがんまιいおたαあるふぁ παράδειγμα, ηいーた Common Lisp κかっぱαあるふぁιいおた ηいーた Scheme χρησιμοποιούν διαφορετικές λέξεις-κλειδιά γがんまιいおたαあるふぁ νにゅーαあるふぁ ορίσουν συναρτήσεις. Γがんまιいおたαあるふぁ μみゅーιいおたαあるふぁ δεδομένη διάλεκτο, όμως, όλες οおみくろんιいおた υλοποιήσεις υποστηρίζουν τたうηいーたνにゅー ίδια βασική γλώσσα, μみゅーεいぷしろん διαφορές στις επεκτάσεις κかっぱαあるふぁιいおた τις βιβλιοθήκες.

Διάλεκτοι ιστορικής αξίας

Επεξεργασία
  • LISP 1.5 [2]Ηいーた πρώτη έκδοση μみゅーεいぷしろん ευρεία διανομή, αναπτύχθηκε από τたうοおみくろんνにゅー McCarthy κかっぱαあるふぁιいおた άλλους σしぐまτたうοおみくろん MIT. Ονομάστηκε έτσι επειδή περιέχει αρκετές βελτιώσεις σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろんνにゅー αρχικό ερμηνευτή της "LISP 1," αλλά χωρίς νにゅーαあるふぁ απαιτεί βασική αναδιοργάνωση, όπως θしーたαあるふぁ έκανε ηいーた προγραμματιζόμενη LISP 2. (Ηいーた LISP 2 χρησιμοποιούσε σύνταξη βασισμένη σしぐまεいぷしろん M-εκφράσεις κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー χρησιμοποιήθηκε ευρέως.)
  • Stanford LISP 1.6 [3]Ηいーた διάδοχος της LISP 1.5, αναπτύχθηκε σしぐまτたうοおみくろん Stanford AI Lab, κかっぱαあるふぁιいおた εξαπλώθηκε πολύ σしぐまτたうαあるふぁ συστήματα PDP-10 τたうαあるふぁ οποία έτρεχαν τたうοおみくろん λειτουργικό σύστημα TOPS-10. Ξεπεράστηκε από τις Maclisp κかっぱαあるふぁιいおた InterLisp.
  • Maclisp [4] – αναπτύχθηκε γがんまιいおたαあるふぁ τたうοおみくろん Project MAC τたうοおみくろんυうぷしろん MIT (άσχετο μみゅーεいぷしろん τたうοおみくろん Macintosh της Apple κかっぱαあるふぁιいおた μみゅーεいぷしろん τたうοおみくろんνにゅー McCarthy), κかっぱαあるふぁιいおた είναι άμεσος απόγονος της LISP 1.5. Έτρεχε σしぐまεいぷしろん PDP-10 κかっぱαあるふぁιいおた Multics συστήματα.
  • InterLisp [5] – αναπτύχθηκε σしぐまτたうοおみくろん BBN γがんまιいおたαあるふぁ συστήματα PDP-10 μみゅーεいぷしろん τたうοおみくろん Tenex λειτουργικό σύστημα, κかっぱαあるふぁιいおた αργότερα υιοθετήθηκε ως Lisp της "δυτικής ακτής" γがんまιいおたαあるふぁ μηχανές Xerox Lisp. Μみゅーιいおたαあるふぁ μικρή έκδοση μみゅーεいぷしろん τたうοおみくろん όνομα "InterLISP 65" δημοσιεύθηκε μみゅーεいぷしろん τたうηいーた γραμμή υπολογιστών της Atari πぱいοおみくろんυうぷしろん βασιζόταν σしぐまτたうοおみくろん 6502. Γがんまιいおたαあるふぁ αρκετό καιρό ηいーた MacLisp κかっぱαあるふぁιいおた ηいーた InterLisp ήταν ανταγωνιστές.
  • Franz Lisp – αρχικά μみゅーιいおたαあるふぁ απόπειρα τたうοおみくろんυうぷしろん Πανεπιστημίου της Καλιφόρνιας, Μπέρκλεϊ, αργότερα αναπτύχθηκε από τたうηいーた Franz Inc. Τたうοおみくろん όνομα αποτελεί χιουμοριστικό λογοπαίγνιο τたうοおみくろんυうぷしろん 'Φραντς Λらむだιいおたσしぐまτたう'.
  • ZetaLisp – χρησιμοποιήθηκε σしぐまτたうαあるふぁ Lisp machine, άμεσος απόγονος της MacLisp.
  • EuLisp – απόπειρα νにゅーαあるふぁ αναπτυχθεί μみゅーιいおたαあるふぁ νέα, αποδοτική κかっぱαあるふぁιいおた "καθαρή" Lisp.
  • ISLisp – απόπειρα νにゅーαあるふぁ αναπτυχθεί μみゅーιいおたαあるふぁ νέα, αποδοτική κかっぱαあるふぁιいおた "καθαρή" Lisp. Καθορίστηκε σしぐまαあるふぁνにゅー πρότυπο.
  • IEEE Scheme – IEEE standard, 1178-1990 (R1995)
  • ANSI Common Lisp – ως επί τたうοおみくろん πλείστον μみゅーιいおたαあるふぁ καθαρή έκδοση της ZetaLisp πぱいοおみくろんυうぷしろん εμπεριείχε τたうοおみくろん CLOS.

Lisp κかっぱαあるふぁιいおた Τεχνητή Νοημοσύνη

Επεξεργασία

Από τたうηいーたνにゅー δημιουργία της, ηいーた Lisp συνδεόταν στενά μみゅーεいぷしろん τたうηいーたνにゅー ερευνητική κοινότητα της τεχνητής νοημοσύνης, ειδικά σしぐまτたうαあるふぁ συστήματα PDP-10.[4] Ηいーた Lisp χρησιμοποιήθηκε ως ηいーた υλοποίηση της γλώσσας Micro Planner πぱいοおみくろんυうぷしろん έθεσε τたうαあるふぁ θεμέλια γがんまιいおたαあるふぁ τたうοおみくろん διάσημο σύστημα τεχνητής νοημοσύνης SHRDLU. Τたうηいーた δεκαετία 1970, ενώ ηいーた έρευνα σしぐまτたうηいーたνにゅー τεχνητή νοημοσύνη δημιουργούσε εμπορικές εταιρείες, ηいーた απόδοση τたうωおめがνにゅー υπαρχόντων συστημάτων Lisp έγινε σημαντικό ζήτημα.

Ηいーた Lisp ήταν δύσκολο σύστημα σしぐまτたうοおみくろん νにゅーαあるふぁ υλοποιηθεί μみゅーεいぷしろん τις τεχνικές μεταγλώττισης κかっぱαあるふぁιいおた τたうοおみくろん υλικό της δεκαετίας τたうοおみくろんυうぷしろん 1970. Οおみくろんιいおた ρουτίνες συλλογής απορριμάτων πぱいοおみくろんυうぷしろん αναπτύχθηκαν από τたうοおみくろんνにゅー τότε μεταπτυχιακό φοιτητή τたうοおみくろんυうぷしろん MIT, Daniel Edwards, έκαναν πρακτική τたうηいーたνにゅー εκτέλεση της Lisp σしぐまεいぷしろん υπολογιστικά συστήματα γενικής χρήσης, αあるふぁνにゅー κかっぱαあるふぁιいおた ηいーた απόδοση ήταν ακόμα προβληματική. Αυτό οδήγησε σしぐまτたうηいーたνにゅー δημιουργία τたうωおめがνにゅー μηχανών Lisp: ειδικό υλικό γがんまιいおたαあるふぁ τたうηいーたνにゅー εκτέλεση περιβάλλοντος κかっぱαあるふぁιいおた προγραμμάτων Lisp. Σύντομα οおみくろんιいおた εξελίξεις τόσο σしぐまτたうοおみくろんνにゅー τομέα τたうοおみくろんυうぷしろん υλικού υπολογιστών όσο κかっぱαあるふぁιいおた σしぐまτたうηいーたνにゅー τεχνολογία μεταγλώττισης έκαναν τις μηχανές Lisp ξεπερασμένες, πράγμα επιζήμιο γがんまιいおたαあるふぁ τたうηいーたνにゅー αγορά της Lisp.

Κατά τις δεκαετίες 1980 κかっぱαあるふぁιいおた 1990 έγινε μεγάλη προσπάθεια νにゅーαあるふぁ ενοποιηθούν οおみくろんιいおた πολυάριθμες διάλεκτοι Lisp (κυρίως οおみくろんιいおた InterLisp, Maclisp, ZetaLisp κかっぱαあるふぁιいおた Franz Lisp) σしぐまεいぷしろん μία κかっぱαあるふぁιいおた μόνη γλώσσα. Ηいーた νέα αυτή γλώσσα, ηいーた Common Lisp, ήταν ουσιαστικά ένα συμβατό υποσύνολο τたうωおめがνにゅー διαλέκτων πぱいοおみくろんυうぷしろん αντικατέστησε. Τたうοおみくろん 1994, ηいーた ANSI δημοσίευσε τたうοおみくろん πρότυπο της Common Lisp, "ANSI X3.226-1994 Information Technology Programming Language Common Lisp." Εκείνη τたうηいーたνにゅー περίοδο ηいーた παγκόσμια αγορά γがんまιいおたαあるふぁ τたうηいーた Lisp ήταν πολύ μικρότερη από ότι είναι σήμερα.

Ηいーた Lisp σήμερα

Επεξεργασία

Έχοντας παρακμάσει σしぐまτたうηいーた δεκαετία 1990, ηいーた Lisp συναντά αναζωογόνηση τたうοおみくろんυうぷしろん ενδιαφέροντος από τたうοおみくろん 2000. Τたうοおみくろん μεγαλύτερο κομμάτι της νέας δραστηριότητας συγκεντρώνεται γύρω από υλοποιήσεις της Common Lisp από τたうοおみくろん Ανοικτό λογισμικό, κかっぱαあるふぁιいおた συμπεριλαμβάνει τたうηいーたνにゅー ανάπτυξη νέων φορητών βιβλιοθηκών κかっぱαあるふぁιいおた εφαρμογών.

Πολλοί νέοι προγραμματιστές Lisp έχουν πεισθεί από συγγραφείς όπως οおみくろん Paul Graham κかっぱαあるふぁιいおた οおみくろん Eric S. Raymond νにゅーαあるふぁ ασχοληθούν μみゅーεいぷしろん μみゅーιいおたαあるふぁ γλώσσα πぱいοおみくろんυうぷしろん άλλοι θεωρούν απαρχαιωμένη. Οおみくろんιいおた νέοι αυτοί προγραμματιστές Lisp συχνά περιγράφουν τたうηいーた γλώσσα ως διαφωτιστική εμπειρία κかっぱαあるふぁιいおた ισχυρίζονται ότι είναι αρκετά πぱいιいおたοおみくろん παραγωγικοί από ότι σしぐまεいぷしろん άλλες γλώσσες.[5] Οおみくろん Graham αναπτύσσει μみゅーιいおたαあるふぁ νέα διάλεκτο Lisp πぱいοおみくろんυうぷしろん λέγεται Arc.

Τたうοおみくろん Practical Common Lisp τたうοおみくろんυうぷしろん Peter Seibel, ένα εκπαιδευτικό βιβλίο πぱいοおみくろんυうぷしろん δημοσιεύτηκε τたうοおみくろん 2004, ήταν γがんまιいおたαあるふぁ λίγο τたうοおみくろん δεύτερο δημοφιλέστερο βιβλίο προγραμματισμού σしぐまτたうοおみくろん amazon.com.

Κύριες σύγχρονοι διάλεκτοι

Επεξεργασία

Οおみくろんιいおた δύο κύριες διάλεκτοι της Lisp πぱいοおみくろんυうぷしろん χρησιμοποιούνται σήμερα γがんまιいおたαあるふぁ γενικής χρήσης προγραμματισμό είναι ηいーた Common Lisp κかっぱαあるふぁιいおた ηいーた Scheme. Αυτές οおみくろんιいおた γλώσσες αντιπροσωπεύουν σημαντικά διαφορετικές επιλογές σしぐまτたうοおみくろん σχεδιασμό.

Ηいーた Common Lisp, προερχόμενη κυρίως από τις MacLisp, Interlisp κかっぱαあるふぁιいおた Lisp Machine Lisp, είναι ένα εκτεταμένο υπερσύνολο παλιότερων διαλέκτων Lisp, μみゅーεいぷしろん ένα ογκώδες πρότυπο γλώσσας πぱいοおみくろんυうぷしろん περιλαμβάνει πολλούς ενσωματωμένους τύπους δεδομένων κかっぱαあるふぁιいおた συντακτικές μορφές, καθώς κかっぱαあるふぁιいおた ένα σύστημα αντικειμένων. Ηいーた Scheme έχει ένα μινιμαλιστικότερο σχεδιασμό, μみゅーεいぷしろん πολύ μικρότερο σύνολο λειτουργιών αλλά μみゅーεいぷしろん κάποια επιπλέον στοιχεία υλοποίησης, όπως ηいーた βελτίωση της αναδρομής ουράς κかっぱαあるふぁιいおた ηいーた πλήρης υποστήριξης συνεχειών (continuations), πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー υπάρχουν σしぐまτたうηいーたνにゅー Common Lisp. Επίσης, ηいーた Common Lisp έχει δανειστεί κάποια στοιχεία από τたうηいーた Scheme, όπως lexical scoping κかっぱαあるふぁιいおた lexical closures.

Επιπλέον, οおみくろんιいおた διάλεκτοι Lisp χρησιμοποιούνται ως scripting γλώσσες σしぐまεいぷしろん αρκετές εφαρμογές, ηいーた πぱいιいおたοおみくろん γνωστή εいぷしろんκかっぱ τたうωおめがνにゅー οποίων είναι ηいーた Emacs Lisp σしぐまτたうοおみくろん διορθωτή κειμένου Emacs κかっぱαあるふぁιいおた ηいーた Autolisp σしぐまτたうοおみくろん AutoCAD.

Γλωσσικές Καινοτομίες

Επεξεργασία

Ηいーた Lisp ήταν ηいーた πρώτη ομοεικονική γλώσσα προγραμματισμού: ηいーた βασική αναπαράσταση τたうοおみくろんυうぷしろん κώδικα ενός προγράμματος έχει τたうοおみくろんνにゅー ίδιο τύπο λίστας πぱいοおみくろんυうぷしろん επίσης χρησιμοποιείται γがんまιいおたαあるふぁ τις κύριες δομές δεδομένων της γλώσσας. Ως αποτέλεσμα, οおみくろんιいおた συναρτήσεις της Lisp μπορούν νにゅーαあるふぁ επεξεργαστούν, νにゅーαあるふぁ μεταβληθούν, ακόμα κかっぱαあるふぁιいおた νにゅーαあるふぁ δημιουργηθούν μέσα από ένα Lisp πρόγραμμα χωρίς ιδιαίτερη λεξική ανάλυση ή χρήση δυαδικού κώδικα μηχανής. Αυτό γενικά θεωρείται ένα από τたうαあるふぁ βασικά πλεονεκτήματα της γλώσσας, όσον αφορά τたうηいーたνにゅー εκφραστικότητα, κかっぱαあるふぁιいおた κάνει τたうηいーた γλώσσα επιδεκτική σしぐまεいぷしろん μετακυκλικό υπολογισμό.

Ηいーた πολύ διαδεδομένη δομή τたうοおみくろんυうぷしろん if-then-else, πぱいοおみくろんυうぷしろん τώρα θεωρούμε δεδομένο, προφανές κかっぱαあるふぁιいおた απαραίτητο στοιχείο κάθε γλώσσας προγραμματισμού, εφευρέθηκε από τたうοおみくろんνにゅー McCarthy γがんまιいおたαあるふぁ χρήση σしぐまτたうηいーた Lisp. Εκεί εμφανίστηκε πρώτη φορά σしぐまεいぷしろん πぱいιいおたοおみくろん γενική μορφή (ηいーた δομή cond). Κληρονομήθηκε από τたうηいーたνにゅー ALGOL από τたうηいーたνにゅー οποία κかっぱαあるふぁιいおた έγινε δημοφιλής.

Ηいーた Lisp επηρέασε πολύ τたうοおみくろんνにゅー Alan Kay, τたうοおみくろんνにゅー αρχηγό της έρευνας πάνω σしぐまτたうηいーた Smalltalk ενώ σしぐまτたうηいーた συνέχεια κかっぱαあるふぁιいおた ηいーた Lisp επηρεάστηκε από τたうηいーた Smalltalk, υιοθετώντας στοιχεία αντικειμενοστρεφούς προγραμματισμού (κλάσεις, εμφανίσεις, κかっぱλらむだπぱい) σしぐまτたうοおみくろん τέλος της δεκαετίας 1970.

Κυρίως λόγω τたうωおめがνにゅー απαιτήσεων της σしぐまεいぷしろん πόρους, όσον αφορά τたうοおみくろん υλικό (συμπεριλαμβανομένου τたうωおめがνにゅー πρώτων μικροεπεξεργαστών,) ηいーた Lisp δでるたεいぷしろんνにゅー έγινε τόσο δημοφιλής έξω από τたうηいーたνにゅー κοινότητα της τεχνητής νοημοσύνης όσο ηいーた Fortran κかっぱαあるふぁιいおた ηいーた C, ηいーた οποία προήλθε από τたうηいーたνにゅー Algol. Νεότερες γλώσσες όπως ηいーた Java κかっぱαあるふぁιいおた ηいーた Python έχουν ενσωματώσει περιορισμένες εκδόσεις κάποιων στοιχείων της Lisp, αλλά αδυνατούν νにゅーαあるふぁ δείξουν τたうηいーた συνέπεια κかっぱαあるふぁιいおた σύμπραξη πぱいοおみくろんυうぷしろん βρίσκεται στις έννοιες της Lisp. Λόγω τたうοおみくろんυうぷしろん ότι ενδείκνυται γがんまιいおたαあるふぁ εφαρμογές κかっぱαあるふぁκかっぱοおみくろん-διατυπωμένες, περίπλοκες κかっぱαあるふぁιいおた δυναμικές, ηいーた Lisp έχει αρχίσει ξανά νにゅーαあるふぁ απολαμβάνει αυξημένη δημοτικότητα.

Δες επίσης "The evolution of Lisp",[6] ένα άρθρο από τους Guy L. Steele, Jr. κかっぱαあるふぁιいおた Richard P. Gabriel.

Παραπομπές

Επεξεργασία
  1. John McCarthy. «Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 4 Οκτωβρίου 2013. Ανακτήθηκε στις 13 Οκτωβρίου 2006. 
  2. Tim Hart and Mike Levin. «AI Memo 39-The new compiler» (PDF). Ανακτήθηκε στις 13 Οκτωβρίου 2006. [νεκρός σύνδεσμος]
  3. David Canfield Smith. «MLISP Users Manual» (PDF). Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο (PDF) στις 24 Σεπτεμβρίου 2006. Ανακτήθηκε στις 13 Οκτωβρίου 2006. 
  4. The 36-bit word size of the PDP-6/PDP-10 was influenced by the usefulness of having two Lisp 18-bit pointers in a single word. "The PDP-6 project started in early 1963, as a 24-bit machine. It grew to 36 bits for LISP, a design goal." [1]
  5. «The Road To Lisp Survey». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 4 Οκτωβρίου 2006. Ανακτήθηκε στις 13 Οκτωβρίου 2006. 
  6. Guy L Steele Jr, Richard P Gabriel. «The evolution of Lisp» (PDF). Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο (PDF) στις 12 Οκτωβρίου 2006. Ανακτήθηκε στις 12 Οκτωβρίου 2006. 

Δείτε επίσης

Επεξεργασία

Εξωτερικοί σύνδεσμοι

Επεξεργασία