5-мавзу. Функционал дастурлаш



Download 47,34 Kb.
bet5/7
Sana23.02.2022
Hajmi47,34 Kb.
#147092
1   2   3   4   5   6   7
Bog'liq
5-mavzu (1)

((EQ (CAR e) 'COND ) (EVCON (CDR e ) al ) )
(T (apply (CAR e) (evlis (CDR e) al ) al ) )
) )
(DEFUN APPLY (fn args al )
(COND
((EQ e NIL ) NIL )
((ATOM fn )
(COND
((MEMBER fn '(CAR CDR CONS ATOM EQ )) (SUBR fn agrs al ))
(T (APPLY (EVAL fn al ) args al ))
) )
((EQ (CAR fn ) 'LABEL )
(APPLY (CADDR fn )
Args
(CONS (CONS (CADR fn ) (CADDR fn ))
al ) ) )
((EQ (CAR fn ) 'FUNARG )
(APPLY (CDR fn ) args (CADDR fn))
)
((EQ (CAR fn ) 'LAMBDA )
(EVAL (CADDR fn )
(APPEND (PAIR (CADR fn ) args ) al ))
(T (APPLY (EVAL fn al ) args al ))
) )
Assoc, append, pair, list таърифлари – стандартлардир.
Eval-p ва apply-p операторлари худди шундай вазифани таъминлаб беради, улар доимий қийматлар ва функционал таърифларни сақлаш учун атом хоссалари рўйхатларидан фойдаланишга асосланган. Aтом хоссалари рўйхатидаги category индикатори алоҳида тоифага мансуб функцияларни талқин қилиш қоидасини, macro эса функцияни тақдим этишнинг маълум бир усулини билдиради. Value функцияси атомларнинг контекстига ва хусусиятларига қараб ўзгарувчининг жорий қийматини топиш усулларини амалга оширади.
(defun eval-p (e c)
(cond ((atom e) (value e c))
((atom (car e))(cond ((get (car e) 'category)
((get (car e) 'category) (cdr e) c) )
(T (apply-p (car e)(evlis (cdr e) c) c))
) )
(T (apply-p (car e)(evlis (cdr e) c) c))
))
(defun apply-p (f args c)
(cond ((atom f)(apply-p (function f c) args c))
((atom (car f))(cond ((get (car f) 'macro)
(apply-p ((get (car f) 'macro) (cdr f) c) args c))
(T (apply-p (eval f e) args c))
) )
(T (apply-p (eval f e) args c))
))
(defun eval-p (e c)
(cond ((atom e) (value e c))
((atom (car e))(cond ((get (car e) 'category)
((get (car e) 'category) (cdr e) c) )
(T (apply-p (car e)(evlis (cdr e) c) c))
) )
(T (apply-p (car e)(evlis (cdr e) c) c))
))
(defun apply-p (f args c)
(cond ((atom f)(apply-p (function f c) args c))
((atom (car f))(cond ((get (car f) 'macro)
(apply-p ((get (car f) 'macro) (cdr f) c) args c))
(T (apply-p (eval f e) args c))
) )
(T (apply-p (eval f e) args c))
))
Ёки ёрдамчи параметрларга умумий ифодаларни жойлаштириш билан бир хил нарса:
(defun eval-p (e c)
(cond ((atom e) (value e c))
((atom (car e)) ((lambda (v) (cond (v (v(cdr e) c) )
(T (apply-p (car e)(evlis (cdr e) c) c))
)) (get (car e) 'category) ) )
(T (apply-p (car e)(evlis (cdr e) c) c))
))
(defun apply-p (f args c)
(cond ((atom f)(apply-p (function f c) args c))
((atom (car f)) ((lambda (v) (cond (v (apply-p (v (cdr f) c) args c))
(T (apply-p (eval f e) args c))
) ) (get (car f) 'macro) ) )
(T (apply-p (eval f e) args c))
))

Тафсифнинг бундай таърифи билан дастурлаш тизимини кенгайтириш атомлар ва функцияларнинг тегишли хусусиятларини оддий кириш / олиб ташлаш орқали амалга оширилади.


Лисп ва унга оид тилларнинг уч юздан ортиқ турлари мавжуд ва улар фаол ишлатилади: Interlisp, muLisp, Clisp, Sheame, ML, Cmucl, Logo, Hope, Sisal, Haskell, Miranda ва бошқалар.
Жон Маккарти (1958) томонидан ишлаб чиқилган компютерлар ёрдамида томонидан маълумотларни символли қайта ишлаш концепцияси Черча ва бошқа математикларнинг фикри 1920 йилларнинг охирларидан бери ламбда ҳисоби деб номланган. Маккарти функцияларни дастурлашда юзага келадиган бошқа барча тушунчаларни табиий равишда қисқартириш мумкин бўлган умумий асосий тушунча сифатида кўриб чиқишни таклиф қилди
Функцияларни амалга ошириш, ўзлаштиришлардан асоссиз фойдаланишни рад этиш ва бошқарувни узатиш нуқтаи назаридан ҳисоб-китобларни паст даражадаги бошқариш билан тавсифланади. Бундай функциялар тавсифлаш контекстининг мустақиллиги ва аниқ таъкидланган аниқ натижани афзал кўрганлиги сабабли отладка ва синов учун қулайдир. Тўғри аниқланган функциялардаги композицияларни отладка қилишнинг мураккаблиги мултипликативлигидан эмас, балки қўшимча равишда ўсиб боради.
“Структуравий дастурлаш” нинг концептуал ўхшаш ғоялари ўн йилдан кўпроқ вақт ўтгач шаклланган.
Кроме обычных функций, аргументы которых вычисляются предварительно, в ряде случаев можно рассматривать и реализовывать специальные функции, способные обрабатывать аргументы нестандартным способом по любой заданной схеме.
В качестве результата функции допускаются варианты значений, равноправно выбираемые из конечного множества значений, подобно псевдослучайным числам.
Организация управления, достаточного для оптимизации и программирования параллельных процессов, реализуется с помощью так называемых <замедленных> или <ленивых> вычислений (lazy evaluation) рецептов, каждый вычисляется не более чем один раз и то если его результат действительно нужен.
Здание функционального программирования получает логическое завершение на уровне определения функций высших порядков, удобных для синтаксически управляемого конструирования программ на основе спецификаций, типов данных, визуальных диаграмм, формул и т.п.
От первых сообщений Джона Мак-Карти о замысле языка символьной обработки (1958) и авторских проектов первых Лисп-систем (1960-1962) - через демонстрацию принципиальной решаемости проблем искусственного интеллекта (1964), разрешение теоретических парадоксов (1972-1974) [5], разработку признанных стандартов (1972-1980), построение специализированных диалектов и создание практичных реализаций для широкого спектра различных применений - до появления Лисп-компьютеров (1978), систем математической обработки информации (1965-1990), визуальных и сверхэффективных Лисп-систем (1992-2002) идеи Лиспа выдержали многогранную шлифовку, достойную самой высокой оценки специалистов. Написанная Дж.Вейценбаумом на Лиспе программа-собеседник “Элиза”, имитирующая речевое поведение психоаналитика, дала положительный ответ на вопрос о возможности искусственного разума.
Многие реализационные находки Лиспа, такие как ссылочная организация памяти, “сборка мусора” для повторного использования памяти, частичная компиляция программ с интерпретацией промежуточного кода, полиморфизм, длительное хранение атрибутов объектов в период их использования и т.д. перекочевали из области исследований и экспериментов на базе Лиспа в практику реализации операционных систем и систем программирования.



Download 47,34 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish