Contexte historique
Au milieu des années 1950, la plupart des ordinateurs traitaient des données numériques, y compris la linguistique, la psychologie et les mathématiques. Certaines personnes ont commencé à développer l'intelligence artificielle.
Inthesummerof1958,JohnMcCarthy,apioneerinartificialintelligenceresearchfromtheMassachusettsInstituteofTechnology,participatedintheworkoftheIBMInformationResearchDepartmenttostudysymboliccomputingandapplicationrequirements.However,IBM'sFortrantableprocessinglanguagefailstosupportsymbolicoperationssuchasrecursion,conditionalexpressions,dynamicstorageallocation,andimplicitrecovery.AfterJohnMcCarthyreturnedtoMITinthefallof1958,heformedanartificialintelligenceprojectwithMarvinMinsky.DevelopatableprocessingsoftwaresystemtoimplementMcCarthy'sworkofrecommendingadopters,andthenpromotetheproductionofthetableprocessinglanguageLISP.
Histoire du développement
En avril 1960, McCarthy a publié " Symbolic Expressions of Recursive Functions and Methods of Operation by Machines, Part One " dans la lettre d'information ACM.
En 1962, McCarthy et l'équipe d'intelligence artificielle ont amélioré la version LISP 1.5 sur la base de la compilation de LISP 1.
Enseptembre1969,leStanfordLISP1.6lancéparLynnQuamanetWhitfieldDiffieduArtificialIntelligenceLaboratorydeStanfordUniversityétaitlargementutilisédanslesystèmeinformatiquePDP-10utilisantlesystèmeTOPS-10.
De la fin des années 1960 au début des années 1980, diverses versions mises à jour de LISP ont émergé, notamment Franz Lisp de l'UCBerkeley, XLISP, le prédécesseur d'AutoLIS Pr exécuté dans AutoCAD, Standard Lisp développé par l'Université d'Utah et Portable Standard Lisp, Zeta Lisp exécuté exclusivement sur des machines Lisp, Le Lisp de l'Institut national français de l'art de l'information et de l'automatisation, et Scheme de l'homme d'intelligence du MIT.
En 1984, Common Lisp, qui a été amélioré à partir de Mac Lisp, intégrait toutes les versions, multiplateforme et était considéré comme la norme par défaut.
Depuis l'apparition du fonctionnement stable de Common Lisp, diverses organisations ont assuré le suivi de Lisp en fonction de leurs besoins, y compris EuLisp des utilisateurs européens en 1990 et IsLisp libre et open source, ACL2, etc.
Structure de données
DanslelangageLISP,lesdonnéesetlesfonctionssontdéfiniespardesexpressionssymboliques.
Caractéristiques
(1)Fonctionnalité
Thebasicfeatureofafunctionallanguageistousefunctiondefinitionsandfunctioncallstoformprograms.Theprogrammerusestheexpressioncomposedoffunctiondefinitionandfunctioncalltodescribethealgorithmforsolvingtheproblem,andthevalueoftheexpressionisthesolutionoftheproblem.AprogramwrittenintraditionalprogramminglanguagessuchasFORTRAN,PAS-CAL,andCisasequenceofcommandsexecutedinacertainorder,andtheresultoftheexecutionisthesolutiontotheproblem.Whenprogrammingintheselanguages,theprogrammermustspecifytheorderofsolving,thatis,describetheflowofcontrol.ProgrammingwithLISPlanguageonlyneedstodeterminethecallsbetweenfunctions,andleavethedetailsoffunctionexecutiontotheLISPsystemtosolve.Therefore,theLISPlanguageisamoreuser-orientedlanguage.
TraditionalprogramminglanguagesaredevelopedtoadapttothestructureofvonNeumann-typecomputersystems,andLISPrunslessefficientlyonNeumann-typecomputers.Thedevelopmentofcomputersystemstructuremakesfunctionallanguageshaveabrightfuture.Inordertoadapttothecurrentlevelofmicrocomputerdevelopmentandprogrammers'habitofprogrammingintraditionallanguages,LISPlanguagehasaddedmanynon-functionallanguagecomponents,suchasprog,goandotherfunctions.Therefore,LISPisnolongerapurelyfunctionallanguage.IthasbothThefunctionoffunctionallanguagealsohasthefunctionoftraditionallanguage.
(2)Récursivité
Une fonction récursive signifie que la fonction elle-même est appelée dans la définition de la fonction.
Étant donné que la structure de données principale de LISP est stable et que la table est définie par une méthode récursive, un élément de la table peut également être défini comme une table.
(3) Cohérence entre les données et le programme
AsectionofLISPprogramisauser-definedfunction,thisfunctioncanbecalledbyotherfunctions,Inotherwords,aprogramcanbecalledbyotherprograms.Theoutputdataafterthefunctionisexecutediscalledthereturnvalueofthisfunction.Whenafunctioniscalledbyotherfunctions,thereturnvalueofthisfunctioniscalled.InLISP,thefunctionandthereturnvalueofthisfunctionareconsistent.ThisfeaturemakestheprogrammingofLISPjusttodefineamacrofunction,andalsomakestheexpansionoftheLISPlanguageeasier.Accordingtotheneedsoftheapplicationfield,thebasicfunctionsprovidedbyLISPcanbeusedtoexpandanumberofmacrofunctionsforspecialapplicationfields.
(4)Allocation de stockage automatique
Lors de la programmation avec le langage LISP, les programmeurs peuvent ignorer complètement le problème d'allocation de stockage. Les fonctions, données et tables définies dans le programme peuvent être fournies automatiquement par LISP lorsque le programme est en cours d'exécution.
(5)Syntaxe simple
La syntaxe de LISP est extrêmement simple, et il n'est pas nécessaire de définir et d'expliquer les types de variables et de données à l'avance. La syntaxe de base du langage LISP est la définition et l'appel de fonction.
Le langage LISP a non seulement un large éventail d'applications dans les domaines des systèmes experts et de la CAO, mais également dans les domaines de la gébrae symbolique, de la théorie de l'amélioration de la planification des robots.
Version commune
Il existe de nombreuses versions du langage LISP, les plus couramment utilisées sont :
(1)Langage MACLISP :IlaétédéveloppéparMITArtificialIntelligenceLaboratoryen1971.IlcompareAttentionàl'efficacité,laprotectiondel'espaced'adressageetlaflexibilitédesoutilsdeconstruction.
(2)Langage INTERLISP : développé par DEC et XEROX en 1978, il souligne que même en cas de perte de vitesse et d'espace de stockage, il est nécessaire de fournir le meilleur environnement de programme possible.
(3) Le langage ZETALISP ; implémenté sur une machine LISP. Il est étroitement lié à MACLISP et présente une bonne compatibilité. Et de nombreuses améliorations ont été apportées à MACLISP, offrant de nouvelles performances.
(4) Langage QLISP : Il est intégré à INTERLISP, peut gérer de grandes bases de données de manière flexible et possède les fonctions de suivi des retours et d'appel de mode.
(5) Langage CommonLISP : Il est développé sur la base de MACLISP et fait référence à INTERLISP et ZETALISP, soit possède des fonctions puissantes et certains avantages des autres versions, et a été largement utilisé.
(6) Langage GCLISP : En tant que première version abrégée de CommonLISP implémentée sur un PC, il possède naturellement la polyvalence de ConlmonLISP, et son programme est facile à transférer vers d'autres versions de l'environnement LISP.