Sobes.tech
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]