Deklarativ dasturlash - Funksional dasturlash paradigmasi – deklarativ uslubning xususiy holi hisoblanadi.
- Imperativ uslub “qanday?” degan savolga javob beradi?
- Deklarativ uslub “nima?” degan savolga javob beradi.
Imperativ dasturlash - Dastur-bu tizim holatini o’zgartiruvchi buyruqlar to’plami.
- Qolgan barchasi(funksiyalar, sinflar va h.) – abstraksiyalash usullarining mahsuli.
long factorial(long i){ Long result=1; while(i>1){ result=result*i; --i; } return result; } Imperativ dasturlash:formal ko’rinishda - Dasturning bajarilishi – bu holatlararo o’tish:
Imperativ dasturlash: tillar Matematik funksiya bir turdan ikkinchi turga alshatirishda qo’llash Har bir alohida almashtirishlar alohida obyektga ishlov beradi. Funksional dasturlash - Dastur – bu hisoblash mumkin bo’lgan ifoda.
- Abstraksiyalash usullari har xil bo’ladi.
long factorial (long i) { return (i<=1)? 1: i*factorial(i-1); } - Dasturning bajarilishi – bu berilgan ifodani hisoblash.
Funksional dasturlash: tillar - Lispning eng birinchi dialiktidan boshlab Haskell va F# gacha
Deklarativ dasturlash - Funksional dasturlash paradigmasi – deklarativ uslubning xususiy holi hisoblanadi.
- Zamonaviy dasturlash tillari funksional dasturlash uslubida ishlash uchun ko’plab vositalarga ega.
- Imperativ va funksional uslublar asosida qandaydir “gibrid” holatga kelindi
Zamonaviy, yosh: Rust,Swift,Kotlin,Scala,Go va b. - “Eski ” tillar ham o’z o’rnida qotib qolgani yo’q: Java8,C++11/C++14,C# 4.X va b.
Qisqacha tarix - LISP
- 1958 yil
- Birinchi funksional dasturlash tili
- rekersiya,shartli ifoda, lyambda funksiyalar
- Dinamik tur hosil qilish
- axlat yig’ish
- alohida oddiy sintaksis
(defun (fibonacci(n)) (if(or (= n 0) (= n 1)) 1 (+ (fibonacci(- n 1)) (fibonacci(- n 2)) ) ) ) Yana qisqacha tarix Lyambda hisoblash - XX asrning 30-yillari, Alan Chyorch
- Ikkita asosiy tamoyil – applikatsiya va abstraksiya
λ x. < x ustida ifoda> - Applikatsiya(argumentga funksiyani qo’llash)
f x - Hisoblash= atamalarni “qayta yozish”
(λ x. y)a →y[a/x] “Barcha x kiruvchilarni y ning ichida a ga alamshtir” LISP: bazaviy sintaksis - Hammasi – bu chiziqli ruyxat
- Dastur –bu ham chiziqli ruyxat
- Hammasi ikkita xizmatchi belgi ichida joylashadi: - “(” va “)”
- Ruyxatning birinchi elementi –bu funksiya, keyingilari –argumentlar
(*(+ 1 1) (sin(/ pi 2))) Yana... - ML-Robin Milner - 1970 yillar
-Algebraik ma’lumotlar turlari - Miranda – Devid Tyorner - 1985 y.
Call by name evolution strategy (lazy evolution) Funksional tillar geneologik daraxti Funksional (applikativ) tillar hisoblashni funksiyalar chaqiruvidan iborat deb qaraydi. - Funksional dasturning sintaksisi quyidagicha ko’rinish oladi:
- functionn (functionn-1 (functionn-2 (...function1 ( ma’lumotlar))....))
funksional tillarda o’zgaruvch tushinchasi bo’lamydi(imperativ tillardagi kabi o’zgaruvchi tavsiflanmaydi); - funksional tillarda o’zgaruvch tushinchasi bo’lamydi(imperativ tillardagi kabi o’zgaruvchi tavsiflanmaydi);
- ta’minlash operatori bo’lamydi;
- iteratisya ko’rinishidagi takrorlanishlar bo’lmaydi.
Misol - 6 ta a,b,c,d,e,f sonlari berilgan.
- MAX(a,b,c,d,e,f)=?
Misol MAX(a,b,c,d,e,f) = MAX(MAX(a,b),MAX4(c,d,e,f)) - MAX(a,b,c,d,e,f) = MAX(MAX(a,b),MAX4(c,d,e,f))
- MAX4(c,d,e,f) = MAX(MAX(c,d),MAX(e,f))
- MAX(a,b,c,d,e,f) = MAX(MAX(a,b),MAX(MAX(c,d),MAX(e,f)))
λ hisoblash
Do'stlaringiz bilan baham: |