Funksional dasturlash


Download 221.97 Kb.
Sana04.02.2023
Hajmi221.97 Kb.
#1162451
Bog'liq
Funksional dasturlash

Funksional dasturlash

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

  • 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

LISP kodiga misol

(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
  • -turlarni chiqarish

    -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


Download 221.97 Kb.

Do'stlaringiz bilan baham:




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