Поддерживать
www.wikidata.ru-ru.nina.az
Lisp LISP ot angl List Processing language yazyk obrabotki spiskov sovremennoe napisanie Lisp semejstvo yazykov programmirovaniya programmy i dannye v kotoryh predstavlyayutsya sistemami linejnyh spiskov simvolov Lisp byl sozdan Dzhonom Makkarti dlya rabot po iskusstvennomu intellektu i do sih por ostayotsya odnim iz osnovnyh instrumentalnyh sredstv v dannoj oblasti Primenyaetsya on i kak sredstvo obychnogo promyshlennogo programmirovaniya ot vstroennyh skriptov do veb prilozhenij massovogo ispolzovaniya hotya populyarnym ego nazvat nelzya LispSemantika multiparadigmalnyj obektno orientirovannoe funkcionalnoe procedurnoe programmirovanieKlass yazyka multiparadigmalnyj yazyk funkcionalnogo programmirovaniya procedurnyj yazyk programmirovaniya refleksivnyj yazyk programmirovaniya vd yazyk metaprogrammirovaniya vd i interpretiruemyjPoyavilsya v 1958Avtor Dzhon MakkartiRazrabotchik Dzhon Makkarti i Stiv Rassell vd Sistema tipov silnaya dinamicheskayaDialekty Common Lisp CLOS Scheme Fennel Arc Clojure yazyki rasshireniya AutoLisp i ELispIspytal vliyanie Yazyk obrabotki informacii vd Povliyal na Io Nemerle Python Ruby Smalltalk Logo Factor Perl Nim Mediafajly na VikiskladePervaya lisp mashina v muzee Massachusetskogo tehnologicheskogo instituta Eto odin iz starejshih naryadu s Fortranom i Kobolom ispolzuemyh po sej den vysokourovnevyh yazykov programmirovaniya a takzhe pervyj iz sohranivshihsya v ispolzovanii yazykov ispolzuyushih avtomaticheskoe upravlenie pamyatyu i sborku musora Lisp byl pervym yazykom v kotorom struktura programmnogo koda predstavlyaetsya neposredstvenno v vide standartnoj struktury dannyh kachestvo pozzhe nazvannoe gomoikoni chnostyu Tradicionnyj Lisp imeet dinamicheskuyu sistemu tipov Yazyk yavlyaetsya funkcionalnym no nachinaya uzhe s rannih versij obladaet takzhe chertami imperativnosti k tomu zhe imeya polnocennye sredstva simvolnoj obrabotki pozvolyaet realizovat obektno orientirovannost primerom takoj realizacii yavlyaetsya platforma CLOS Yavlyaetsya yazykom sistemnogo programmirovaniya dlya tak nazyvaemyh lisp mashin proizvodivshihsya v 1980 e gody naprimer firmoj angl Naryadu s yazykom Ada Lisp proshyol process fundamentalnoj standartizacii dlya ispolzovaniya v promyshlennosti v rezultate chego poyavilsya dialekt Common Lisp vposledstvii standartizovannyj ANSI Ego realizacii sushestvuyut dlya bolshinstva platform Arhitektura i sintaksisOsnovnye elementy yazyka Lisp registronezavisimyj yazyk Ishodno alfavit yazyka ogranichivalsya simvolnoj tablicej ASCII nekotorye sovremennye realizacii podderzhivayut Unicode Bazovymi elementami yazyka yavlyayutsya simvoly atomy i postroennye iz nih dinamicheskie spisochnye struktury S vyrazheniya Simvol v Lispe eto obekt v mashinnoj pamyati predstavlyayushij soboj sovokupnost slotov yacheek hranyashih ssylki Chast slotov imeet iznachalno opredelyonnoe yazykom naznachenie Imya stroka znakov po kotoroj programma mozhet ssylatsya na dannyj simvol osnovopolagayushee aristotelevo A A iz kotorogo vyrastaet lyambda ischislenie Funkcionalnyj slot lyambda vyrazhenie svyazannoe s simvolom Kogda obrashenie k simvolu v programme sintaksicheski sootvetstvuet vyzovu funkcii v rezultate vychislyaetsya lyambda vyrazhenie svyazannoe s simvolom Znachenie obekt v mashinnoj pamyati kotoryj mozhno traktovat kak dannye Kogda programma obrashaetsya k simvolu kak peremennoj ona poluchaet znachenie dannogo slota Prochie sistemnye sloty opredelyaemye realizaciej Nabor slotov yavlyaetsya dinamicheski rasshiryaemym i mozhet vsledstvie etogo ispolzovatsya kak spisok proizvolnyh svojstv simvola mozhno svobodno rasshirit slotovuyu sistemu udobnym dlya resheniya zadachi sposobom Takoe predstavlenie pozvolyaet rassmatrivat simvoly kak uzly mnogokoordinatnoj seti gde kazhdaya koordinata zapisana v svoyom slote Atomy eto simvoly i chisla Chisla ne yavlyayutsya lispovskimi simvolami poskolku mogut imet tolko sobstvennoe chislovoe znachenie i nikakogo drugogo V to zhe vremya chisla naravne s simvolami mogut vhodit v spiski Etim i obuslovleno obedinenie etih dvuh ponyatij v odnu obshuyu kategoriyu Osnovnaya struktura dannyh Lispa dinamicheskij spisok atomov opredelyaemyj rekursivno kak golovnoj obekt i prisoedinyonnyj k nemu spisok hvost Poskolku golova spiska tozhe mozhet byt spiskom spisok yavlyaetsya formoj predstavleniya proizvolnogo dereva sam spisok verhnego urovnya koren vhodyashie v nego podspiski vtorogo i sleduyushih urovnej uzly atomy listya Dlya atomov i spiskov yazyk ispolzuet krajne primitivnyj skobochnyj sintaksis simvol predstavlyaetsya svoim imenem chislo zapisyu ego znacheniya a spisok v vide zaklyuchyonnoj v kruglye skobki posledovatelnosti spiskov i atomov v kotoroj idushie podryad atomy pri neobhodimosti razdeleny probelami Spisok yavlyaetsya posledovatelnostyu elementov lyubogo roda v tom chisle drugih spiskov Naprimer 1 3 7 foo sostoit iz celogo chisla racionalnoj drobi simvola foo i ukazatelya na funkciyu slozheniya Vyrazheniya predstavlyayutsya spiskami v prefiksnoj zapisi pervyj element dolzhen byt formoj to est funkciej operatorom makrosom ili specialnym operatorom prochie elementy argumenty etoj formy peredavaemye forme dlya obrabotki Arifmeticheskie operatory zapisyvayutsya po tomu zhe principu naprimer 4 2 3 vydayot 10 v infiksnoj zapisi eto 2 3 4 Sintaksis v forme Bekusa Naura s expression atomic symbol s expression s expression list list s expression s expression atomic symbol letter atom part atom part empty letter atom part number atom part letter a b z number 1 2 9 empty Harakternaya osobennost programmy na Lispe sostoit v tom chto absolyutno vsyo i dannye i kod lyuboj slozhnosti opisyvaetsya v etom primitivnom sintaksise Rezultatov takogo podhoda dva Vneshne programma na Lispe vyglyadit kak gigantskoe nagromozhdenie skobok Imeyushiesya v lyuboj sovremennoj sisteme sredstva formatirovannogo vyvoda pozvolyayushie otobrazit spisok tak chtoby byla vidna ego struktura neskolko ispravlyayut situaciyu no v celom dlya vospriyatiya programm na lispe na glaz trebuetsya opredelyonnyj navyk Vprochem redaktirovanie programm znachitelno uproshaetsya ispolzovaniem tekstovogo redaktora podderzhivayushego avtomaticheskoe vyravnivanie koda podsvetku sootvetstvuyushih par skobok i takie specialnye komandy kak zakryt vse otkrytye skobki perejti cherez spisok vpravo i tak dalee Pervichnyj sintaksicheskij razbor programmy i obrabatyvaemyh eyu dannyh mozhet vypolnyatsya odnim i tem zhe prostejshim kodom dannye mogut bez kakih libo trudnostej obrabatyvatsya v kachestve programmy a programma v kachestve dannyh Vsledstvie etogo Lisp pozvolyaet legko sozdavat moshnye programmy dinamicheski porozhdayushie kod Lisp mashina sposobna vosprinimat kazhdyj postupayushij na neyo spisok na samom abstraktnom urovne naprimer kak meta lisp mashinu modificiruyushuyu vosprinimayushuyu mashinu V takoj dinamichnoj vysokoabstraktnoj srede mozhno realizovat kak strogo nauchnye sistemy tak i neischislimoe mnozhestvo programmistskih tryukov i generatorov vsevozmozhnyh mashin Lyubaya programma na yazyke Lisp sostoit iz posledovatelnosti vyrazhenij form Rezultat raboty programmy sostoit v vychislenii etih vyrazhenij Vse vyrazheniya zapisyvayutsya v vide spiskov odnoj iz osnovnyh struktur Lispa poetomu oni mogut legko byt sozdany posredstvom samogo yazyka Eto pozvolyaet sozdavat programmy izmenyayushie drugie programmy ili makrosy pozvolyayushie sushestvenno rasshirit vozmozhnosti yazyka Bazovye simvoly operatory i funkcii Razvitye realizacii Lispa soderzhat sotni sistemnyh funkcij makrosov i operatorov Zdes privodyatsya lish te iz nih kotorye sostavlyayut bazis raboty so spiskami i sozdaniya funkcionalnyh programm na Lispe T i NIL Vstroennye simvoly konstanty Lispa oboznachayushie logicheskuyu istinu i lozh sootvetstvenno Znacheniya T i NIL vozvrashayutsya logicheskimi operatorami i operatorami i funkciyami sravneniya Pomimo etogo u simvola NIL est eshyo odno znachenie on mozhet oboznachat pustoj spisok CAR i CDR Funkcii vozvrashayut sootvetstvenno golovu i hvost spiska CAR A B C D gt gt A zdes i dalee v primerah gt gt oznachaet chto v rezultate vychisleniya levoj chasti interpretator Lispa vydayot to chto nahoditsya sprava CAR A B C D gt gt A B CDR A B C D gt gt B C D CDR A B C D gt gt C D Sleduet obratit vnimanie chto v poslednem sluchae vozvrashaetsya spisok v spiske hvost argumenta yavlyaetsya spiskom iz odnogo elementa kotoryj v svoyu ochered sam yavlyaetsya spiskom iz dvuh elementov Formalno v chistom funkcionalnom programmirovanii znachenie golovy pustogo spiska yavlyaetsya neopredelyonnym no v Lispe po krajnej mere v bolshinstve dialektov prinyato soglashenie po kotoromu i golova i hvost pustogo spiska ravny NIL CAR NIL gt gt NIL CDR NIL gt gt NIL Sistemnye funkcii CAR i CDR poluchili takie neobychnye imena po istoricheskim prichinam Mashina IBM 704 na kotoroj Makkarti sozdaval samuyu pervuyu realizaciyu Lispa soderzhala instrukcii pozvolyayushie modificirovat chasti mashinnogo slova Mashinnoe slovo rassmatrivalos kak struktura s polyami prefiksa dekrementa tega i adresa Funkcii CAR sokrashenie ot Contents of the Address part of Register soderzhimoe adresnoj chasti registra i CDR Contents of the Decrement part of Register soderzhimoe dekrementnoj chasti registra poluchili svoi nazvaniya v sootvetstvii s etimi polyami V etoj realizacii polya adresa i dekrementa ispolzovalis dlya hraneniya sootvetstvenno ukazatelej na golovu i hvost spiska V nekotoryh novyh realizaciyah Lispa tradicionnye imena zameneny na FIRST i REST angl pervyj i ostatok sootvetstvenno ili dopolneny etimi sinonimami C R Zdes na meste zvyozdochki v imeni funkcii mozhet stoyat ot 2 do 4 bukv A i D v lyubyh kombinaciyah To est vozmozhny funkcii CDDDDR CADAR CADDR i tak dalee Vyzov takoj funkcii ekvivalenten vlozhennomu vyzovu sootvetstvuyushego nabora funkcij CAR i CDR naprimer CADAR A B C D E F sootvetstvuet CAR CDR CAR A B C D E F i vernyot znachenie B Neobhodimost v podobnyh strannyh funkciyah svyazana s chasto povtoryayushejsya zadachej izvlech iz spiska opredelyonnyj element polozhenie kotorogo izvestno CONS Prinimaet v kachestve argumenta golovu i hvost i sozdayot iz nih spisok ili tochechnuyu paru esli argumenty yavlyayutsya atomami CONS A B C D gt gt A B C D prisoedinenie atoma k spisku CONS A B C D gt gt A B C D dobavlenie spiska k golove drugogo spiska CONS A B gt gt A B sozdanie tochechnoj pary iz dvuh atomov LIST Eta funkciya vozvrashaet spisok svoih argumentov list 1 3 7 foo gt gt 1 3 7 foo Esli argumentov net vozvrashaetsya pustoj spisok list gt gt NIL Esli nekotorye elementy yavlyayutsya vyrazheniyami to snachala vychislyaetsya ih znachenie list 1 2 list 1 2 gt gt 1 2 1 2 QUOTE Sistemnyj operator QUOTE podavlyaet vychislenie svoego argumenta Esli on ne ispolzuetsya to interpretator Lispa poluchiv na vhode spisok ili simvol pytaetsya ego vychislit dlya simvola vozvrashaetsya ego znachenie dlya spiska rezultat vyzova funkcii imya kotoroj nahoditsya v golove spiska s parametrami hvostom spiska Esli zhe nuzhno chtoby interpretator ne vychislyal znacheniya a vzyal simvol ili spisok kak est k nemu primenyayut QUOTE LIST 1 2 QUOTE LIST 1 2 gt gt 1 2 LIST 1 2 QUOTE list 1 2 list 1 2 gt gt LIST 1 2 LIST 1 2 Poskolku podavlenie vychislenij ochen chastaya operaciya imeetsya sokrashayushij eyo zapis sintaksicheskij sahar vmesto polnoj formy vyzova QUOTE mozhno prosto postavit pered vyrazheniem apostrof LIST 1 2 LIST 1 2 gt gt 1 2 LIST 1 2 EVAL Eta funkciya po suti i est interpretator Lispa Yavlyayas protivopolozhnostyu QUOTE ona vychislyaet znachenie svoego argumenta EVAL LIST 1 2 LIST 1 2 gt gt 1 2 LIST 1 2 EVAL LIST 1 2 EVAL LIST 1 2 gt gt 1 2 1 2 Vozmozhnost pryamogo i neposredstvennogo vyzova interpretatora vkupe s identichnostyu struktury programmy i dannyh pozvolyaet bez kakih libo ogranichenij porozhdat i neposredstvenno ispolnyat v sisteme lyubye programmy na lispe COND Obobshyonnaya uslovnaya konstrukciya Imeet vid COND Uslovie1 Vyrazhenie1 Uslovie2 Vyrazhenie2 Posledovatelno vychislyayutsya Uslovie1 Uslovie2 i tak dalee do teh por poka ocherednoe UslovieN ne okazhetsya istinnym stanet imet znachenie T Togda budet vypolneno sootvetstvuyushee VyrazhenieN i ego znachenie budet vozvrasheno v kachestve znacheniya vyzova COND Esli istinnogo usloviya ne budet najdeno COND vernyot znachenie NIL Obychnoj praktikoj yavlyaetsya stavit v kachestve poslednego usloviya v COND znachenie T garantiruya tem samym chto pri nevypolnenii vseh ostalnyh uslovij budet vychisleno poslednee iz vyrazhenij tak sozdayotsya analog vetvi ELSE uslovnyh operatorov imperativnyh yazykov programmirovaniya DEFUN Konstrukciya pozvolyayushaya opredelit funkciyu Obshij uproshyonnyj format opredeleniya sleduyushij DEFUN Imya Parametr1 Parametr2 Vyrazhenie1 Vyrazhenie2 Zdes Imya imya funkcii Sootvetstvuyushij simvol esli ego eshyo net budet sozdan v sisteme i v ego funkcionalnyj slot zapishetsya opredelenie funkcii V dalnejshem interpretator Lispa vstretiv Imya v golove vychislyaemogo spiska interpretiruet ego kak vyzov dannoj funkcii s perechislennymi v hvoste parametrami Parametr1 i tak dalee imena formalnyh parametrov funkcii Posledovatelnost Vyrazhenie1 Vyrazhenie2 i tak dalee eto posledovatelnost vychislimyh vyrazhenij v kotoryh mogut ispolzovatsya Parametry i globalnye peremennye sistemy Pri vyzove funkcii Vyrazheniya vychislyayutsya posledovatelno i v kachestve znacheniya funkcii budet vozvrasheno znachenie vychislennoe poslednim po poryadku vyrazheniem Specialnye operatory pozvolyayut upravlyat posledovatelnostyu vychislenij S ih pomoshyu realizuyutsya vetvleniya i cikly Operator if pozvolyaet vychislit odno iz dvuh vyrazhenij v zavisimosti ot vypolneniya usloviya kotoroe tozhe yavlyaetsya vyrazheniem Esli ego rezultat ne LOZh ne nil to vychislyaetsya pervyj argument inache vtoroj Naprimer if nil list 1 2 foo list 3 4 bar vsegda vozvrashaet 3 4 bar Tipizaciya Lisp ne trebuet voobshe govorya yavno ukazyvat tipy peremennyh parametrov i funkcij No eto ne oznachaet chto tipov v Lispe net V Lispe ispolzuetsya dinamicheskaya tipizaciya kogda tip dannyh otnositsya ne k peremennoj parametru funkcii a k znacheniyu Eto oznachaet chto peremennaya mozhet v otsutstvie specialnyh utochnenij soderzhat znachenie lyubogo tipa dannyh prichyom v raznye momenty vremeni imet znacheniya razlichnyh tipov Tipy znachenij opredelyayutsya tem kak eti znacheniya sozdayutsya Naprimer v vyrazhenii CONS 10 CONS 2 01 CONS A CONS abc NIL v odnom i tom zhe pervom parametre odna i ta zhe funkciya CONS poluchaet posledovatelno celoe chislo chislo s plavayushej tochkoj atom i stroku Razvitye sovremennye lisp sistemy v tom chisle standartnyj Common Lisp imeyut bolshoj nabor vstroennyh tipov dannyh organizovannyj v ierarhicheskuyu sistemu v kotoroj u tipa mozhet byt neskolko nadtipov i neskolko podtipov Kornem ierarhii yavlyaetsya vstroennyj tip T nadtip vseh tipov konechnym tipom ierarhii tip NIL podtip vseh tipov Fragment ierarhii tipov yazyka programmirovaniya Common Lisp chislovye tipy dannyh Na illyustracii sprava pokazan fragment etoj ierarhii nadtipom dlya znachenij chislovyh tipov yavlyaetsya NUMBER ego podtipy RATIONAL FLOAT i COMPLEX predstavlyayut sootvetstvenno racionalnoe chislo chislo s plavayushej zapyatoj i kompleksnoe chislo pervyj iz kotoryh v svoyu ochered imeet podtipy INTEGER celoe chislo i RATIO racionalnaya drob vtoroj neskolko podtipov predstavlyayushih chisla s plavayushej zapyatoj s raznoj stepenyu tochnosti i tak dalee Tipy sozdavaemye programmistom takzhe vstraivayutsya v dannuyu sistemu Poskolku ne vse tipy znachenij yavlyayutsya dopustimymi dlya vseh operacij primenenie operacij k nekotorym znacheniyam privodit k oshibkam vremeni vypolneniya Programmist mozhet libo ignorirovat dannuyu vozmozhnost chto privedyot k vnezapnoj ostanovke programmy v sluchae poyavleniya dannyh nepredusmotrennogo tipa libo vospolzovatsya obrabotkoj isklyuchenij libo proverit otnositsya li znachenie s kotorym on sobiraetsya rabotat naprimer peredannoe v funkciyu v kachestve parametra k nuzhnomu tipu i v sluchae nesovpadeniya vybrat drugoj sposob resheniya zadachi ili preobrazovyvat dannye v nuzhnyj tip kogda eto vozmozhno Dlya raboty s tipami imeyutsya predikat proverki tipa TYPEP funkciya opredeleniya tipa TYPE OF a dlya preobrazovaniya tipov esli ono mozhet byt vypolneno celyj nabor uzkospecializirovannyh funkcij i obshaya funkciya COERCE Proverka tipov oblegchaetsya tem chto sistema tipov v Lispe kak govorilos vyshe yavlyaetsya ierarhicheskoj Lyuboj iz podtipov sovmestim s lyubym iz svoih nadtipov Naprimer arifmeticheskie operacii opredeleny dlya lyubyh kombinacij lyubyh tipov chisel poetomu dlya dopustimosti primeneniya naprimer slozheniya dostatochno proverit s pomoshyu predikata TYPEP chto operandy otnosyatsya k tipu NUMBER defun SmartPlus a b cond and typep a number typep b number a b t nil Tak v primere vyshe funkciya SmartPlus vozvrashaet summu svoih argumentov esli oni budut chislami lyubyh tipov libo nil esli hotya by odin iz nih okazhetsya ne chislom Pri etom konkretnyj tip vozvrashaemogo znacheniya budet zaviset ot fakticheskih tipov parametrov SmartPlus 1 2 gt 3 type of SmartPlus 1 2 gt INTEGER 0 4611686018427387903 SmartPlus 1 1 2 gt 2 2 type of SmartPlus 1 1 2 gt SINGLE FLOAT SmartPlus 2 2 3 gt 8 3 type of SmartPlus 2 2 3 gt RATIO SmartPlus abc 20 gt NIL type of SmartPlus abc 20 gt NULL Ispolzovanie dinamicheskoj tipizacii ne vsegda udobno osobenno pri primenenii kompilyatora Vo pervyh otsutstvie ogranichenij na tipy k kotorym mogut otnositsya znacheniya peremennoj ili parametra snizhaet effektivnost kompilyacii Vo vtoryh ono ne pozvolyaet staticheski vo vremya kompilyacii a ne ispolneniya programmy vyyavlyat oshibki svyazannye s narusheniem soglasovannosti tipov V situaciyah kogda eti neudobstva sushestvenny Lisp pozvolyaet s pomoshyu specialnogo operatora DECLARE utochnyat tipy parametrov i peremennyh zadavaya ih s lyuboj neobhodimoj tochnostyu mozhno ukazyvat kak konkretnye tipy naprimer RATIO ili SHORT FLOAT tak i nadtipy lyuboj stepeni obshnosti naprimer NUMBER Paradigmy programmirovaniya v LispeLisp iznachalno proektirovalsya kak funkcionalnyj yazyk programmirovaniya s otdelnymi imperativnymi chertami vvedyonnymi iz soobrazhenij udobstva prakticheskogo ispolzovaniya Odnako vybrannyj formalizm i nabor primitivov na kotoryh baziruetsya yazyk dali vozmozhnost rasshireniya ego v samyh razlichnyh napravleniyah Za desyatiletiya ekspluatacii i razvitiya yazyka on vobral v sebya prakticheski vse sushestvuyushie metodologii programmirovaniya i na nastoyashij moment mozhet schitatsya odnim iz moshnejshih multiparadigmennyh yazykov vysokogo urovnya Funkcionalnoe programmirovanie Funkcionalnaya paradigma yavlyaetsya dlya Lispa rodnoj poskolku osnovoj ego arhitektury yavlyaetsya lyambda ischislenie Chyorcha Sobstvenno imenno s Lispa nachalos funkcionalnoe programmirovanie kak prakticheskaya metodologiya razrabotki programmnogo obespecheniya Lyambda vyrazheniya yavlyayutsya v Lispe polnopravnymi yazykovymi obektami dopuskayushimi ne tolko neposredstvennyj vyzov no i prisvaivanie sohranenie v kachestve znacheniya simvola peredachu v kachestve parametra vyzova i vozvrat v kachestve rezultata Takim obrazom Lisp podderzhivaet funkcionaly to est funkcii prinimayushie v kachestve parametrov i vozvrashayushie v rezultate drugie funkcii V raznyh dialektah Lispa podhod k harakteru funkcij kak yazykovyh obektov neskolko razlichaetsya V Common Lisp funkciya i lyambda vyrazhenie predstavlyayut soboj otdelnuyu kategoriyu programmnyh obektov dlya kotoryh sushestvuyut specificheskie pravila i ogranicheniya v chastnosti eto vyrazhaetsya v tom chto u simvola imeyutsya razdelnye sloty dlya znacheniya i dlya funkcii svyazannoj s etim simvolom i v etom smysle funkciya eto ne vpolne to zhe samoe chto element dannyh V drugih dialektah takih kak T Lisp ili Scheme funkcii yavlyayutsya tak nazyvaemymi polnopravnymi grazhdanami mogut bez ogranichenij prisvaivatsya peremennym peredavatsya v kachestve parametrov vyzova i vozvrashatsya kak rezultaty vyzova Sovremennyj standart Lispa Common Lisp vyzyvaet narekaniya storonnikov chistogo funkcionalnogo programmirovaniya tem chto ne vse ego funkcionalnye sredstva yavlyayutsya teoreticheski chistymi Eto dejstvitelno tak poskolku Common Lisp razrabatyvalsya kak universalnyj promyshlennyj yazyk i v ryade sluchaev soobrazheniyam prakticheskoj celesoobraznosti soznatelno otdavalos predpochtenie pered soobrazheniyami teoreticheskoj chistoty Tem ne menee Lisp byl i ostayotsya funkcionalnym yazykom programmirovaniya Imperativnoe operatornoe programmirovanie Ishodno v sintaksis Lispa zalozhena vozmozhnost opisaniya algoritmov putyom perechisleniya posledovatelnosti trebuemyh dejstvij Ona zaklyuchaetsya v tak nazyvaemom neyavnom PROGN podderzhivaemom v strukture lyambda vyzovov Lispa v tom meste gde dolzhna razmeshatsya komanda sostavlyayushaya osnovu lyambda vyrazheniya mozhet byt zapisano ne odna a neskolko komand i rezultatom lyambda vyzova stanet rezultat poslednej iz nih Takim obrazom Lisp podderzhivaet neyavnoe posledovatelnoe ispolnenie operacij Pomimo neyavnogo PROGN podderzhivayutsya yavnye imperativnye mehanizmy imperativnogo programmirovaniya Konstrukcii PROG1 i PROGN obespechivayut vypolnenie komand posledovatelno LET pozvolyaet zadat lokalnye peremennye bloka i vypolnit s nimi posledovatelnye operacii Vse vidy ciklov Konstrukcii prisvaivaniya SET SETF SETQ vypolnyayushie prisvaivaniya Ryad sistemnyh strukturorazrushayushih funkcij vypolnyayushih operacii s dannymi na tom zhe meste V Common Lisp osoboe mesto zanimaet sistemnyj makros LOOP On pozvolyaet sozdat v lisp programme fragment napisannyj na yazyke programmirovaniya s privychnoj imperativnoj strukturoj i infiksnoj zapisyu operatorov Makroprogrammirovanie Prostejshim sredstvom makroprogrammirovaniya dostupnym v lyuboj realizacii Lispa yavlyaetsya vozmozhnost neposredstvennogo vyzova interpretatora funkcii EVAL s peredachej emu lyuboj spisochnoj struktury v kachestve programmy Eto pozvolyaet programme verhnego urovnya vystupit v kachestve makrogeneratora to est sformirovat ispolnyaemyj kod kotoryj budet vposledstvii ispolnen Naprimer defun nazvat name lv eval cons defun cons name cdr lv nazvat slozhit lambda x y x y slozhit 5 7 gt 12 Zdes funkciya nazvat konstruiruet opredelenie novoj funkcii iz peredannogo ej imeni i lyambda vyrazheniya posle chego vypolnyaet eto opredelenie s pomoshyu eval V rezultate novaya funkciya v dannom primere eto funkciya slozhit poyavlyaetsya v sisteme i mozhet byt vyzvana obychnym obrazom Odnako eta vozmozhnost ispolzuetsya redko iz za svoej gromozdkosti Gorazdo chashe ispolzuetsya sistema makrosov Sovremennye varianty Lispa v tom chisle standart Common Lisp obladayut razvitymi vozmozhnostyami sozdaniya i ispolzovaniya makrosov Opisanie makrosa v Lispe sintaksicheski podobno opisaniyu funkcii raznica sostoit tolko v ispolzovanii klyuchevogo slova defmacro vmesto defun v opisanii no povedenie makrosa sushestvenno otlichaetsya kazhdyj vyzov makrosa raskryvaetsya v moment translyacii programmy porozhdaya kod kotoryj na etape ispolneniya vypolnyaetsya tak kak budto byl neposredstvenno napisan v meste vyzova Eshyo odnim otlichiem makrosov ot obychnyh funkcij yavlyaetsya to chto ih argumenty po umolchaniyu ne vychislyayutsya Realizaciya vysheprivedyonnogo primera v vide makrosa mogla by vyglyadet tak defmacro nazvat name lv cons defun cons name cdr lv nazvat slozhit lambda x y x y slozhit 12 8 gt 20 Vidimyh otlichij dva v opredelenii makrosa otsutstvuet vyzov eval a v ego vyzove ne ispolzuyutsya apostrofy pered parametrami tak kak parametry makrosov ne vychislyayutsya No gorazdo bolee vazhno drugoe otlichie esli v pervom primere postroenie novoj funkcii proishodit vo vremya vypolneniya programmy to raskrytie makrosa vypolnyaetsya pri translyacii programmy tak chto kompilyator poluchaet vozmozhnost obrabotat funkciyu slozhit Sintaksicheskie oshibki formirovaniya funkcij v makrosah takzhe obnaruzhivayutsya ne pri vypolnenii programmy a eshyo na etape translyacii Krome togo ryad realizacij Lispa podderzhivaet sozdanie tak nazyvaemyh makrosov chteniya makrosov neposredstvenno preobrazuyushih tekst programmy Makrosy pozvolyayut prozrachno opredelyat novye yazykovye konstrukcii i dazhe dopolnyat sintaksis yazyka Poslednyaya vozmozhnost aktivno ispolzuetsya pri realizacii na Lispe ishodno ne podderzhivaemyh v nyom metodov i sredstv programmirovaniya Obektno orientirovannoe programmirovanie Lisp sozdavalsya ne kak obektno orientirovannyj yazyk Sama paradigma obektno orientirovannogo programmirovaniya byla razrabotana na poltora desyatka let pozzhe Lispa tem ne menee kogda ona poyavilas i stala populyarnoj obektnye vozmozhnosti byli dobavleny i v etot yazyk Nabor bazovyh vozmozhnostej Lispa delaet dobavlenie v nego obektno orientirovannoj podsistemy ne tolko vozmozhnym no i prostym Blagodarya nalichiyu svojstv slotov u simvolov Lisp iznachalno podderzhivaet inkapsulyaciyu Funkcionalnye svojstva Lispa podderzhka funkcionalov prisvaivanie funkcij peremennym i sohranenie ih v svojstvah simvolov dayut vozmozhnost svyazyvat kod metody s dannymi obektami Nakonec dinamicheskij harakter yazyka v sochetanii s vysheperechislennymi osobennostyami obespechivaet polimorfnoe povedenie koda i dannyh v programme Edinstvennyj komponent OOP sistemy kotorogo net v bazovom Lispe nasledovanie no ono mozhet byt realizovano bez zatrudnenij Takim obrazom Lisp soderzhit v sebe vse elementy na kotoryh baziruetsya tehnologiya OOP i realizaciya eyo podderzhki v yazyke svoditsya k sozdaniyu sootvetstvuyushih sintaksicheskih elementov Blagodarya razvitomu mehanizmu makrosov oni mogut byt dobavleny sredstvami samogo yazyka bez neobhodimosti rasshireniya bazovogo sintaksisa i modifikacii translyatorov Prostoj i elegantnyj primer sozdaniya sobstvennoj podsistemy OOP v Lispe mozhno najti v knige Pola Grema ANSI Common Lisp Sredi promyshlennyh izvestnyh obektno orientirovannyh rasshirenij Lispa prezhde vsego sleduet nazvat obektnuyu podsistemu Flavors kotoraya byla vklyuchena v sostav sistemy Zetalisp Eta podsistema obespechivala obyavlenie klassov flavors aromatov edinichnoe i mnozhestvennoe nasledovanie polimorfnye metody klassov Smaltalk podobnuyu sistemu vzaimodejstviya obektov putyom peredachi soobshenij realizovannuyu kak vyzov metodov obekta Drugim primerom mozhet sluzhit LOOPS Lisp Object Oriented Programming System obektnaya podsistema realizovannaya v 1983 godu v dialekte Interlisp Obektnaya sistema CLOS Common Lisp Object System pervonachalno sozdannaya v dopolnenie k Common Lisp a pozzhe voshedshaya v standart yazyka podobna Flavors i podderzhivaet principialno tot zhe nabor vozmozhnostej standartnyj dlya pochti lyubogo sovremennogo obektno orientirovannogo yazyka Primenenie obektno orientirovannogo programmirovaniya v Lispe v osnovnom svyazano s resheniem zadach modelirovaniya i ili upravleniya kotorye po svoemu harakteru udachno sovmeshayutsya s obektno orientirovannoj tehnologiej Naprimer odnim iz pervyh prilozhenij sistemy Flavors bylo vzaimodejstvie s mnogookonnym interfejsom polzovatelya kotoryj kak raz udobno modelirovat v vide nabora obektov obmenivayushihsya soobsheniyami IstoriyaPredposylki Avtorom Lispa yavlyaetsya Dzhon Makkarti na period sozdaniya yazyka rabotavshij v Massachusetskom tehnologicheskom institute MIT v dolzhnosti professora po svyazi Vmeste s Marvinom Minski on zanimalsya rabotami po iskusstvennomu intellektu v svyazi s chem i voznikla potrebnost v sozdanii yazyka programmirovaniya adekvatnogo zadacham reshaemym v etoj oblasti Rabota po sozdaniyu yazyka byla prodelana Makkarti v MIT v period s 1958 po 1963 god posle chego on pereshyol v Stenfordskij universitet v Kalifornii gde poluchil dolzhnost professor po iskusstvennomu intellektu Osnovoj dlya Lispa posluzhil rannij yazyk razrabotannyj Nyuellom Shou i Sajmonom IPL byl yazykom obrabotki spiskov i prednaznachalsya dlya realizacii proekta Logik teoretik sistemy iskusstvennogo intellekta prednaznachennoj dlya avtomaticheskogo vyvoda teorem matematicheskoj logiki IPL byl dovolno nizkourovnevym yazykom no v nyom uzhe byli realizovany takie bazovye idei kak edinyj mehanizm hraneniya programm i dannyh v vide spiskov ierarhicheskih struktur elementov svyazannyh ssylkami sama ideya spisochnogo predstavleniya znanij byla pozaimstvovana iz issledovanij po psihologii i associativnoj pamyati a takzhe ideya dinamicheskogo raspredeleniya pamyati Posle oznakomleniya v 1956 godu s IPL u Makkarti poyavilas ideya realizovat obrabotku IPL spiskov v Fortrane kotoryj kak raz v eto vremya proektirovalsya v IBM prichyom pod tu zhe sistemu IBM 704 s kotoroj Makkarti rabotal v MIT no eta ideya tak i ne byla realizovana Pozzhe Makkarti prinyal uchastie v rabote komiteta po yazyku vysokogo urovnya razrabatyvavshego Algol no i tam ego predlozheniya byli vstrecheny holodno V rezultate Makkarti prishyol k mysli o neobhodimosti sozdaniya novogo yazyka programmirovaniya Pervonachalno Makkarti sformuliroval spisochnyj formalizm dlya opisaniya dannyh S vyrazheniya i osnovannyj na nyom zhe mehanizm opisaniya lyambda vyrazhenij chto pozvolilo zapisyvat programmy v vide naborov funkcij predstavlennyh v spisochnoj forme Kak pisal pozzhe Makkarti iznachalno on planiroval primenyat dlya zapisi programm otdelnyj formalizm otlichayushijsya ot S vyrazhenij no eto okazalos izlishnim Kogda s pomoshyu svoej spisochnoj zapisi Makkarti opisal algoritm funkcionirovaniya interpretatora novogo yazyka formalizm kotoryj vposledstvii stal izvesten kak Lisp na Lispe Stiv Rassel zametil chto teper dlya sozdaniya realnogo rabotayushego interpretatora dostatochno prosto perevesti etu zapis v mashinnyj kod Makkarti otnyossya k etoj idee skepticheski no Rassel dejstvitelno prodelal dannuyu rabotu i poluchil pervyj interpretator Lispa dlya kompyutera IBM 704 V dalnejshem ideya napisaniya translyatora yazyka na nyom samom mnogokratno ispolzovalas i ne tolko v funkcionalnyh i logicheskih yazykah no i v imperativnyh Pervye realizacii Istoricheski pervoj realizaciej Lispa vklyuchayushej vse sovremennye bazovye elementy yazyka byl interpretator rabotavshij na IBM 704 poyavivshijsya v oktyabre 1958 goda Eto kstati pozvolyaet govorit o Lispe kak ob odnom iz dvuh starejshih yazykov vysokogo urovnya kotorye nahodyatsya v upotreblenii s momenta sozdaniya do nastoyashego vremeni pervyj Fortran Pomimo etogo Lisp sohranil pervenstvo eshyo v odnom otnoshenii Delo v tom chto aktivnaya rabota s dinamicheskimi spiskami sdelala nevozmozhnym ruchnoe upravlenie pamyatyu kotoroe v imperativnyh yazykah otchasti sohranyaetsya po sej den Sozdanie novyh spisochnyh yacheek i spiskov i vyhod iz ispolzovaniya imeyushihsya pri rabote lisp programmy proishodyat nastolko aktivno chto prakticheski nevozmozhno obojtis bez sistemy avtomaticheskogo upravleniya pamyatyu kotoraya kontrolirovala by ispolzovanie ranee sozdannyh v pamyati obektov i periodicheski udalyala te iz nih ispolzovanie kotoryh prekratilos to est sistemy sborki musora Makkarti prishlos realizovat etu sistemu blagodarya chemu Lisp pomimo prochego yavlyaetsya eshyo i samym starym iz primenyaemyh segodnya yazykov programmirovaniya s avtomaticheskim upravleniem pamyatyu i sborkoj musora Pozdnee byli sozdany realizacii dlya IBM 7090 v dalnejshem dlya serij IBM 360 i 370 Kompyutery IBM okazalis neudobny dlya raboty v interaktivnom rezhime vsledstvie chego v konce 1950 h godov nebolshaya gruppa razrabotchikov v tom chisle rabotavshih ranee v IBM vydelilas v samostoyatelnuyu kompaniyu Digital Equipment Corporation DEC Pervym eyo izdeliem stal kompyuter PDP 1 iznachalno orientirovannyj na interaktivnyj rezhim raboty Na etoj mashine v 1960 godu byla realizovana interaktivnaya sistema Lisp 1 vklyuchayushaya v sebya integrirovannye interpretator redaktor ishodnogo koda i otladchik pozvolyavshaya vypolnyat ves cikl rabot nad programmoj neposredstvenno v sisteme Po suti eto byla pervaya sreda programmirovaniya v tom smysle kotoryj vkladyvaetsya v eto ponyatie sejchas Togda zhe v zhurnale Communications of ACM vyshla statya Makkarti Recursive Functions of Symbolic Expressions and their Computation by Machine v kotoroj Lisp byl opisan v vide algebraicheskogo formalizma na samom Lispe Statya stala klassicheskoj a formalizm tipa Lisp na Lispe s teh por stal odnim iz naibolee upotrebimyh v literature po teorii programmirovaniya Eshyo odnim tehnologicheskim novshestvom poyavivshimsya v svyazi s realizaciej sistemy Lisp 1 byl izobretyonnyj Makkarti mehanizm pozvolyavshij zapuskat interpretator Lispa odnovremenno s vypolneniem obychnyh vychislitelnyh rabot v paketnom rezhime to chto sejchas izvestno kak sistema razdeleniya vremeni K 1962 godu byla gotova sleduyushaya versiya originalnoj lisp sistemy Lisp 1 5 v kotoroj byli ustraneny obnaruzhennye za vremya ekspluatacii nedostatki pervoj versii Eyo opisanie bylo vypusheno v izdatelstve MIT Press v vide otdelnoj knigi Poskolku rukovodstvo vklyuchalo opisanie realizacii sistemy ono stalo osnovoj dlya sozdaniya lisp sistem dlya mnozhestva drugih kompyuterov kak v SShA tak i za eyo predelami Dialekty 1960 h 1980 h godov Nesmotrya na ispolzovanie podchas vesma aktivnoe Lispa v evropejskih i aziatskih stranah i sozdanie tam sobstvennyh lisp sistem bolshinstvo rasprostranyonnyh dialektov Lispa proishodyat iz SShA MacLisp Osnovnaya statya MacLisp S nachala 1960 h godov v MIT byl zapushen proekt MAC v ramkah kotorogo na osnove Lisp 1 5 byl razrabotan MacLisp orientirovannaya v osnovnom na kompyutery PDP MacLisp byl chrezvychajno moshnoj dlya svoego vremeni sistemoj otlichalsya vysokoj vychislitelnoj effektivnostyu i shirokim naborom matematicheskih tipov dannyh v tom chisle vektorov matric i bitovyh polej V chasti vklada v razvitie samogo yazyka mozhno otmetit poyavivshiesya v MacLisp makrosy chteniya i tablicy chteniya pozvolivshie dostraivat yazyk rasshiryaya ego v nuzhnom napravlenii novymi strukturami Takzhe v yazyk byli vklyucheny sredstva obrabotki isklyuchenij i sredstva parallelnoj obrabotki Takzhe MacLisp stal pervoj lisp sistemoj dlya kotoroj byl realizovan vysokoeffektivnyj kompilyator Na MacLisp byla celikom napisana sistema kompyuternoj algebry Macsyma razrabotka kotoroj byla nachata v ramkah proekta MAC v 1968 godu Macsyma v techenie mnogih let ostavalas naibolee razvitoj sistemoj takogo tipa neskolko dialektov Lispa byli sozdany specialno dlya togo chtoby vypolnit perenos Macsyma na drugie platformy Drugim ochen izvestnym i nahodyashimsya v upotreblenii do sih por programmnym produktom iznachalno razrabotannym na MacLisp yavlyaetsya polnoekrannyj tekstovyj redaktor Emacs Sistema MacLisp ekspluatirovalas i razvivalas vplot do 1980 h godov okazav sushestvennoe vliyanie na poyavlyavshiesya v 1960 1980 godah realizacii Lispa v tom chisle stav odnim iz istochnikov proektirovaniya standarta Common Lisp Ekspluataciya sistemy prakticheski prekratilas v 1980 h godah vmeste s prekrasheniem ispolzovaniya kompyuterov PDP 10 20 na kotoryh ona iznachalno bazirovalas Namnogo perezhili sistemu razrabotannye na MacLisp i uzhe upominavshiesya Macsyma i Emacs Interlisp Razrabotkoj lisp sistem v seredine 1960 h godov zanimalis mnogie kompanii i issledovatelskie centry v SShA Interlisp stal rezultatom obedineniya usilij BBN Bolt Beranek and Newman Inc SDS Scientific Data Systems i Xerox Issledovatelskij centr BBN v 1966 godu pristupil k sozdaniyu svoej realizacii Lispa orientirovannoj na kompyutery PDP 10 i SDS 930 Versiya BBN Lisp dlya PDP ispolzovala apparatnyj mehanizm stranichnoj organizacii pamyati i pereklyucheniya konteksta sozdannyj specialno dlya obespecheniya vysokoeffektivnogo razdeleniya vremeni BBN Lisp stal populyaren sredi issledovatelej v oblasti iskusstvennogo intellekta i vo mnogom sposobstvoval tomu chto imenno mashiny PDP 10 20 vplot do 1980 h godov ostavalis osnovnymi instrumentami v rabotah po II V nachale 1970 h korporaciya Xerox kupila obankrotivshuyusya SDS i nachala sotrudnichat s BBN Nesmotrya na to chto mashiny SDS ne imeli bolshogo kommercheskogo uspeha realizaciya Lispa ot BBN byla dostatochno perspektivnoj chtoby Xerox podderzhala eyo dalnejshuyu razrabotku v rezultate chego BBN Lisp prevratilsya v A v 1974 godu v Xerox nachalas razrabotka personalnoj rabochej stancii Alto ishodno orientirovannoj na Lisp V etoj sisteme vpervye byla proizvedena razrabotka apparatury i sistemy mashinnyh komand pod konkretnyj yazyk programmirovaniya Na osnove Interlisp byla sozdana uproshyonnaya versiya sistemy Interlisp D prednaznachennaya dlya lisp mashin serii 1100 potomkov stancii Alto V etih mashinah byl vpervye realizovan mnogookonnyj graficheskij interfejs polzovatelya ispolzovana grafika s vysokoj razreshayushej sposobnostyu i primenyon manipulyator mysh Sistema byla tshatelno dokumentirovana i vklyuchala horosho produmannuyu integrirovannuyu sredu razrabotki s redaktorom ishodnyh kodov otladchikom interpretatorom i mnozhestvom vspomogatelnyh instrumentov razrabotchika stav odnim iz obrazcov programmnoj sredy dlya sistem razdeleniya vremeni V sistemnyh bibliotekah bylo realizovano svyshe 500 funkcij sistema imela bolshoe kolichestvo nastroek pozvolyavshih podognat eyo pod polzovatelya Realizacii Interlisp so vremenem byli vypolneny na bolshinstve shiroko rasprostranyonnyh bolshih kompyuterov rabotavshih v rezhime razdeleniya vremeni Chto zhe kasaetsya sobstvenno yazyka to mozhno zametit chto dialekt so vsemi ego harakternymi osobennostyami byl zafiksirovan uzhe v seredine konce 1970 h godov posle chego kardinalnyh izmenenij v yazyk ne vnosilos Eto privelo k nekotoromu otstavaniyu sistemy ot bolee novyh razrabotok v chasti funkcionalnosti i k fiksacii nekotoryh ustarevshih proektnyh reshenij Vsledstvie etogo uzhe k nachalu 1980 h godov Interlisp ispytyval trudnosti kak s sovmestimostyu s novymi sistemami tak i s dalnejshim rasshireniem Naibolee sushestvennye nedostatki otsutstvie ierarhii tipov dannyh obektov i zamykanij tem ne menee v 1983 godu byla realizovana obektnaya sistema LOOPS dayushaya vozmozhnosti obektno orientirovannogo programmirovaniya Bolee sushestvenno to chto Interlisp baziruetsya na dinamicheskom svyazyvanii togda kak vse novye versii Lispa staticheskie PSL U etogo termina sushestvuyut i drugie znacheniya sm PSL Lisp popal v Kaliforniyu vmeste s Makkarti pereshedshim v Stenford v 1963 godu Za sleduyushie neskolko let byli razrabotany sistemy Lisp 1 6 pryamoj potomok klassicheskogo Lisp 1 5 UCI Lisp University of California Irvine i Stanford Lisp 360 Ottuda vmeste s Entoni Hyornom Lisp popal v Universitet shtata Yuta gde zanimalas issledovaniyami v oblasti simvolnoj matematiki v prilozheniyah teoreticheskoj fiziki Hyorn predlozhil reshat eti zadachi s pomoshyu Lispa v rezultate chego v 1968 godu byla sozdana sistema kompyuternoj algebry Reduce Hyorn v 1966 godu opublikoval specifikaciyu Standard Lisp kotoruyu predlagal v kachestve osnovy dlya standartizacii yazyka Predlozhenie ego ne vstretilo podderzhki tak kak ne bylo odobreno issledovatelyami iskusstvennogo intellekta ukazavshimi na ryad nezhelatelnyh dlya nih osobennostej predlagaemogo standarta v chastnosti izlishnyuyu privyazku k tipam Tem ne menee na osnove dannoj specifikacii v Yute byl realizovan Portable Standard Lisp PSL Eta realizaciya byla ispolzovana dlya razvitiya Reduce i perenosa eyo na razlichnye apparatnye platformy Specialno dlya uluchsheniya perenosimosti v PSL byl vklyuchyon sokrashyonnyj nabor sistemnyh funkcij i struktur Realizaciya byla osnovana na promezhutochnom nizkourovnevom lisp podobnom yazyke SYSLisp yadro PSL bylo napisano na SYSLisp a vsya ostalnaya chast sistemy na samom PSL Dlya PDP 10 byl realizovan translyator SYSLisp i napisannyj na tom zhe SYSLisp kross kompilyator s pomoshyu kotorogo yadro PSL mozhno bylo perenesti na lyubuyu druguyu apparaturu S pomoshyu etoj tehnologii PSL i Reduce byli realizovany na celom ryade platform v tom chisle na DEC 10 20 VAX UNIX HP9000 Apollo Wicat IBM Cray Takim obrazom PSL stal odnim iz pervyh primerov realizacii tehniki raskrutki pri perenose programmnyh sistem na novuyu arhitekturu kogda dlya perenosa sistemy yadro iznachalno pishetsya na mashinno nezavisimom promezhutochnom yazyke dlya kotorogo v svoyu ochered sozdayutsya realizacii na vseh celevyh platformah Dalnejshee soprovozhdenie PSL osushestvlyalos issledovatelskim centrom firmy Hewlett Packard v Kalifornii Franz Lisp Motivom dlya sozdaniya v konce 1970 h godov sistemy Franz Lisp posluzhilo zhelanie poluchit lisp sistemu dlya novyh kompyuterov VAX chtoby obespechit vypolnenie na nih sistemy Macsyma i drugogo napisannogo na Lispe programmnogo obespecheniya Poskolku osnovnoj celyu byl perenos Macsyma za osnovu byl vzyat MACLisp odnako iz yazyka byli isklyucheny nekotorye ustarevshie osobennosti i dobavleny novye mehanizmy zaimstvovannye iz razrabatyvaemogo v to vremya v tom zhe MIT Zetalisp Naibolee znachitelnyj vklad v sozdanie dannogo dialekta vnesli Universitet Berkli Universitet Pensilvaniya Bell Labs Livermorskaya nacionalnaya laboratoriya i Universitet Karnegi Mellona Odnim iz osnovnyh vdohnovitelej proekta byl professor Universiteta Berkli Richard Fejtman ranee rabotavshij v MIT i uchastvovavshij v razrabotke originalnoj sistemy Macsyma V chisle sozdatelej Franz Lisp bylo neskolko ego uchenikov Nazvanie sistemy bylo vybrano v chest izvestnogo vengerskogo kompozitora Ferenca Lista anglijskoe napisanie Franz Liszt Sistema byla realizovana v 1981 godu na C dlya VAX 780 11 pod upravleniem OS UNIX Vhodyashij v sostav sistemy kompilyator nosil imya Liszt familii kompozitora davshego imya dialektu V 1982 godu sistema byla portirovana na processor Motorola 68000 zatem eshyo na ryad 32 razryadnyh personalnyh platform v rezultate ona stala naibolee shiroko ispolzuemoj versiej Lispa kak dlya 32 razryadnyh sistem s razdeleniem vremeni tak i dlya 32 bitovyh mini EVM i personalnyh rabochih stancij Sistema Franz Lisp rasprostranyalas besplatno pod licenziej BSD no aspirant Universiteta Berkli Fridrih Kunce podal ideyu sozdaniya kommercheskoj kompanii kotoraya by obespechivala kachestvennuyu platnuyu podderzhku polzovatelej i vypolnyala zakazy po portirovaniyu Franz Lisp na novye apparatnye i programmnye platformy Eto bylo vremya aktivnogo rosta kompyuternogo rynka i perspektivy vyglyadeli neploho Kompaniya byla zaregistrirovana v 1984 godu i poluchila nazvanie Franz Inc Nachalo deyatelnosti firmy bylo dostatochno udachnym ej udalos poluchit kontrakt na portirovanie Franz Lisp na platformu Sun a pozzhe eshyo neskolko analogichnyh predlozhenij Odnako v 1985 godu pod davleniem Ministerstva oborony SShA amerikanskoe lisp soobshestvo nachalo aktivnuyu pereorientaciyu na novyj dialekt Common Lisp sozdanie kotorogo v eto vremya zavershalos V etih usloviyah Franz Inc ne mogla najti novyh kontraktov okazalas na grani zakrytiya i byla vynuzhdena perejti k razrabotke sobstvennoj realizacii Common Lisp Allegro Common Lisp nazvanie bylo vybrano chtoby sohranit preemstvennost muzykalnoj temy Istoriya Franz Lisp na etom fakticheski zavershilas V nastoyashee vremya originalnaya sistema polnostyu vyshla iz upotrebleniya Scheme Osnovnaya statya Scheme Yazyk Scheme byl razrabotan v 1976 godu v MIT v ramkah proekta po sozdaniyu lisp mashiny personalnoj rabochej stancii razrabotannoj polnostyu nachinaya s apparatury v raschyote na maksimalno effektivnoe ispolzovanie yazyka Lisp Ishodno Scheme byl vsego lish issledovatelskim yazykom v hode razrabotki kotorogo oprobovalis razlichnye idei i metody Stavilas cel realizovat minimalnyj nabor bazovyh vozmozhnostej kotoryj obespechival by postroenie polnocennoj lisp sistemy putyom nadstraivaniya etogo nabora V rezultate poluchilos nebolshoe po obyomu i elegantno opredelyonnoe yadro pri etom vesma effektivno realizovannoe V chastnosti Scheme stal pervym dialektom Lispa v kotorom garantirovalas optimizaciya hvostovoj rekursii V yazyke realizovan moshnyj mehanizm makrosov pomimo spiskov v kachestve bazovyh konstrukcij podderzhivayutsya massivy Harakternoe sintaksicheskoe otlichie Scheme ot bolshinstva dialektov Lispa nemnogo drugaya forma opredeleniya funkcii Esli v bolshinstve dialektov ispolzuetsya variant DEFUN ImyaFunkcii Argumenty Vyrazheniya to v Scheme sokrashyonnaya forma opredeleniya vyglyadit kak DEFINE ImyaFunkcii Argumenty Vyrazheniya Razlichaetsya klyuchevoe slovo i vzaimnoe raspolozhenie imeni funkcii i argumentov Scheme ispolzuet dinamicheskoe svyazyvanie i realizuet edinoe prostranstvo imyon dlya funkcij i peremennyh chto otlichaet ego ot Common Lisp a Scheme edinstvennyj staryj dialekt Lispa kotoryj prodolzhaet ispolzovatsya posle povsemestnogo perehoda lisp soobshestva na standartizovannyj Common Lisp V nastoyashee vremya sushestvuet neskolko podderzhivaemyh realizacij Scheme v tom chisle svobodnyh est primery ispolzovaniya etogo yazyka i v kachestve vstroennogo naprimer ispolzuemyj v kachestve sredstva sozdaniya skriptov GIMP Tiny Scheme V neskolkih amerikanskih universitetah Scheme ispolzuetsya kak yazyk dlya bazovogo obucheniya programmirovaniyu Zetalisp ili Lisp Machine Lisp byl sozdan v MIT vo vtoroj polovine 1970 h godov v ramkah proekta lisp mashiny profinansirovannogo amerikanskim oboronnym agentstvom DARPA Sistema osnovyvalas na MacLisp i redaktore Emacs no yazyk byl sushestvenno obnovlyon i dopolnen v chastnosti v nyom poyavilis novye tipy dannyh obektno orientirovannaya podsistema Flavors na kotoroj osnovano vzaimodejstvie programm s mnogookonnym interfejsom polzovatelya novye direktivnye upravlyayushie konstrukcii chastichno zaimstvovannye iz Interlispa mnogoznachnye funkcii sposobnye shtatnym obrazom vozvrashat bolee odnogo znacheniya bez predvaritelnoj sborki ih v kontejner potokovyj vvod vyvod prostranstva imyon moshnaya biblioteka funkcij v tom chisle matematicheskih obespechivayushih vektornye i matrichnye vychisleniya i rabotu s linejnymi sistemami Gorazdo bolshe novshestv bylo vneseno v samu sistemu programmirovaniya Sistema iznachalno rasschityvalas na rabotu s graficheskim polzovatelskim terminalom i myshyu V nej byl realizovan graficheskij mnogookonnyj interfejs polzovatelya V sostav sistemy vhodil mnogookonnyj interpretator Lispa chastichnyj translyator tekstovyj redaktor Zmacs inspektor struktur dannyh otladchik programma issledovaniya sostoyaniya sistemy redaktor sistemnyh fajlov redaktor shriftov i klient elektronnoj pochty Zmail V sostav sistemy vhodili translyatory drugih yazykov vysokogo urovnya preobrazovatel obespechivayushij podderzhku programm na Interlispe i nabor instrumentov bolee vysokogo urovnya Dlya Fortrana Paskalya Ady i Prologa postavlyavshihsya v sostave sistemy imelis razvitye sredstva vzaimodejstviya s programmami na Lispe chto pozvolyalo v sluchae neobhodimosti razrabatyvat i primenyat programmnye sistemy na neskolkih yazykah Iznachalno proekt imel celyu sozdanie kommercheskogo produkta V 1979 godu bylo sozdano dva predpriyatiya proizvoditelya lisp mashin Symbolics i Lisp Machine Inc LMI Posle etogo rabota po razvitiyu Zetalispa velas etimi firmami nezavisimo Tem ne menee pri nalichii nekotoryh razlichij v samih lisp mashinah v chasti yazyka oni byli pochti polnostyu sovmestimy NIL i T Realizaciya MACLisp na mashine VAX v samom MIT byla nachata v 1979 godu Proekt poluchil nazvanie odnovremenno abbreviatura New Implementation of Lisp Novaya realizaciya Lispa i standartnyj lispovskij atom NIL oboznachayushij v zavisimosti ot ispolzovaniya logicheskuyu ne istinnost ili pustoj spisok NIL imel dovolno bolshoe yadro napisannoe na assemblere VAX na kotorom vsyo tem zhe metodom raskrutki stroilas lisp sistema V kakoj to mere mozhno schitat NIL otvetom na Franz Lisp poskolku v kachestve odnoj iz celej proekta byl nazvan vsyo tot zhe perenos na VAX sistemy Macsyma NIL mnogo pozaimstvoval u Zetalispa v tom chisle sistemu Flavors prevrashayushuyu Lisp sistemu v obektno orientirovannuyu V 1981 godu gruppa zanimavshayasya proektom NIL raspalas iz za neprimirimyh raznoglasij v otnoshenii ideologii sozdavaemoj sistemy Nesmotrya na raspad nachinaya s 1982 goda vyhodili regulyarnye obnovleniya sistemy i ona poluchila dostatochno zametnoe rasprostranenie V 1980 e gody NIL neredko ispolzovalsya v organizaciyah imevshih kak VAX tak i lisp mashiny poskolku principialnyh ideologicheskih otlichij mezhdu NIL i Zetalisp net hotya Zetalisp namnogo bogache vozmozhnostyami Otdelivshayasya ot proekta NIL gruppa razrabotchikov pristupila k sozdaniyu sobstvennoj versii lisp sistemy kotoraya poluchila ironichnoe imya odnovremenno ot True Lisp Nastoyashij istinnyj Lisp i eshyo odin standartnyj lispovskij atom T oboznachayushij logicheskuyu istinnost to est protivopolozhnost NIL Razrabotka etogo dialekta velas v Jelskom universitete v 1982 1984 gody V otlichie ot staryh sistem dialekt T ispolzoval po umolchaniyu staticheskoe svyazyvanie peremennyh krome togo ego sozdateli vveli realizaciyu funkcij kak polnopravnyh grazhdan chto oznachaet chto funkcii mogut bez specialnyh sintaksicheskih sredstv i bez ogranichenij prisvaivatsya peremennym i vozvrashatsya v kachestve znachenij drugih funkcij T Lisp v otlichie ot NIL imel dovolno nebolshoe yadro napisannoe na mashinnom yazyke Razrabotchiki ispolzovali tehniku raskrutki perenosya yadro vruchnuyu na novye platformy i realizuya ostalnuyu chast sistemy neposredstvenno na Lispe rasschityvaya chto vysokoeffektivnyj translyator obespechit luchshuyu proizvoditelnost konechnoj sistemy chem ruchnaya realizaciya krupnogo yadra na mashinnom yazyke Spornym momentom v T Lisp stalo reshenie avtorov obnovit i sistematizirovat imena sistemnyh funkcij Tak naprimer imena vseh bez isklyucheniya predikatov okanchivalis na voprositelnyj znak istoricheski slozhivshiesya standartnye imena elementarnyh funkcij byli zameneny na mnemonicheskie sootvetstvuyushie tomu chto funkciya delaet Naprimer funkcii CAR i CDR vozvrashayushie sootvetstvenno golovu i hvost spiska poluchili imena FIRST i REST angl pervyj i ostatok Bezuslovnym plyusom takogo resheniya bylo oblegchenie izucheniya ochevidnym minusom stala nesovmestimost so vsemi ostalnymi dialektami yazyka V rezultate sozdatelyam vsyo ravno prishlos vposledstvii dopolnit sistemu naborom makrosov privodyashih sistemu imyon v sootvetstvie so standartom Common Lisp Bezuslovno znachitelnoe vliyanie kotoroe na T okazal dialekt Scheme V celom zhe T Lisp poluchilsya dostatochno prostoj elegantnoj i mobilnoj sistemoj kotoraya byla realizovana dlya VAX i perenesena na mnogie 32 bitovye rabochie stancii Sozdanie Common Lisp K pervoj polovine 1980 h godov v lisp soobshestve slozhilas situaciya kotoruyu nekotorye avtory sravnivali s Vavilonskoj bashnej parallelno sushestvovali i razvivalis bolee desyatka krupnyh dialektov Lispa obshee zhe chislo nesovmestimyh mezhdu soboj realizacij bylo sushestvenno bolshe Pohozhaya situaciya nablyudalas v eto vremya v bolshinstve rasprostranyonnyh yazykov programmirovaniya v sluchae zhe s Lispom situaciya usugublyalas tem chto yazyk iznachalno byl razrabotan kak proizvolno rasshiryaemyj chto sprovocirovalo razvitie ego vozmozhnostej v raznyh dialektah v sushestvenno raznyh napravleniyah Esli na nachalnom etape kogda Lisp ispolzovalsya pochti isklyuchitelno v laboratoriyah i institutah mnogoobrazie dialektov ne osobenno meshalo i dazhe bylo otchasti poleznym poskolku sposobstvovalo bystromu razvitiyu yazyka to k 1980 m godam kogda poyavilas potrebnost v promyshlennyh razrabotkah na Lispe obilie realizacij stalo tormozom poskolku privodilo k massovomu dublirovaniyu razrabotok i rassredotocheniyu sil na podderzhku mnozhestva lisp sistem Popytki standartizacii Lispa predprinimalis pochti s momenta ego poyavleniya pervoe predlozhenie po standartizacii datiruetsya 1960 godom no iz za razobshyonnosti i znachitelnyh razlichij v potrebnostyah zainteresovannyh grupp razrabotchikov ni odno iz predlozhenij ne bylo prinyato Vo vtoroj polovine 1970 h godov Ministerstvo oborony SShA provelo ogromnuyu rabotu po analizu situacii v programmnyh razrabotkah voennogo naznacheniya posle chego organizovalo konkurs na razrabotku novogo yazyka vysokogo urovnya dlya vstroennyh sistem kotorym stal yazyk Ada Odnako Ada iznachalno ne prednaznachalas dlya iskusstvennogo intellekta i simvolnoj obrabotki vsledstvie chego dlya takih razrabotok voennoe vedomstvo SShA okazalos vynuzhdeno dopustit k ispolzovaniyu bolee podhodyashij yazyk Poetomu Ministerstvo oborony SShA okazalo organizacionnuyu i finansovuyu podderzhku formirovaniyu promyshlennogo standarta yazyka Lisp kotoryj i prinyalo v kachestve dopolnitelnogo sredstva razrabotki PO dlya voennyh primenenij Pervonachalnyj variant standarta nachali gotovit v Universitete Karnegi Mellona na osnove vnutrennego proekta Spice Lisp takzhe pervonachalno nacelennogo na razrabotku lisp sistemy dlya rabochej stancii Proektiruemyj standart s samogo nachala poluchil naimenovanie Common Lisp Obshij Lisp podchyorkivayushee cel razrabotki poluchit edinyj bazovyj yazyk na osnovanii kotorogo mozhno bylo by sozdavat programmno sovmestimye sistemy V razrabotke i redaktirovanii standarta prinyali uchastie okolo 80 specialistov iz universitetov laboratorij i firm SShA Process razrabotki vpervye proishodil distancionno cherez kompyuternuyu set ARPANET cherez kotoruyu bylo peredano svyshe 3000 soobshenij Process razrabotki standarta zavershilsya v 1984 godu Ego rezultat byl zafiksirovan v pervom izdanii rukovodstva Common Lisp the Language Gaya Stila Novye dialekty Poyavlenie Common Lisp zatormozilo sozdanie novyh dialektov yazyka Starye dialekty prodolzhali sushestvovat no po mere vyhoda iz upotrebleniya platform na kotoryh oni rabotali perestavali ispolzovatsya i sootvetstvuyushie Lisp sistemy Bolshinstvo iz nih prekratilo svoyo sushestvovanie v 1985 1995 godah Novye razrabotki proizvodilis uzhe na Common Lisp Tem ne menee v posleduyushie gody poyavilos neskolko novyh dialektov Lispa bolshinstvo iz kotoryh shlo po puti uprosheniya i orientirovalos na mikrokompyutery ISLISP Osnovnaya statya ISLISP ISLISP specifikaciya Lispa razrabotannaya v 1990 h godah i opublikovannaya ISO v 1997 godu Specifikaciya byla obnovlena v 2007 godu ISLISP predstavlyaet soboj popytku standartizovat yadro Lispa putyom konsolidacii sushestvovavshih i razrabatyvavshihsya na moment ego sozdaniya promyshlennyh dialektov Lispa Dialekt vo mnogom pohozh na Common Lisp leksicheskaya oblast vidimosti razdelnye prostranstva imyon dlya funkcij i peremennyh dostatochno moshnaya sistema tipov dannyh podderzhka slozhnyh tipov makrosistema obektnaya sistema no menshe po obyomu Na 2018 god sushestvuet okolo desyatka osnovnyh realizacij ISLISP a vypuskaemyh preimushestvenno pod proprietarnymi licenziyami OpenLisp Osnovnaya statya OpenLisp Dialekt sozdannyj Kristianom Dzhulienom v 1988 godu Pervonachalno nazyvalsya MLisp v 1993 godu byl pereimenovan v OpenLisp Nazvanie simvoliziruet ispolzovanie otkrytyh standartov no ne imeet otnosheniya ni k Open Source Initiative ni k svobodnomu programmnomu obespecheniyu sistema rasprostranyaetsya po proprietarnoj licenzii Polnostyu sootvetstvuet specifikacii ISLISP dopolnitelno realizuet ryad otsutstvuyushih v dannom standarte sredstv Vozmozhna interaktivnaya razrabotka REPL v srede Emacs Krome interpretatora sistema soderzhit kompilyator preobrazuyushij ishodnyj kod v LAP Lisp Asssembly Program assemblero podobnyj nizkourovnevyj kod v formate lispovskih spiskov i generator koda kompiliruyushij LAP programmu v ishodnyj tekst na yazyke Si Mnogo vnimaniya udeleno vzaimodejstviyu s kodom na yazykah C C i Java podderzhke vstraivaniya v programmnye sistemy v kachestve interpretatora vstroennogo yazyka Sistema prodolzhaet razvivatsya i podderzhivatsya sushestvuyut versii dlya bolshinstva dostupnyh OS i apparatnyh platform PicoLisp Osnovnaya statya PicoLisp PicoLisp svobodnaya realizaciya Lispa rasschitannaya na ispolzovanie v Linux i drugih POSIX sistemah Proekt poyavilsya v konce 1980 h godov ego celyu bylo sozdanie minimalistichnoj i pri etom praktichnoj Lisp sistemy dlya personalnyh kompyuterov So storony yazyka PicoLisp otlichaetsya registro zavisimostyu podderzhkoj UTF 8 i predelnoj prostotoj Yadro podderzhivaet lish tri tipa dannyh chisla stroki i spiski Vvedeny sintaksicheskie sredstva pozvolyayushie upravlyat vychislimostyu parametrov forma quote rasshirena na neopredelyonnoe chislo parametrov Takoe reshenie isklyuchilo neobhodimost v specialnom sintaksise dlya makrosov i vyrazhenii lambda Ne podderzhivayutsya struktury i massivy imeetsya ekonomno vypolnennaya no moshnaya obektnaya podsistema V otlichie ot Common Lisp yazyk primenyaet dinamicheskoe svyazyvanie parametrov Sreda PicoLisp ne imeet kompilyatora eto principialnoe reshenie za schyot kotorogo proizvedeny mnogie uprosheniya v yazyke no vklyuchaet vstroennye server prilozhenij i podsistemu hraneniya Realizovan pryamoj vyzov vneshnih funkcij napisannyh na Si a takzhe vzaimodejstvie s kodom na Java Dialekt prodolzhaet razvivatsya regulyarno vyhodyat novye versii sredy programmirovaniya dlya neskolkih platform EuLisp Zapros EuLisp perenapravlyaetsya syuda sm takzhe drugie znacheniya Dialekt razrabatyvaemyj s 1985 goda soobshestvom evropejskih razrabotchikov i polzovatelej Lispa iz akademicheskoj i promyshlennoj sredy Mozhet rassmatrivatsya kak svoeobraznyj otvet Evropy na Common Lisp alternativnaya popytka sozdat prigodnyj dlya shirokogo kruga zadach edinyj dialekt Lispa Celyu proekta bylo sozdanie effektivnogo kompaktnogo i ne obremenyonnogo lispovskim proshlym yazyka Odnoj iz prioritetnyh zadach v razrabotke etogo proekta bylo dobavlenie v Lisp obektno orientirovannyh sredstv Dialekt podderzhivaet opredelenie modulej s leksicheskoj oblastyu vidimosti zamykaniya s dinamicheskim svyazyvaniem edinoe prostranstvo imyon dlya peremennyh i funkcij kak v Scheme vstroennuyu podderzhku parallelizma obektnuyu sistemu s edinichnym i mnozhestvennym nasledovaniem Osobennostyu proekta yavlyaetsya razdelenie yazyka na dva urovnya Level 0 i Level 1 nekotorye vozmozhnosti dostupny tolko na urovne 1 naprimer mnozhestvennoe nasledovanie i metaobekty Poslednyaya oficialnaya specifikaciya versiya 99 vyshla v 1993 godu eyo neoficialnaya pererabotka versiya 991 v 2010 godu Pervyj interpretator vyshel v 1990 godu v 1990 2000 h godah bylo sozdano neskolko realizacij razvitie kotoryh prekratilos k 2011 godu newLisp Osnovnaya statya newLisp Razrabotannyj v 1991 godu Lutcem Myullerom dialekt prednaznachennyj dlya ispolzovaniya v kachestve skriptovogo yazyka na rabochih stanciyah Sun pod SunOS i FreeBSD V nastoyashee vremya dostupen na 32 i 64 razryadnyh platformah Intel pod FreeBSD Linux Windows Mac Otlichaetsya prostotoj malym obyomom dinamicheskoj oblastyu vidimosti peremennyh imeet ryad osobennostej v sintaksise Podderzhivaet obektnuyu sistemu FOOP sredstva mezhprocessnogo vzaimodejstviya i mnogoe drugoe Sreda vklyuchaet interpretator mini IDE s redaktorom koda i emulyatorom terminala dlya interaktivnoj razrabotki biblioteki dlya veb razrabotki i raboty po seti cherez protokoly TCP i UDP Racket Osnovnaya statya Racket yazyk programmirovaniya Razrabatyvaemyj s 1994 goda kompaniej PLT Inc dialekt pervonachalno nosivshij imya PLT Scheme Yavlyaetsya potomkom dialekta Scheme no sushestvenno rasshiryaet ego Odnoj iz celej sozdaniya Racket bylo poluchenie platformy dlya razrabotki i realizacii predmetno orientirovannyh yazykov Harakternoj ego osobennostyu yavlyaetsya ochen moshnaya makrosistema kotoraya pozvolyaet sozdavat novye sintaksicheskie konstrukcii i dazhe yazyki Pri etom sistema modulej obespechivaet ispolzovanie v edinoj programme elementov napisannyh na razlichnyh dialektah s razlichnoj semantikoj Realizaciya vklyuchaet kompilyator sistemu vremeni vypolneniya JIT kompilyator integrirovannuyu sredu razrabotki s naborom instrumentov biblioteki IDE DrRacket napisannaya na samom Racket soderzhit profajler otladchik i sistemu yunit testirovaniya Dostupny biblioteki podderzhivayushie sistemnoe i setevoe programmirovanie veb razrabotku edinyj interfejs k operacionnoj sisteme interfejs dlya vyzova vneshnih funkcij neskolko variantov regulyarnyh vyrazhenij generatory programm leksicheskogo i grammaticheskogo razbora sredstva logicheskogo programmirovaniya i razvityj graficheskij interfejs polzovatelya Platforma realizovana dlya Windows MacOS Linux i drugih variantov UNIX Ona rasprostranyaetsya kak besplatnoe PO s otkrytym kodom pod licenziej GNU Lesser General Public License LGPL Podderzhivaetsya centralizovannyj repozitorij dlya paketov i rasshirenij sozdannyh soobshestvom Ispolzuetsya v kachestve issledovatelskogo v osnovnom kak platforma dlya razrabotki yazykov i instrumentov programmirovaniya uchebnogo skriptovogo promyshlennogo yazyka v chastnosti dlya razrabotki videoigr V uchebnom kurse angl primenyaetsya v koncepcii obuchenie putyom kodirovaniya igr Arc Osnovnaya statya Arc Arc dialekt sozdannyj Polom Gremom Zayavlennaya avtorom cel proekta sozdanie prostoj postroennoj na minimalnom nabore ekonomno opredelyonnyh sushnostej Lisp sistemy s naborom prakticheski poleznyh bibliotek orientirovannoj na professionalnoe primenenie i dopuskayushej effektivnye Lisp haki razlichnye vychislitelnye tryuki osnovannye na osobennostyah Lispa Avtor principialno otkazalsya ot podderzhki v Arc nekotoryh tehnologij v chastnosti OOP tak kak schyol chto oni nuzhny tolko pri vedenii razrabotki v ramkah krupnyh organizacij a sami po sebe ne dayut realnogo poleznogo effekta Razrabotka byla anonsirovana v 2001 godu pervaya publichnaya versiya poyavilas v 2008 Pervaya realizaciya yazyka byla napisana v srede Racket S 2009 goda originalnaya sistema prakticheski perestala razrabatyvatsya i sejchas razvitie Arc prodolzhaetsya v neskolkih forkah Dialekty dlya drugih sred V poslednie desyatiletiya shiroko rasprostranilis yazyki ispolzuyushie avtomaticheskoe upravlenie pamyatyu kompilyaciyu v promezhutochnyj kod i ispolnenie ego v virtualnoj mashine takie kak Java Python C i drugie Bylo sozdano i neskolko dialektov Lispa orientirovannyh na ispolnenie v dinamicheskih sredah drugih yazykov Eti dialekty poluchayut vozmozhnost napryamuyu rabotat s bibliotekami sootvetstvuyushej yazykovoj sredy i vzaimodejstvovat s programmami na drugih yazykah ispolnyaemymi v toj zhe srede Sredi nih Clojure Scheme podobnyj yazyk prednaznachennyj dlya ispolneniya pod JVM Kawa eshyo odin variant realizacii Scheme dlya JVM ili Hylang dialekt rabotayushij pod upravleniem sredy ispolneniya yazyka Python Lisp Flavored Erlang dialekt Lispa napisannyj na Erlang i ispolnyaemyj pod ego virtualnoj mashinoj BEAM Pixi Proekt ne razvivaetsya minimalistichnyj Lisp napisannyj na alternativnoj realizacii Python PyPyStandart Common LispOsnovnaya statya Common Lisp Osnovnye osobennosti V osnovnom na ideologicheskie osnovy standarta povliyali MACLisp i ego dialekty bolshoe kolichestvo vozmozhnostej bylo zaimstvovano iz InterLISP i novyh sistem takih kak Zetalisp i NIL Common Lisp yazyk so staticheskim svyazyvaniem peremennyh tradicionnym predstavleniem funkcij funkcii ne yavlyayutsya polnopravnymi grazhdanami podderzhivaet makrosy funkcionaly leksicheskie zamykaniya To est s tochki zreniya funkcionalnoj chasti yazyka on soderzhit ves tot nabor sintaksicheskih sredstv kotoryj za predydushie chetvert veka slozhilsya v Lispe i dostatochen dlya lyubyh prilozhenij funkcionalnogo programmirovaniya i rasshireniya yazyka v lyubom zhelaemom napravlenii Sistemnye funkcii v Common Lisp sohranili tradicionnye imena no mnogie iz nih imeyut sinonimy s bolee naglyadnymi imenami naprimer funkcii CAR poluchenie golovy spiska i CDR poluchenie hvosta spiska imeyut sinonimy sootvetstvenno FIRST pervyj i REST ostatok Poskolku stavilas cel razrabotki sistemy prigodnoj dlya maksimalno shirokogo spektra primenenij specifikaciya sushestvenno rasshirena funkciyami sintaksicheskimi sredstvami i mehanizmami neharakternymi dlya ishodnogo Lispa Tak naprimer v yazyk dobavleny prakticheski vse sushestvuyushie v imperativnyh yazykah sintaksicheskie konstrukcii vklyuchaya neskolko vidov ciklov Obektnaya sistema CLOS Common Lisp Object System pervonachalno ne byla vklyuchena v standart no voshla v nego pozzhe Common Lisp prigoden dlya napisaniya programm kak v funkcionalnom tak i v direktivnom stile na nyom vozmozhno obobshyonnoe programmirovanie posredstvom standartnyh makrosov produkcionnoe programmirovanie imeyutsya sredstva dlya organizacii logicheskogo obektnogo programmirovaniya i programmirovaniya upravlyaemogo dannymi Specifikaciya ne vklyuchaet v sebya podrobnogo opisaniya sredy programmirovaniya opredelyaya lish v samyh obshih chertah eyo sostav i principy vzaimodejstviya elementov Kritiki novogo standarta ukazyvali na ego razdutost i chrezmernoe vnimanie udelyonnoe prakticheskim trebovaniyam chto privelo k narusheniyu funkcionalnoj chistoty Lispa i uvelicheniyu obyoma lisp sistemy Tem ne menee pod nazhimom Ministerstva oborony SShA i chastichno s ego finansovoj podderzhkoj vo vtoroj polovine 1980 h godov byli sozdany Common Lisp realizacii prakticheski dlya vseh rasprostranyonnyh platform Dalnejshie modifikacii Seryoznyj peresmotr vyshedshego v 1984 godu standarta sostoyalsya v 1990 godu Obektnaya sistema CLOS ishodno ne vhodivshaya v specifikaciyu Common Lisp a schitavshayasya nekim dopolneniem k nej stala chastyu oficialnogo standarta Byl standartizovan makros loop realizuyushij vstroennyj imperativnyj yazyk s infiksnym sintaksisom Vneseny izmeneniya v tipy dannyh Standartizovan mehanizm pretty print formatirovannogo vyvoda koda i dannyh Vvedeny makrosy kompilyacii Dobavleny novye operatory i vneseny izmeneniya v sushestvuyushie Obnovlena sistema podderzhki paketov Sdelan ryad bolee melkih izmenenij V 1995 godu Common Lisp byl standartizovan ANSI Standart prakticheski povtoril specifikaciyu 1990 goda izmeneniya neznachitelny i sostoyat v osnovnom v dobavlenii udalenii i pereimenovanii operatorov i sistemnyh peremennyh i izmeneniyah v sistemnyh vyzovah Mozhno otmetit poyavlenie v Common Lisp tipa boolean logicheskogo znacheniyami kotorogo mogut byt tolko NIL i T PrimeryPrimer programmy vyvodyashej soobshenie Hello world format t Hello world Rekursivnaya versiya funkcii N go chisla Fibonachchi defun fibonacci n if gt n 1 fibonacci n 1 fibonacci n 2 n Iterativnaya versiya funkcii opredeleniya N go chisla Fibonachchi s ispolzovaniem makrosa Loop defun fibonacci n loop repeat n for a 0 then b and b 1 then a b finally return b Rekursivnaya funkciya vychisleniya proizvolnoj celoj stepeni algoritm s logarifmicheskimi vremenem vypolneniya i glubinoj rekursii defun power x n cond minusp n 1 power x n zerop n 1 evenp n power x x n 2 t x power x x n 1 2 Zdes ispolzovany sistemnye predikaty ZEROP proverka na ravenstvo nulyu MINUSP proverka na otricatelnost EVENP proverka na chyotnost Varianty Kuajn programmy vyvodyashej svoj ishodnyj kod na Lispe lambda x list x list quote x quote lambda x list x list quote x lambda x list x list quote x lambda x list x list quote x Oba budut rabotat na bolshinstve dialektov Lispa v tom chisle i na Scheme Kakoj iz nih okazhetsya tochnee zavisit ot realizacii lisp sistemy v odnih pri vyvode spisochnogo znacheniya dlya otobrazheniya blokirovki vychisleniya specialnyj operator quote vyvoditsya v vide polnogo imeni dlya nih podojdyot pervyj variant v drugih v vide apostrofa vtoroj variant Variant Kuajn na Common Lisp c ispolzovaniembackquote lambda x x x lambda x x x Vremennaya shkala dialektov LispaPrimenenieSfery primeneniya yazyka Lisp mnogoobrazny nauka i promyshlennost obrazovanie i medicina ot dekodirovaniya genoma cheloveka do sistemy proektirovaniya avialajnerov Pervye oblasti primeneniya yazyka Lisp byli svyazany s simvolnoj obrabotkoj dannyh i processami prinyatiya reshenij Naibolee populyarnyj segodnya dialekt Common Lisp yavlyaetsya universalnym yazykom programmirovaniya On shiroko ispolzuetsya v samyh raznyh proektah Internet servery i sluzhby servery prilozhenij i klienty vzaimodejstvuyushie s relyacionnymi i obektnymi bazami dannyh nauchnye raschyoty i igrovye programmy Sushestvuyut specializirovannye dialekty Lispa prednaznachennye dlya konkretnyh primenenij naprimer GOAL sozdan dlya napisaniya vysokodinamichnyh tryohmernyh igr na nyom celikom napisana seriya igr Jak and Daxter Odno iz napravlenij primeneniya Lispa ego ispolzovanie v kachestve skriptovogo yazyka avtomatiziruyushego rabotu v ryade prikladnyh programm v tom chisle AutoLISP skriptovyj yazyk SAPR AutoCAD Emacs Lisp vstroennyj yazyk tekstovogo redaktora Emacs ispolzovannyj kak v realizacii samogo redaktora tak i v razrabotke dopolnenij k nemu chto dayot neogranichennye vozmozhnosti rasshireniya funkcionalnosti skriptovyj yazyk v izdatelskom programmnom obespechenii Interleaf Quicksilver Nyquist skriptovyj yazyk v audioredaktore Audacity blizok k Emacs Lisp yazyk nastroek i rasshirenij v okonnom menedzhere Sawfish skriptovyj yazyk SAPR kompanii Cadence Design Systems odin iz skriptovyh yazykov v svobodnom graficheskom processore Gimp versii 2 4 ili bolee V predydushih versiyah ispolzovalsya eshyo odin dialekt Lispa ICAD sistema znanij na osnove znanij kotoraya pozvolyaet polzovatelyam kodirovat znaniya dizajna i opyt inzhenernogo proektirovaniya Yazyki potomkiV sluchae Lispa slozhno provesti chyotkuyu gran mezhdu dialektom i yazykom potomkom tak kak razlichnye dialekty Lispa sozdannye za bolee chem polveka ego sushestvovaniya mogut sushestvenno razlichatsya i byt nesovmestimymi S drugoj storony Lisp prosto v silu vozrasta okazal to ili inoe vliyanie na ogromnoe chislo yazykov prichyom ne tolko funkcionalnyh Esli schitat pryamymi potomkami Lispa tolko yazyki sohranivshie obshuyu strukturu programmy no sintaksicheski nesovmestimye s Lispom to mozhno vydelit Scheme razrabotannyj v 1976 variant Lispa po sej den ispolzuemyj v obuchenii programmirovaniyu i v issledovatelskih celyah a takzhe primenyaemyj v kachestve vstraivaemogo yazyka Racket potomok Scheme razrabatyvaemyj s 1994 goda i nahodyashijsya v ispolzovanii po sej den Moshnaya rasshiryaemaya lisp sistema vklyuchayushaya v sebya vse sovremennye sredstva podderzhki programmirovaniya i bolshoj massiv bibliotek Clojure sozdannyj v 2007 godu na osnove Lispa yazyk funkcionalnogo programmirovaniya integrirovannyj s platformoj Java programmy transliruyutsya v bajt kod i rabotayut pod upravleniem JVM Unasledovav osnovnye cherty Lispa yazyk imeet celyj ryad sintaksicheskih otlichij i novovvedenij Integraciya s Java platformoj dayot vozmozhnost neposredstvenno primenyat ves massiv nakoplennyh bibliotek dlya dannoj platformy Takzhe Clojure imeet vstroennuyu podderzhku parallelnogo programmirovaniya prichyom yavlyaetsya odnim iz nemnogih yazykov podderzhivayushih mehanizm tranzakcionnoj pamyati Logo yazyk i interaktivnaya sreda razrabotannye v 1967 godu Sejmurom Pejpertom i Idit Harel dlya obucheniya detej doshkolnogo i mladshego shkolnogo vozrasta osnovnym koncepciyam programmirovaniya Yazyk imeet lisp podobnyj spisochnyj sintaksis v kotorom ustranena neobhodimost ispolzovaniya bolshinstva skobok Podderzhivaetsya takzhe i imperativnaya forma programmy napominayushaya Bejsik Povtorenie krome rekursii mozhet byt realizovano s pomoshyu konstrukcii cikla s fiksirovannym chislom iteracij Harakternaya osobennost sredy interpretatora Logo podderzhka vizualnogo agenta cherepashki izobrazhaemoj v vide piktogrammy na graficheskom pole v okne Cherepashka mozhet dvigatsya i povorachivatsya ona imeet pero kotoroe mozhet byt podnyato ili opusheno Pri dvizhenii s opushennym perom cherepashka ostavlyaet sled liniyu na ekrane Upravlyaya cherepashkoj snachala s pomoshyu otdelnyh komand vperyod povernut podnyat pero opustit pero vybrat cvet i t d a zatem naborov komand i celyh programm soderzhashih slozhnye konstrukcii obuchaemyj poluchaet vozmozhnost osvaivat programmirovanie v igrovoj forme neposredstvenno nablyudaya rezultaty svoih usilij v vide izobrazhenij na ekrane Sushestvuyut realizacii s podderzhkoj OOP i parallelnogo ispolneniya Lisp mashinyOsnovnaya statya Lisp mashina V nachale 1970 h godov byli osoznany ogranicheniya nakladyvaemye sistemoj razdeleniya vremeni na polzovatelej interaktivnyh programmnyh sredstv k kotorym otnosyatsya i lisp sistemy i bolshinstvo napisannyh na Lispe programm Krome togo dlya Lispa otnositelno veliki zatraty na dinamicheskuyu podderzhku vklyuchayushuyu proverku tipov vo vremya ispolneniya i periodicheskuyu sborku musora V 1973 godu voznikla ideya razrabotki kompyutera individualnogo polzovaniya rabochej stancii sproektirovannoj nachinaya s oborudovaniya specialno dlya dostizheniya maksimalno effektivnogo ispolneniya lisp programm v tom chisle s apparatnoj podderzhkoj lyambda vychislenij i dinamicheskoj tipizacii V SShA razrabotki lisp kompyutera velis v 1970 h godah v issledovatelskom centre Palo Alto prinadlezhashem korporacii Xerox i v MIT poslednee sponsirovalos DARPA Ih rezultatom stalo poyavlenie v nachale seredine 1980 h godov tryoh osnovnyh proizvoditelej Xerox LMI i Xerox proizvodil lisp mashiny podderzhivayushie Interlisp dve poslednie kompanii proishodili iz MIT i orientirovalis na Zetalisp Neskolko pozzhe proizvodstvom lisp mashin zanyalas Texas Instruments V Yaponii v 1984 godu byl pokazan pervyj prototip kommercheskoj lisp mashiny Alpha firmy Fudzicu Lisp mashiny imeli apparatnuyu arhitekturu orientirovannuyu na obrabotku spiskov i funkcionalnoe programmirovanie s apparatnoj podderzhkoj sborki musora dinamicheskoj tipizacii Oni imeli integrirovannye sredy razrabotki soderzhashie tysyachi funkcij i vklyuchayushie v sebya vse komponenty kotorye v nastoyashee vremya sostavlyayut IDE yazykov vysokogo urovnya Podderzhivalsya mnogookonnyj graficheskij interfejs polzovatelya rabota s myshyu i drugimi dopolnitelnymi sredstvami pozicionirovaniya trekbol svetovoe pero vysokokachestvennyj vvod vyvod grafiki i zvuka Nesmotrya na lisp orientirovannost v lisp mashinah byli dostupny i drugie yazyki vysokogo urovnya i predostavlyalis sredstva mezhyazykovogo vzaimodejstviya Na Lispe obespechivalas kak rabota v interpretiruemom rezhime tak i kompilyaciya programm v obektnyj kod Dlya svoego vremeni lisp mashiny byli odnimi iz moshnejshih EVM v klasse personalnyh rabochih stancij Im prorochili bolshoe budushee no v 1990 h godah vse oni vyshli iz upotrebleniya a proizvoditeli libo prekratili svoyu deyatelnost libo pereorientirovalis na vypusk kompyuterov obshego naznacheniya Prichinoj stalo to chto v usloviyah dlitelnogo eksponencialnogo rosta skorosti i obyomov pamyati kompyuterov razrabotka oborudovaniya pod yazyk okazalas besperspektivnoj bystro razvivayushiesya kompyutery obshego naznacheniya snabzhyonnye translyatorami Lispa po svoim vozmozhnostyam obognali lisp mashiny kotorye iz za svoej specializacii byli dorozhe i proigryvali v universalnosti Lisp v SSSR i RossiiV razdele ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 15 fevralya 2020 V SSSR raboty svyazannye s ispolzovaniem Lispa i sozdaniem sobstvennyh lisp sistem aktivizirovalis posle 1968 goda kogda gruppa amerikanskih uchyonyh sredi kotoryh byli Makkarti i B Berkli utochnit posetila Sovetskij Soyuz V Novosibirske v VC Sibirskogo otdeleniya Akademii nauk gde Makkarti provyol bolshe vsego vremeni on zalozhil osnovu realizacii Lispa na BESM 6 V Moskve v VC AN SSSR sovetskie matematiki Lavrov i pri sodejstvii Berkli nachali rabotu nad sobstvennoj versiej lisp interpretartora dlya BESM 6 Vposledstvii Lavrov pereshyol na rabotu v LGU a Silagadze v VC Gruzinskoj akademii nauk v Tbilisi gde oni prodolzhili rabotu s Lispom i uchastvovali v sozdanii neskolkih lisp sistem dlya ES EVM V Leningrade byla sozdana lisp sistema dlya polskogo kompyutera Odra 1204 v Moskve realizaciya dlya BESM 6 sovmestimaya s anglijskoj versiej Lispa dlya kompyutera ICL 4 v MEI i v Dalnevostochnom nauchnom centre vo Vladivostoke poyavilis realizacii dlya ES EVM V Institute problem peredachi informacii Moskva v konce 1970 h byla sozdana lisp sistema EKLISP dlya mini kompyutera ECLIPS Na kompyuterah zapadnogo proizvodstva v SSSR ispolzovalis Stanford Lisp i UT Lisp Dubna IBM 370 i CDC 6600 Takzhe populyarna byla shvedskaya sistema Nordstryoma Lisp na Fortrane V 1975 godu v Tbilisi sostoyalas chetvyortaya mezhdunarodnaya konferenciya po problemam iskusstvennogo intellekta IJCAI 75 kotoraya sposobstvovala povysheniyu interesa k Lispu i rasprostraneniyu ego v universitetah i NII V 1978 godu vyshel pervyj uchebnik Lispa na russkom yazyke avtorstva Svyatoslava Lavrova i Givi Silagadze Avtomaticheskaya obrabotka dannyh Yazyk LISP i ego realizaciya V 1980 e gody interes k Lispu v SSSR sohranyalsya tem ne menee literatury po yazyku izdavalos ochen malo za desyatiletie vyshlo dve knigi obe perevodnye Funkcionalnoe programmirovanie Primenenie i realizaciya Hendersona perevedyonnaya v 1983 godu i dvuhtomnik Mir Lispa Hyuvyonena i Seppyanena perevod kotoroj byl izdan v 1990 V postsovetskoj Rossii ispolzovanie Lispa v osnovnom ogranichivaetsya akademicheskimi issledovaniyami i rabotami otdelnyh entuziastov Krome togo Lisp prodolzhaet ispolzovatsya v uchebnyh celyah v nekotoryh rossijskih universitetah no i zdes v poslednie gody on okazalsya zametno potesnyon kak yazyk obshego naznacheniya on ne prepodayotsya i ne ispolzuetsya a v kachestve uchebnyh yazykov dlya prepodavaniya funkcionalnogo programmirovaniya chasto predpochitayut ispolzovat bolee molodye funkcionalnye yazyki poyavivshiesya v poslednie dva desyatiletiya Tem ne menee interes k yazyku sohranyaetsya svidetelstvom chego yavlyaetsya poyavlenie perevodnyh i originalnyh pechatnyh rabot po Lispu vozobnovivsheesya v 2010 2020 e gody Lisp v folklore programmistovSushestvuet alternativnaya rasshifrovka nazvaniya LISP Lots of Irritating Superfluous Parentheses Mnogo razdrazhayushih lishnih skobok namyok na osobennosti sintaksisa yazyka Shutlivoe Desyatoe pravilo Grinspena glasit Lyubaya dostatochno slozhnaya programma na Si ili Fortrane soderzhit zanovo napisannuyu nespecificirovannuyu glyuchnuyu i medlennuyu realizaciyu poloviny yazyka Common Lisp Pravilo nesmotrya na svoyu yumoristichnost fiksiruet dostatochno shiroko rasprostranyonnoe sredi storonnikov funkcionalnyh yazykov programmirovaniya mnenie o tom chto pri programmirovanii na tradicionnyh imperativnyh yazykah razrabotchiki tratyat ochen mnogo vremeni na realizaciyu prichyom v nepolnom obyome i s hudshim kachestvom teh vozmozhnostej kotorye funkcionalnym yazykam v chastnosti Lispu prisushi iznachalno Primechaniyahttp www formal stanford edu jmc history lisp node3 html Robert U Sebesta 2 4 2 Process razrabotki yazyka LISP Osnovnye koncepcii yazykov programmirovaniya 5 e izdanie Vilyams 2001 S 70 659 s ISBN 5845901928 Terens Pratt 14 LISP 1 5 Yazyki programmirovaniya Razrabotka i realizaciya Programming Languages Design and Implementation 1 e izd M Mir 1979 S 455 573 s Zabluzhdeniya otnositelno Lisp neopr statya svoego roda volnyj perevod 1 glavy iz knigi Successful Lisp Devida Lemkinsa Data obrasheniya 3 avgusta 2010 20 maya 2011 goda John McCarthy Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I Communications of the ACM ACM New York 1960 T 3 vyp 4 S 184 195 doi 10 1145 367177 367199 4 oktyabrya 2013 goda Graham Paul 1964 ANSI Common Lisp Englewood Cliffs N J Prentice Hall 1996 xiii 432 pages s ISBN 0133708756 9780133708752 8 oktyabrya 2007 goda russkij perevod Grem Pol ANSI Common Lisp Per s angl SPb Simvol Plyus 2012 448 s ISBN 9785932862063 0133708756 McCarthy J Abrahams P Edwards D et al Lisp 1 5 Programmer s Manual MIT Press Cambrige Massachusetts 1962 ISO IEC 13816 1997 E neopr Data obrasheniya 26 avgusta 2018 10 aprelya 2016 goda ISO IEC 13816 2007 E neopr Data obrasheniya 26 avgusta 2018 30 iyulya 2016 goda Alexander Burger Pico Lisp A Radical Approach to Application Development angl 22 iyunya 2006 Data obrasheniya 25 iyulya 2019 28 iyulya 2019 goda Pervye realizacii yazyka Lisp v SSSR neopr Data obrasheniya 6 oktyabrya 2021 6 oktyabrya 2021 goda Gorlyanskij S P Funkcionalnoe programmirovanie Osnovy yazyka Lisp realizaciya algoritmov i reshenie zadach Kazan Buk 2023 3052 s ISBN 978 5 907665 30 9 The Jargon File Lisp ot 18 aprelya 2021 na Wayback Machine angl LiteraturaH Abelson D Sassman Struktura i interpretaciya kompyuternyh programm Kniga i kurs lekcij MIT V kachestve osnovnogo yazyka ispolzuetsya Scheme Paul Graham ANSI Common Lisp Prentice Hall 1995 ISBN 0 13 370875 6 angl Perevod Pol Grem ANSI Common Lisp SPb Simvol Plyus 2012 448 s ISBN 978 5 93286 206 3 Paul Graham On Lisp Prentice Hall 1993 ISBN 0 13 030552 9 angl Peter Seibel angl Hyuvyonen E Seppyanen J Mir Lispa V 2 h t Per s finsk M Mir 1990 ISBN 5 03 001935 9 russk ISBN 5 03 001336 9 ISBN 951 26 2787 6 finsk Gorlyanskij S P Funkcionalnoe programmirovanie Osnovy yazyka Lisp realizaciya algoritmov i reshenie zadach Kazan Buk 2024 3644 s ISBN 978 5 907839 21 2 SsylkiImeetsya vikiuchebnik po teme Lisp russkij perevod knigi angl angl Cookbook russkij perevod nezakonchennyj sbornika receptov Common Lisp Cookbook angl lisp ru resursy po yazyku Lisp uchebniki stati lisp ystok ru Lisp u Istokov literatura ssylki proekty s ishodnym kodom Ssylki na anglijskom statya Dzhona Makkarti Recursive Functions of Symbolic Expressions and Their Computation by Machine soderzhashej pervonachalnoe opisanie yazyka Lisp gigamonkeys com sajt knigi Practical Common Lisp otkuda mozhet byt skachana elektronnaya versiya pdf i arhiv s ishodnymi kodami dlya knigi Cliki viki resurs o bibliotekah i proektah Common Lisp Sam resurs napisan polnostyu na Common Lisp common lisp net osnovnoj hosting Common Lisp proektov lisp org associaciya polzovatelej Lisp na Gmane
Вершина