Middle
Funktsional dasturlash paradigmasi nima?
sobes.tech AI
AIdan javob
Funktsional dasturlash paradigmasi — bu dasturiy ta'minotni qurish uslubi bo'lib, uning asosiy tamoyili funksiyalarni asosiy qurilish bloklari sifatida ishlatishdir. U quyidagilarni ta'kidlaydi:
- Toza funksiyalar: Bir xil kirish ma'lumotlari bilan har doim bir xil natija qaytaradigan va tashqi holatga ta'sir qilmaydigan funksiyalar (holatni o'zgartirmaydi).
- Ma'lumotlarning o'zgarmasligi: Ma'lumotlar yaratilgandan so'ng, ularni o'zgartib bo'lmaydi. Har qanday o'zgartirish yangi nusxa yaratadi.
- Birinchi darajali funksiyalar: Funksiyalar argument sifatida uzatilishi, boshqa funksiyalardan qaytarilishi va o'zgaruvchilarga tayinlanishi mumkin.
- O'zgaruvchan holatning yo'qligi: Dastur o'zgaruvchan o'zgaruvchilarni minimal darajada yoki to'liq olib tashlashga intiladi.
Afzalliklari:
- Effektlar yo'qligi sababli xatolarni aniqlash va testlarni soddalashtirish.
- O'zgarmas ma'lumotlar bilan ishlashda blokirovka qilish shart emasligi uchun parallel va ko'p ipli ishlashni yaxshilash.
- Kodning o'qilishi oson va oldindan aytib bo'ladigan bo'lishi.
Java'da funksional imkoniyatlar Java 8 ning paydo bo'lishi bilan quyidagi usullar orqali amalga oshirilgan:
- Lambda ifodalar.
- Funksional interfeyslar.
- Stream API.
- Metodga murojaatlar.
Stream API dan foydalanish misoli, filtrlash va o'zgartirish:
// Zarur sinflarni import qilish
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
// Misol uchun raqamlar ro'yxati
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Stream API yordamida juft raqamlarni filtrlash va 2 ga ko'paytirish
List<Integer> processedNumbers = numbers.stream()
.filter(n -> n % 2 == 0) // Juft raqamlarni filtrlash
.map(n -> n * 2) // 2 ga ko'paytirish
.collect(Collectors.toList()); // Yangi ro'yxatga yig'ish
// Natijani chiqarish
// System.out.println(processedNumbers); // Chiqishi: [4, 8, 12, 16, 20]