Javascript və funksional proqramlaşdırma

Jalə Mirzəyeva

14.09.2021

Bir proqram xaricdən dataları alır, işə salınır və bir qədər nəticə verir. Riyazi bir gözlə baxsaq, bütün proqramın riyaziyyatda bir funksiyaya bənzədiyini görərik.

proqram (girişlər) = çıxışlar

Funksional paradiqmada proqrama yuxarıdan yanaşırsınız. Sanki bütün girişləri verdiyiniz və bütün nəticəni əldə etdiyiniz tək bir metoddur. Sonra məntiqi olaraq parçalamağa başlayırıq. Funksional proqram bir-birinə zəng vuran və girişlərini istənilən nəticəyə çevirən kiçik proqramların ağacı kimi formalaşır.

Sözümüzü ümumiləşdirsək,funksional proqramlaşdırma tək funksiyalı kiçik funksiyaları kompozisiya prinsipi ilə birləşdirərək qurulmuş bir proqramdır.

Funksional proqramlaşdırmanın bəzi prinsipləri var :

  1. Funksiya öz parametrləri xaricində başqa məlumat üzərində işləmir.
  2. Funksiya öz parametrlərini və ya xarici məlumatlarıni dəyişdirmir.
  3. Funksiya sadəcə dəyər döndürərək nəticə verir.
  4. Funksiya yalnız bir məntiqi funksiyanı yerinə yetirir.
  5. Funksiya həmişə eyni giriş ilə eyni çıxışı istehsal edir.
  6. Funksiya bütün mümkün girişlər üçün məntiqi nəticələr yaradır.

Pure Functions

Saf Funksiya nədir?

1. Saf funksiyalar həmişə öz giriş arqumentlərindən asılıdır. Yəni ki, funksiya həmişə daxil etdiyimiz funksiyaları çıxışa verməlidir.

2. Saf funksiyaların yan təsirləri yoxdur. Yəni yan təsirlər nə bizim arqumentlərdə dəyişikliklər edəcək, nə də çağırıldığı ətraf mühitə təsir edəcək.

İki giriş arqumenti verilən iki ədədin hasilini qaytaran aşağıda göstərilən saf bir funksiyaya baxaq.

function multipleOfNumbers(x, y) {
return x * y;
}

Saf funksiyalar həmişə proqnozlaşdırıla bilən davranışa malik sadə tikinti bloklarıdır. Beləliklə, onlar hər hansı bir xarici təsir olmadan həmişə eyni proqnozlaşdırılan nəticəni qaytarırlar.

Immutability

Dəyişməzlik nədir?

Dəyişməzlik, proqram axını zamanı yaradılan məlumatların heç vaxt dəyişməməsinə əsaslanan bir anlayışdır.Yəni proqram yazarkən, hər hansı bir məlumatda dəyişiklik edilərkən orijinal məlumatların qorunmasını istəyirik. Çünki birdən çox yerdə orijinal məlumatlardan istifadə edilə bilər. Dəyəri qorunmayan məlumatlarda dəyişiklik proqramın sonunda gözlənilməz yerlərə təsir edə bilər

İbtidai tip dəyərlər, dəyərləri ilə yaddaşda saxlandıqları üçün axın boyunca qorunur. Onlar dəyişməz dəyərlərdir. Referans tipi dəyərlər istinad adresləri ilə yaddaşda saxlanıldığından, axıra qədər qorunmasına zəmanət verilmir. Dəyişdirilə bilən dəyərlərdir.

Kodda izah etməyə çalışsaq:

let userName = 'Jale'
let adminName = userName

adminName = 'Mirzayeva'

console.log(userName) // 'Jale'
console.log(adminName) // 'Mirzayeva'

userName Dəyişəni təyin etdik adminName və adminName dəyişənin dəyərini proqram axınının istənilən yerində yenilədik. Bu prosesdə dəyişənin userName dəyəri adminName bir-bir dəyişənə köçürülür və nəticədə userName hər iki adminName dəyişən üçün yaddaş qorunur. Hər biri üçün yaddaşda fərqli yerlər ayrıldığından, proqram axınındakı bir-birlərinin dəyişikliklərindən təsirlənməyəcək və dəyərləri qorunacaq.

Referential Transparency

Funksional proqramlaşdırmada Referencial Transparency ümumiyyətlə bir proqramdakı ifadənin, proqramın nəticəsini dəyişdirmədən dəyəri (və ya eyni dəyərə malik olan hər hansı bir şey) ilə əvəz edilə bilməsi kimi müəyyən edilir. Bu, metodların başqa bir təsiri olmayaraq müəyyən bir arqument üçün həmişə eyni dəyəri qaytarmalı olduğunu nəzərdə tutur. Bu funksional proqramlaşdırma konsepsiyası, vacib proqramlara da aiddir və kodunuzu daha aydınlaşdırmanıza kömək edə bilər.

İmperativ Proqramlaşdırmada Referential Transparency

Həm vacib, həm də funksional proqramlaşdırma funksiyalarından istifadə edir. Funksional proqramlaşdırma yalnız funksiyalardan istifadə etsə də , məcburi proqramlaşdırma aşağıdakılardan istifadə edir:

  • saf funksiyalar: dəyərləri qaytaran və başqa təsirləri olmayan metodlar
  • saf effektlər: heç bir şey qaytarmayan metodlar, ancaq bunların xaricindəki bir şeyi dəyişdirmək)
  • yan təsirləri olan funksiyalar: həm dəyəri qaytarmaq, həm də bir şeyi dəyişdirmək üsulları

Əlavə bir fayda olaraq, referans olaraq şəffaf proqramları oxumaq və anlamaq daha asandır, bu da funksional proqramların daha az şərhə ehtiyacının bir səbəbidir.

First-class functions

Proqramlaşdırmada birinci dərəcəli funksiya funksiyanın dəyişən kimi təyin
edilməsidir. Bu xüsusi vurğulanmalıdır, çünki bir funksiyanın başqa bir
funksiyaya arqument kimi ötürülə bilməsi deməkdir.

Bütün dillər birinci dərəcəli funksiya fikrini dəstəkləmir və bunlar adətən C.
Java və C ++ kimi imperativ dillərdir.

Birinci dərəcəli funksiyalardan söz gedəndə , bir dəyişənə funksiya təyin edə
bilərsiniz, lakin dəyişənin həqiqi dəyəri daxil edilənə qədər təyin olunmur. Bu
qeyri-səlis bir sahədir, çünki tapşırıq dərhal baş vermir. İmperativ

proqramlaşdırma aydınlıq tələb edir və birinci dərəcəli funksiyalar qeyri-
müəyyən bir prosses təqdim edir.

Aşagıdakı koda nəzər salaq:

const say = function () {return 3;
}

JavaScript-də funksiyalar çağırılana qədər işləmir, lakin öz aktivliyini qoruyur.
Yuxardakı kodda say funksiyası çağırıb dəyər versək o öz iş prinsipini yerinə
yetirəcək və ekranda cacabı göstərəcək.

Bir dəyişənə birbaşa funksiya təyin etdikdə, buna anonim funksiya deyilir və
sonunda bir cüt mötərizə əlavə edərək dəyişənə çağırabilərsiniz. Beləliklə,
yuxarıdakı dəyişəni çağırmaq üçün say() yazmalısınız.

Bir funksiyanı arqument kimi istifadə etmək üçün funksiya adını daxil
etməlisiniz.

Məsələn:

const say = function () {return 3;
}const elaveSay = function(num , func) {console.log(num + say());
}elaveSay(10, say());

Birinci dərəcəli funksiyalarla array ve object de bildirə bilərsiniz.

məsələn : Array

const myArr = [25 , “Elvin “, function() {console.log(“Meherrembeyli”); }]myArr[2]();

məsələn : Object

const myObj = {
age: 25,
name: “Elvin”,
func: function() {console.log(“Elvin Meherrembeyli”); }
} ;myObj.func();

Bunlar qısaca JavaScript üçün Birinci dərəcəli funksiyalardır.

 

Higher-order functions

High order funksiyalar: Sizin yazdığınız funksiyalar parametr olaraq başqa bir funksiya alırsa və ya nəticə olaraq basqa funksiya verirsə belə funksiyalara high order funksiyalar deyirlər. High order funksiyalara nümunə olaraq Array obyektində olan filter(),map() və reduce() nümünə verə bilərik. Biz nümunədə filter() funksiyasından istifadə edərək higher order functionlari izah edəcəyik.Mövzunu izah etmək üçün filter() funksiyasindan istifadə edək.

Verilmis arrayda 10 dan kicik ededleri gostermek lazimdir.Bunun üçün for dovrundən və ya filter() funksiyasindan istifadə edə bilərik.

İlk olaraq for dövründən istifade edək:

let reqemler=[3,6,56,87,32,1,67,10,9];
let res=[ ]; 
for (let i = 0; i < reqemler.length; i++) { 
if(reqemler[i]<10){
res+=reqemler[i];
}
} console.log(res);

Nəticə: res=3,6,9 olacaq

Bu nəticəni daha az kod yazaraq da ala bilərik:

let reqemler=[3,6,56,87,32,1,67,10,9];let res = reqemler.filter((element) => element < 10);
console.log(res)

Nəticə: res=3,6,9 olacaq

Göründüyü kimi hər iki kodda eyni nəticəni aldıq . Amma bir fərq var ikinci kodda filter() funksiyasindan istifadə edərək hamısını bir kod şəklində yazdıq.

Məqalə Yazarları :

  • Jala Mirzayeva
  • Nurlan Musayev
  • Elvin Maharrambayli
  • Jamil Azizsoy

 

 

Ən çox oxunanlar

Logo

Logolar, bəlkə də bir markanın və ya şirkətin marketinq müvəffəqiyyəti üçün bir müştəri və ya işə götürənlə ilk görüş...

Kamil

Ətraflı

22.04.2021

Web sayt

Bu gün bir şirkətin web sayta sahib olmağı bir dükana, ofisə və ya telefon nömrəsinə sahib olmaq qədər əhəmiyyətlidir. Tədqiqatlar nəticəsində öyənil...

Səməd Abbasov

Ətraflı

22.04.2021

Rebranding

Bəzən bəzilərinizin eşitmədiyi bir sözə rast gəlirik.
”Rebranding” Rebranding nədir? Necə edilir və bunun insanlarla, şirkətlərlə, firmalarlara nə ...

Səməd Abbasov

Ətraflı

22.04.2021

Bizimlə əlaqə

Sosial media


Xəritədən bax

Bakı şəhəri Heydər Əliyev prs. 115

Ofisə bax

Caspian Sport Plaza, 3-cü bina, 12-ci mərtəbə.