Лісп (Lisp) — мова програмування загального призначення з підтримкою парадигм функціонального та процедурного програмування. Вихідна інформація записується у вигляді списків.
Lisp Лісп | |
---|---|
Парадигма | функціональне та процедурне програмування |
Дата появи | 1958 |
Творці | Джон Маккарті |
Розробник | , , |
Система типізації | dynamic, strong |
Діалекти | Common Lisp, Emacs Lisp, , Scheme, AutoLISP, Clojure |
Під впливом від | d |
Вплинула на | Logo, Python, Smalltalk, Ruby, Dylan, Mathematica |
|
Мову програмування Лісп було розроблено в кінці 1950-х у Массачусетському Технологічному Інституті для дослідження проблем штучного інтелекту. Але, через потужність закладених принципів, мова програмування Лісп також придатна для багатьох інших застосувань.
Формальний опис мови
Комп'ютерна програма на Lisp педставляє рекурсивну функцію символьних виразів, яка будується аналогічно арифметичним функціям із елементарних з допомогою умовного оператору та операції суперпозиції. Умовний оператор має вигляд (p1 → l1; …, pn → ln). Результатом його виконання буде вираз li, якщо pi є істинним.
Існує п'ять елементарних функцій:
- atom — булева функція, яка визначає чи є досліджуваний вираз атомом — неподільною одиницею інформації;
- eq — булева функція, яка визначає рівність двох атомів;
- car, cdr — функції, які виокремлюють перший елемент та хвіст (список із всіх елементів окрім першого) відповідно;
- cons — включає новий елемент в початок списку.
Окрім елементарних функцій визначаються ряд складніших функцій, які будуються на їхній основі.
Базові відомості
LISP означає LISt Processing (обробка списків), мова програмування працює із списками (та списками списків) розміщуючи їх між дужками. Дужки визначають межі списку. Списки є базисом мови програмування Лісп. Мова програмування Лісп була однією із перших мов програмування з автоматичним прибиранням сміття із пам'яті.
Однією з переваг Lisp є те, що кожна змінна може виступати як рядок символів (власне ім'я), посилання на значення, структура даних або функція. Саме останній факт зробив цю мову дуже зручною при розробці лінгвістичних програм, особливо для природних мов з чіткою структурою речення (наприклад, англійська). В таких мовах кожне слово, його зміст/сенс/імператив, можна інтерпретувати як функцію від слів, що знаходяться на чітко визначених позиціях у реченні, до того ж ці позиції визначаються самим цим словом. Приклад системи, що побудована на цій ідеї можна знайти в книзі Т.Вінограда «Програма яка розуміє природну мову». Ця система реалізує діалог з користувачем природною мовою. Користувач бачить перед собою стіл з деякими предметами різного кольору, і може віддавати накази природною мовою, про перенесення якогось предмету. При цьому система (маніпулятор) сама визначає що треба зняти з цього предмету, який предмет на яких можна класти (на піраміду вже нічого не покладеш), і якщо є неоднозначність у виборі предмету ставить уточнювальні питання. Також реалізовано контекстне посилання займенників по тексту діалогу (користувач може сказати: «перестав той куб туди-то», і система з тексту діалогу може визначити, який саме «той куб»). Це імперативи. Також система може відповідати на питання. Вивід відповіді схожий до прологівського. Також є можливість користувачу висловлювати декларативи — вносити нові знання про об'єкти, наприклад, надавати їм імена. Хоча словник і база знань відносно не велика, але вона має можливості до розширення.
Приклади
В наступному прикладі показано застосування «фундаментальної» функції cons:
(cons 'pine '(fir oak maple))
В результаті інтерпретації цього виразу, буде отримано список (pine fir oak maple).
Перший елемент (голова) списку може бути отриманий в результаті застосування функції car:
(car '(rose violet daisy buttercup))
Решту елементів списку можна отримати шляхом застосування функції cdr:
(cdr '(rose violet daisy buttercup))
Результат виконання цього виразу список (violet daisy buttercup).
Див. також
Джерела
Література
- Енциклопедія кібернетики, , том 1, ст. 531.
- Robert J. Chassel, An Introduction to Programming in Emacs Lisp.
- Mc Carthy J., Recursive functions of symbolic expressions and their computation by machine, part 1. «Communications of the Associations for Computing Machinery», 1960, v. 3, N. 4.
- Є. Хювьонен, Й. Сеппянен, Мир Лиспа методы и системы программирования, Москва, «Мир», (в двох томах) 1990.
- Пантелеев, А. Г. (1980). Об интерпретаторе с языка Лисп для ЕС ЭВМ (рос.). № 3. с. 86—87.
{{}}
: Проігноровано|journal=
()
Навчальні матеріали
- Медведєв Михайло Геннадійович, «Мова функціонального програмування Лісп» [ 5 жовтня 2006 у Wayback Machine.].
- LispMachine.net Інформація та книжки про Лісп [ 20 серпня 2010 у Wayback Machine.](англ.)
- On Lisp [ 27 вересня 2007 у Wayback Machine.], безкоштовна книга Пола Грехема.(англ.)
Посилання
- Lisp, каталог посилань Open Directory Project
- comp.lang.lisp група Usenet присвячена мові програмування Лісп.
- Association of Lisp Users [ 13 квітня 2022 у Wayback Machine.] (Асоціація Користувачів Лісп).(англ.)
- .(англ.)
- .(англ.)
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Lisp Lisp mova programuvannya zagalnogo priznachennya z pidtrimkoyu paradigm funkcionalnogo ta procedurnogo programuvannya Vihidna informaciya zapisuyetsya u viglyadi spiskiv Lisp LispParadigma funkcionalne ta procedurne programuvannyaData poyavi 1958Tvorci Dzhon MakkartiRozrobnik Sistema tipizaciyi dynamic strongDialekti Common Lisp Emacs Lisp Scheme AutoLISP ClojurePid vplivom vid dVplinula na Logo Python Smalltalk Ruby Dylan Mathematica Mediafajli u Vikishovishi Movu programuvannya Lisp bulo rozrobleno v kinci 1950 h u Massachusetskomu Tehnologichnomu Instituti dlya doslidzhennya problem shtuchnogo intelektu Ale cherez potuzhnist zakladenih principiv mova programuvannya Lisp takozh pridatna dlya bagatoh inshih zastosuvan Formalnij opis moviKomp yuterna programa na Lisp pedstavlyaye rekursivnu funkciyu simvolnih viraziv yaka buduyetsya analogichno arifmetichnim funkciyam iz elementarnih z dopomogoyu umovnogo operatoru ta operaciyi superpoziciyi Umovnij operator maye viglyad p1 l1 pn ln Rezultatom jogo vikonannya bude viraz li yaksho pi ye istinnim Isnuye p yat elementarnih funkcij atom buleva funkciya yaka viznachaye chi ye doslidzhuvanij viraz atomom nepodilnoyu odiniceyu informaciyi eq buleva funkciya yaka viznachaye rivnist dvoh atomiv car cdr funkciyi yaki viokremlyuyut pershij element ta hvist spisok iz vsih elementiv okrim pershogo vidpovidno cons vklyuchaye novij element v pochatok spisku Okrim elementarnih funkcij viznachayutsya ryad skladnishih funkcij yaki buduyutsya na yihnij osnovi Bazovi vidomostiLISP oznachaye LISt Processing obrobka spiskiv mova programuvannya pracyuye iz spiskami ta spiskami spiskiv rozmishuyuchi yih mizh duzhkami Duzhki viznachayut mezhi spisku Spiski ye bazisom movi programuvannya Lisp Mova programuvannya Lisp bula odniyeyu iz pershih mov programuvannya z avtomatichnim pribirannyam smittya iz pam yati Odniyeyu z perevag Lisp ye te sho kozhna zminna mozhe vistupati yak ryadok simvoliv vlasne im ya posilannya na znachennya struktura danih abo funkciya Same ostannij fakt zrobiv cyu movu duzhe zruchnoyu pri rozrobci lingvistichnih program osoblivo dlya prirodnih mov z chitkoyu strukturoyu rechennya napriklad anglijska V takih movah kozhne slovo jogo zmist sens imperativ mozhna interpretuvati yak funkciyu vid sliv sho znahodyatsya na chitko viznachenih poziciyah u rechenni do togo zh ci poziciyi viznachayutsya samim cim slovom Priklad sistemi sho pobudovana na cij ideyi mozhna znajti v knizi T Vinograda Programa yaka rozumiye prirodnu movu Cya sistema realizuye dialog z koristuvachem prirodnoyu movoyu Koristuvach bachit pered soboyu stil z deyakimi predmetami riznogo koloru i mozhe viddavati nakazi prirodnoyu movoyu pro perenesennya yakogos predmetu Pri comu sistema manipulyator sama viznachaye sho treba znyati z cogo predmetu yakij predmet na yakih mozhna klasti na piramidu vzhe nichogo ne pokladesh i yaksho ye neodnoznachnist u vibori predmetu stavit utochnyuvalni pitannya Takozh realizovano kontekstne posilannya zajmennikiv po tekstu dialogu koristuvach mozhe skazati perestav toj kub tudi to i sistema z tekstu dialogu mozhe viznachiti yakij same toj kub Ce imperativi Takozh sistema mozhe vidpovidati na pitannya Vivid vidpovidi shozhij do prologivskogo Takozh ye mozhlivist koristuvachu vislovlyuvati deklarativi vnositi novi znannya pro ob yekti napriklad nadavati yim imena Hocha slovnik i baza znan vidnosno ne velika ale vona maye mozhlivosti do rozshirennya PrikladiV nastupnomu prikladi pokazano zastosuvannya fundamentalnoyi funkciyi cons cons pine fir oak maple V rezultati interpretaciyi cogo virazu bude otrimano spisok pine fir oak maple Pershij element golova spisku mozhe buti otrimanij v rezultati zastosuvannya funkciyi car car rose violet daisy buttercup Reshtu elementiv spisku mozhna otrimati shlyahom zastosuvannya funkciyi cdr cdr rose violet daisy buttercup Rezultat vikonannya cogo virazu spisok violet daisy buttercup Div takozhLisp u sestrinskih Vikiproyektah Portal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi Lisp mashina Lyambda chislennya Common Lisp Scheme Emacs LispDzherelahttp portal acm org citation cfm id 367177 367199LiteraturaEnciklopediya kibernetiki tom 1 st 531 Robert J Chassel An Introduction to Programming in Emacs Lisp Mc Carthy J Recursive functions of symbolic expressions and their computation by machine part 1 Communications of the Associations for Computing Machinery 1960 v 3 N 4 Ye Hyuvonen J Seppyanen Mir Lispa metody i sistemy programmirovaniya Moskva Mir v dvoh tomah 1990 Panteleev A G 1980 Ob interpretatore s yazyka Lisp dlya ES EVM ros 3 s 86 87 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite book title Shablon Cite book cite book a Proignorovano journal dovidka Navchalni materiali Medvedyev Mihajlo Gennadijovich Mova funkcionalnogo programuvannya Lisp 5 zhovtnya 2006 u Wayback Machine LispMachine net Informaciya ta knizhki pro Lisp 20 serpnya 2010 u Wayback Machine angl On Lisp 27 veresnya 2007 u Wayback Machine bezkoshtovna kniga Pola Grehema angl Posilannya Lisp katalog posilan Open Directory Project comp lang lisp grupa Usenet prisvyachena movi programuvannya Lisp Association of Lisp Users 13 kvitnya 2022 u Wayback Machine Asociaciya Koristuvachiv Lisp angl angl angl Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi