Asosiy farq – Funktsional dasturlash va Imperativ dasturlash
Funktsional dasturlash va imperativ dasturlash oʻrtasidagi asosiy farq shundaki, funksional dasturlash hisoblashlarni matematik funksiyalar sifatida koʻrib chiqadi va holat va oʻzgaruvchan maʼlumotlarni oʻzgartirishdan qochadi, imperativ dasturlash esa dasturlar holatini oʻzgartiruvchi bayonotlardan foydalanadi.
Dasturlash paradigmasi kompyuter dasturining tuzilishi va elementlarini qurish uslubini taqdim etadi. Dasturlash paradigmalari dasturlash tillarini xususiyatlariga qarab tasniflashga yordam beradi. Dasturlash tili ko'proq paradigmalarga ta'sir qilishi mumkin. Ob'ektga yo'n altirilgan paradigmada dastur ob'ektlar yordamida tuziladi va ob'ektlar xabarlarni usullar yordamida uzatadi. Mantiqiy dasturlash hisoblashni faqat matematik mantiq nuqtai nazaridan ifodalashi mumkin. Yana ikkita dasturlash paradigmalari funksional dasturlash va imperativ dasturlashdir. Funktsional dasturlash hisob-kitoblarni matematik funktsiyalarni baholash sifatida ifodalashga imkon beradi. Imperativ dasturlash xotira holatini aniq o'zgartiruvchi bayonotlarni beradi. Ushbu maqolada funktsional dasturlash va imperativ dasturlash o'rtasidagi farq muhokama qilinadi.
Funktsional dasturlash nima?
Funktsional dasturlash matematikaga asoslangan. Funktsional dasturlashning asosiy printsipi shundan iboratki, barcha hisob-kitoblar alohida matematik funktsiyalarning kombinatsiyasi sifatida ko'rib chiqiladi. Matematik funktsiya kirishlarni chiqish bilan taqqoslaydi. Faraz qilaylik, f(x)=xx nomli funksiya mavjud. X qiymati 1 chiqish 1 bilan taqqoslanadi. X qiymati 2 chiqish 4 bilan taqqoslanadi.x qiymati 3 chiqish 9 va hokazo bilan taqqoslanadi.
01-rasm: Funktsional dasturlash tiliga misol – Haskell
Funktsional dasturlashda naqshlar hisobga olinadi. Funktsional dasturlash tillari Haskell, raqamlar yig'indisini topish uchun quyidagi usuldan foydalanadi.
Toʻplash funksiyasi butun son qiymatlariga ega va natija ham butun son boʻladi. U summa sifatida yozilishi mumkin: [int] -> int. Yigʻindini quyidagi sxema boʻyicha bajarish mumkin.
sum[n]=n, bitta sonning yigʻindisi raqamning oʻzi.
Agar raqamlar roʻyxati boʻlsa, uni quyidagicha yozish mumkin. n birinchi raqamni, ns esa boshqa raqamlarni ifodalaydi
sum (n, ns)=n + yigindi ns.
3, 4, 5 boʻlgan uchta raqam yigʻindisini topish uchun yuqoridagi naqshlardan foydalanish mumkin.
3 + summa [4, 5]
3 + (4 + summa [5])
3+ 4 + 5=12
Funksiya yoki ifoda oʻz doirasidan tashqarida baʼzi holatni oʻzgartirsa yoki qaytaruvchi qiymatdan tashqari uning chaqiruvchi funksiyalari bilan kuzatilishi mumkin boʻlgan oʻzaro taʼsirga ega boʻlsa, uning yon taʼsiri bor deyiladi. Funktsional dasturlash bu nojo'ya ta'sirlarni kamaytiradi. Holat o'zgarishi funksiya kirishlariga bog'liq emas. Bu dasturning xatti-harakatlarini tushunishda foydalidir. Funktsional dasturlashning kamchiliklaridan biri shundaki, funktsional dasturlashni o'rganish imperativ dasturlash bilan solishtirganda qiyinroq.
Imperativ dasturlash nima?
Imperativ dasturlash - bu dastur holatini o'zgartiruvchi bayonotlardan foydalanadigan dasturlash paradigmasi. U dastur qanday ishlashini tasvirlashga qaratilgan. Java, C va C kabi dasturlash tillari imperativ dasturlash tillaridir. U nima qilish kerakligi haqida bosqichma-bosqich ko'rsatmalar beradi. Imperativ dasturlash tillarida if, else, while, for sikllari, sinflar, obyektlar va funksiyalar kabi tuzilmalar mavjud.
02-rasm: Imperativ dasturlash tiliga misol – Java
O'nta raqamning yig'indisini Java-da quyidagicha topish mumkin. Har bir iteratsiyada i qiymati yig'indiga qo'shiladi va sum o'zgaruvchisiga tayinlanadi. Har bir iteratsiyada yig'indi qiymati oldindan hisoblangan summaga qo'shishda davom etadi.
int summasi=0;
uchun (int i=0; i<=10; i++) {
sum=summa + i;
}
Imperativ dasturlashni oʻrganish, tushunish va disk raskadrovka qilish oson. Davlat o'zgaruvchilari yordamida dastur holatini topish oson. Ba'zi kamchiliklari shundaki, u kodni uzaytirishi va kengaytirilishini kamaytirishi mumkin.
Funktsional dasturlash va imperativ dasturlash oʻrtasidagi oʻxshashlik nimada?
Funktsional dasturlash ham, imperativ dasturlash ham dasturlash paradigmalari
Funktsional dasturlash va imperativ dasturlash oʻrtasidagi farq nima?
Funktsional va imperativ dasturlash |
|
Funktsional dasturlash - bu dasturlash paradigmasi boʻlib, u hisoblashni matematik funktsiyalarni baholash sifatida koʻrib chiqadi hamda holat va oʻzgaruvchan maʼlumotlarni oʻzgartirishdan saqlaydi. | Imperativ dasturlash - bu dastur holatini o'zgartiruvchi bayonotlardan foydalanadigan dasturlash paradigmasi. |
Tuzilmalar | |
Funktsional dasturlash funksiya chaqiruvlari va yuqori darajadagi funksiyalarni oʻz ichiga oladi. | Imperativ dasturlashda if, else, while, for sikllari, funksiyalar, sinflar va obyektlar mavjud. |
Dasturlash tillari | |
Scala, Haskell va Lisp - funktsional dasturlash tillari. | C, C++, Java - bu majburiy dasturlash tillari. |
Fokus | |
Funktsional dasturlash yakuniy natijaga qaratilgan. | Imperativ dasturlash asosiy e'tibor dastur qanday ishlashini tasvirlashga qaratilgan. |
Oddiylik | |
Funktsional dasturlash qiyin. | Imperativ dasturlash osonroq. |
Xulosa – Funktsional dasturlash va Imperativ dasturlash
Dasturlash paradigmasi kompyuter dasturining tuzilishi va elementlarini qurish uslubini taqdim etadi. Funktsional dasturlash va imperativ dasturlash ulardan ikkitasi. Funktsional dasturlash va imperativ dasturlash o'rtasidagi farq shundaki, funktsional dasturlash hisoblashlarni matematik funktsiyalar sifatida ko'rib chiqadi va holat va o'zgaruvchan ma'lumotlarni o'zgartirishdan qochadi, imperativ dasturlash esa dasturlar holatini o'zgartiruvchi bayonotlardan foydalanadi.