1.2.2. Rekursivnыye funksii i strukturы dannыx. Avtor yazыka Lisp – professor matematiki i filosofii Djon Mak-Karti, vыdayuщiysya uchenыy v oblasti iskusstvennogo intellekta. On predlojil proyekt yazыka Lisp, idei kotorogo vozbudili ne utixayuщiye do nashix dney diskussii o suщnosti programmirovaniya. Sformulirovannaya Djonom Mak-Kapti (1958) konsepsiya simvolnoy obrabotki informasii vosxodit k ideyam Chyorcha i drugix vidnыx matematikov konsa 20-ыx godov predыduщyego veka. Vыbiraya lyambda-ischisleniye kak osnovnuyu model, Mak-Karti predlojil funksii rassmatrivat kak obщyeye ponyatiye, k kotoromu mogut bыt svedenы vse drugiye ponyatiya programmirovaniya.
Funksiyey nazыvayetsya pravilo, po kotoromu kajdomu znacheniyu odnogo ili neskolkix argumentov stavitsya v sootvetstviye konkretnoye znacheniye rezultata.
Sposobы opredeleniya pravila i metodov polucheniya rezultata funksii po zadannomu pravilu pri izvestnыx argumentax mogut bыt razlichnы, naprimer:
Algoritm (poisk naibolshego obщyego delitelya).
Tablisa (slojeniye ili umnojeniye dlya selыx chisel).
Prosess (vzveshivaniye ili izmereniye).
Ustroystvo (voltmetr, termometr, chasы)
Formalizovannыy tekst (prosedura, podprogramma, makros i t.p.).
Razlichayutsya oboznacheniya i opredeleniya sootvetstviya mejdu argumentami i rezultatami. Intuitivno ponyatiye funksii soderjit konsepsiyu vremeni: snachala vыchislyayutsya argumentы v poryadke perechisleniya, zatem stroitsya znacheniye funksii - yeye rezultat. Prosessы obrabotki informasii organizuyutsya kak primeneniye funksiy k ix argumentam - vыchisleniya.
Sootvetstviye mejdu modelyu i obyektom chasto nazыvayut interpretasiyey.
Spisok – osnovnaya struktura dannыx yazыka Lisp. Spisok mojet bыt pustыm ili soderjat proizvolnoye chislo obyektov lyuboy prirodы. Pustoy spisok ispolzuyetsya v kachestve istinnostnogo znacheniya "loj" - vse, chto otlichno ot pustogo spiska mojet vыpolnyat rol znacheniya "istina".
Krome spiskov v yazыke Lisp imeyutsya boleye obщiye strukturы dannыx – simvolnыye vыrajeniya (S-vыrajeniya), realizuyemыye kak dvoichnыye derevya, a Lisp-sistemы podderjivayut obrabotku razlichnыx spesialnыx struktur dannыx, takix kak vektora, massivы, stroki, xesh-tablisы, faylы, potoki vvoda-vыvoda i dr.
Elementarnыye dannыye yazыka Lisp nazыvayutsya atomami. Atomы mogut imet vid imen, chisel ili drugix obyektov, nedelimыx bazovыmi sredstvami yazыka.
Atomы, vыglyadyaщiye kak imena, mogut obladat svoystvami, zadavayemыmi sistemoy ili programmoy. Znacheniya peremennыx i opredeleniya funksiy – primerы svoystv. Osobыy interes predstavlyayut rekursivnыye funksii i metodы ix realizasii v sistemax programmirovaniya.
Funksiya nazыvayetsya rekursivnoy, yesli yeye opredeleniye pryamo ili kosvenno (cherez drugiye funksii) soderjit obraщyeniye k samoy sebe.
Spisok iz funksii i perechnya yeye argumentov nazыvayetsya "forma" - sinonim termina "vыrajeniye". Programma – eto posledovatelnost vыchislyayemыx form. Rekursiya – svedeniye k sebe – pozvolyayet takiye pravila zapisыvat dostatochno lakonichno i yasno. Stek obespechivayet rabotu s rekursivnыmi funksiyami.
Povtornoye raspredeleniye pamyati s pomoщyu spesialnogo mexanizma "Sborka musora" delayet takuyu rabotu dostatochno prostoy i nadejnoy. Slojivshiysya na baze Lispa stil programmirovaniya nazыvayut funksionalnыm.
Pravilo interpretasii ispolzuyet assosiativnыy spisok – tablisu dlya svyazыvaniya oboznacheniy s ix opredeleniyami. Pri takom podxode peremennыye otlichayutsya ot konstant lish chastotoy izmeneniya svyazi mejdu imenem i sootvetstvuyuщim yemu dannыm.
Tipы dannыx v Lispe vklyuchenы v predstavleniye znacheniy. Poetomu pri vыchislenii oni vsegda izvestnы i mogut bыt proverenы v lyuboy moment.
V yazыkax programmirovaniya, oriyentirovannыx na kompilyasiyu, prinyato peremennыye klassifisirovat po tipam dannыx, a znacheniya v pamyati xranit bez informasii o tipe dannыx.
Funksioniruyet Lisp-sistema s uchetom komplekta vstroyennыx opredeleniy atomov. Programma mojet vliyat na etot komplekt i formirovat spesializirovannыye versii sistemы.
Texnika rabotы s funksiyami poluchayet logicheskoye zaversheniye na urovne opredeleniya funksiy vыsshix poryadkov, udobnыx dlya sintaksicheski upravlyayemogo konstruirovaniya programm na osnove spesifikasiy, tipov dannыx, vizualnыx diagramm, formul i t.p. Programmы na Lispe mogut vыpolnyat rol spesifikasii obыchnыx iterativno-imperativnыx programm, chto sblijayet texniku programmirovaniya na Lispe s obщyepriznannыm teper obyektno-oriyentirovannыm programmirovaniyem.
Lisp poyavilsya kak yazыk simvolnoy obrabotki informasii. K seredine semidesyatыx godov na Lispe reshalis naiboleye slojnыye v praktike programmirovaniya zadachi iz oblasti diskretnoy i vыchislitelnoy matematiki, eksperimentalnogo programmirovaniya, lingvistiki, ximii, biologii, medisinы i injenernogo proyektirovaniya. Na Lispe realizovana sistema AutoCAD - avtomatizasiya injenernыx raschetov, dizayna i komplektasii izdeliy iz dostupnыx elementov, i Emacs – vesma populyarnыy tekstovыy redaktor v mire UNIX/Linux.
Do'stlaringiz bilan baham: |