1.2. Yazыk LISP
1.2.1. Funksionalnoye programmirovaniye.
Stil razrabotki programm na Lispe poluchil nazvaniye "funksionalnoye programmirovaniye" (FP). Osnovnыye polojeniya etogo stilya vosprinyatы mnogimi yazыkami programmirovaniya s obщyey logikoy utochneniya reshayemыx zadach i obobщyeniya resheniy na osnove vыbrannыx spesialno bazovыx konstruksiy:
1. Bazovыye konstruksii opredelyayutsya kak strogiye funksii.
2. Pri neobxodimosti vыpolnyayutsya preobrazovaniya programm, (kompilyasiya, optimizasiya, re-faktoring i t.p.) dlya uluchsheniya ekspluatasionnыx xarakteristik, svyazannыx s prosessami ispolneniya programm.
3. Vajnыy kriteriy kachestva programmirovaniya - polnota sistemы resheniy i universalnost realizovannыx opredeleniy dlya sintaksicheski upravlyayemoy obrabotki dannыx funksiyami vыsokix poryadkov (kompilyator i t.p.), chto suщyestvenno povыshayet nadejnost proyektov dlya razvivayuщixsya postanovok zadach.
4. Razrabotka IS predusmatrivayet vыpolneniye ryada shagov, nachalnыye iz kotorыx vыpolnyayut rol uproщyennыx prototipov dlya realizasii posleduyuщix, vozmojno drugimi, boleye effektivnыmi, sredstvami.
Otpravlyayas ot odnoznachnыx funksiy, v Lisp-ye obespecheno predelno shirokoye tolkovaniye ponyatiya "znacheniye", obyedinyayuщyeye ponyatiya "struktura dannыx" i "funksiya":
1. Oriyentiruyas na rekursivnыye opredeleniya funksiy, vvedena sxema, dostatochno udobnaya dlya postroyeniya formul, zadayuщix funksionalnыye opredeleniya. V kachestve primera predlojen idealnыy Lisp (Pure Lisp).
2. Predstavleniya funksiy otobrajenы na mnojestvo spiskov i atomov i opredelena universalnaya funksiya, po spisochnomu predstavleniyu funksii i yeye argumentov stroyaщaya yeye rezultat.
3. Izucheno rasshireniye funksionalnogo yazыka, dostatochnoye dlya standartnogo programmirovaniya, yestestvennogo dlya privыchnыx zadach.
Konstruirovaniye funksiy sredstvami chistogo Lispa dostavlyayet intellektualnoye udovolstviye, ono srodni resheniyu matematicheskix golovolomok. V etom isklyuchitelno moщnom yazыke ne tolko realizovanы osnovnыye sredstva, obespechivshiye praktichnost i rezultativnost funksionalnogo programmirovaniya, no i vpervыye oprobovan selыy ryad porazitelno tochnыx postroyeniy, sennыx kak konseptualno, tak i metodicheski i konstruktivno, ponimaniye i osmыsleniye kotorыx slishkom otstayet ot praktiki primeneniya. Ponyatiyno-funksionalnыy potensial yazыka Lisp 1.5 v znachitelnoy mere unasledovan standartom Common Lisp, no ne vse idei poluchili dostoynoye razvitiye. Vozmojno eto delo buduщyego - dlya novogo pokoleniya sistemnыx programmistov, no eto uje drugaya istoriya.
Produmannost i metodicheskaya obosnovannost pervыx realizasiy Lispa pozvolila bыstro nakopit opыt resheniya novыx zadach, podgotovit ix dlya prikladnogo i teoreticheskogo programmirovaniya. V nastoyaщyeye vremya suщyestvuyut sotni dialektov Lisp-a i yazыkov funksionalnogo programmirovaniya na baze Lisp-a, oriyentirovannыx na raznыye klassы zadach i vidы texnicheskix sredstv.
Idei Lispa vыderjali mnogoletnyuyu shlifovku i zaslujili dostoynuyu osenku spesialistov i lyubiteley. Universalnost Lispa dostatochna dlya modelirovaniya lyubogo stilya programmirovaniya. Vыrazitelnaya sila Lispa obretayet novoye dыxaniye na kajdom evolyusionnom vitke razvitiya informasionnыx texnologiy. Potensial Lispa nam yeщye predstoit raskrыt. Stilistika Lispa neskolko protivorechat tradisionnыm podxodam k predstavleniyu programm. No eto protivorechiye otstupayet pered obayaniyem strogoy logiki yazыka. Opredeleniye Lisp-sistem sredstvami samogo Lispa dayet gibkuyu osnovu dlya razvitiya yazыka i realizuyuщyey yego sistemы programmirovaniya. Na Lispe resheniye zadachi vыrajayetsya v terminax postanovki zadachi bez privlecheniya realizasionnыx suщnostey i interfeysnыx effektov.
Bazis Lispa idealno lakonichen - atomы i prostыye strukturы dannыx –devyat funksiy i funksionalov - obыchnыye funksii, kotorыye analiziruyut, stroyat i razbirayut lyubыye strukturnыye znacheniya (atom, eq, cons, car, cdr,), i spesialnыye funksionalы, kotorыye upravlyayut obrabotkoy struktur, predstavlyayuщix vыchislyayemыye vыrajeniya (quote, cond, lambda, eval).
Sintaksis Lispa izыskanno prost. Razdelitel - probel, ogranichiteli - kruglыye skobki. V skobki zaklyuchayetsya predstavleniye funksii s yeye argumentami. Vse ostalnoye - variasii v zavisimosti ot kategorii funksiy, opredelennosti atomov i vыchislimosti vыrajeniy, tipov znacheniy i struktur dannыx. Funksionalы - eto odna iz kategoriy funksiy, ispolzuyemaya pri organizasii upravleniya vыchisleniyami.
Realizasionnыye naxodki Lispa, takiye kak ssыlochnaya organizasiya pamyati, "sborka musora" - avtomatizasiya povtornogo ispolzovaniya pamyati, chastichnaya kompilyasiya programm s interpretasiyey promejutochnogo koda, dlitelnoye xraneniye atributov obyektov v period ix ispolzovaniya i dr., perekochevali iz oblasti issledovaniy i eksperimentov na baze Lispa v praktiku realizasii operasionnыx sistem i sistem programmirovaniya.
Istoriya Lispa pronizana jarkimi sporami, pritivorechivыmi sujdeniyami, yarkimi dostijeniyami i smelыmi izobreteniyami:
1958 - Pervыye publikasii Djona Mak-Karti o zamыsle yazыka simvolnoy obrabotki.
1962-1964 - Avtorskiye proyektы pervыx Lisp-sistem .
1964 - Demonstrasiya prinsipialnoy reshayemosti problem iskusstvennogo intellekta. (Napisannaya Dj.Veysenbaumom na Lispe programma-sobesednik "Eliza", imitiruyuщaya rechevoye povedeniye psixoanalitika, dala polojitelnыy otvet na vopros o vozmojnosti iskusstvennogo razuma.)
1972-1974 - Razresheniye teoreticheskix paradoksov, svyazannыx s bestipovыm lyambda-ischisleniyem.
1972-1980 - Standartizasiya yazыka Lisp.
1978 – Poyavleniye Lisp-kompyuterov.
1965-1990 - Postroyeniye spesializirovannыx dialektov Lispa i sozdaniye praktichnыx realizasiy dlya shirokogo spektra vesma razlichnыx primeneniy, vklyuchaya injenernoye proyektirovaniye i sistemы matematicheskoy obrabotki informasii
1992-2002 - Razrabotka vizualnыx i sverxeffektivnыx Lisp-sistem, takix kak CMUCL.
Do'stlaringiz bilan baham: |