Əsas Fərq – Funksional Proqramlaşdırma ilə İmperativ Proqramlaşdırma
Funksional proqramlaşdırma ilə imperativ proqramlaşdırma arasındakı əsas fərq ondan ibarətdir ki, funksional proqramlaşdırma hesablamaları riyazi funksiyalar kimi nəzərdən keçirir və vəziyyət və dəyişən verilənləri dəyişməkdən yayınır, imperativ proqramlaşdırma isə proqramların vəziyyətini dəyişən ifadələrdən istifadə edir.
Proqramlaşdırma paradiqması kompüter proqramının strukturunu və elementlərini qurmaq üslubunu təmin edir. Proqramlaşdırma paradiqmaları proqramlaşdırma dillərini xüsusiyyətlərinə görə təsnif etməyə kömək edir. Bir proqramlaşdırma dili daha çox paradiqmaya təsir göstərə bilər. Obyekt yönümlü paradiqmada proqram obyektlərdən istifadə etməklə strukturlaşdırılır və obyektlər metodlardan istifadə etməklə mesajlar ötürür. Məntiqi proqramlaşdırma hesablamanı yalnız riyazi məntiq baxımından ifadə edə bilər. Digər iki proqramlaşdırma paradiqması funksional proqramlaşdırma və imperativ proqramlaşdırmadır. Funksional proqramlaşdırma hesablamaları riyazi funksiyaların qiymətləndirilməsi kimi ifadə etməyə imkan verir. İmperativ proqramlaşdırma yaddaşın vəziyyətini açıq şəkildə dəyişdirən ifadələr təqdim edir. Bu məqalə funksional proqramlaşdırma ilə imperativ proqramlaşdırma arasındakı fərqdən bəhs edir.
Funksional Proqramlaşdırma nədir?
Funksional Proqramlaşdırma Riyaziyyata əsaslanır. Funksional proqramlaşdırmanın əsas prinsipi ondan ibarətdir ki, bütün hesablamalar ayrı-ayrı riyazi funksiyaların kombinasiyası kimi qəbul edilir. Riyazi funksiya girişləri çıxışlara uyğunlaşdırır. Tutaq ki, f(x)=xx adlı funksiya var. x dəyəri 1 çıxış 1 ilə əlaqələndirilir. x dəyəri 2 çıxış 4 ilə əlaqələndirilir.x dəyəri 3 çıxış 9 ilə əlaqələndirilir və s.
Şəkil 01: Funksional proqramlaşdırma dilinin nümunəsi – Haskell
Funksional proqramlaşdırmada nümunələr nəzərə alınır. Funksional proqramlaşdırma dilləri Haskell, rəqəmlərin cəmini tapmaq üçün aşağıdakı üsuldan istifadə edir.
Cəm funksiyası tam ədədlərə malikdir və nəticə də tam ədəd olacaq. Bu cəm kimi yazıla bilər: [int] -> int. Toplama aşağıdakı nümunələrə əməl etməklə edilə bilər.
sum[n]=n, bir ədədin cəmi ədədin özüdür.
Əgər rəqəmlərin siyahısı varsa, onu aşağıdakı kimi yazmaq olar. n birinci rəqəmi, ns isə digər nömrələri təmsil edir
cəm (n, ns)=n + cəmi ns.
3, 4, 5 olan üç ədədin cəmini tapmaq üçün yuxarıdakı nümunələr tətbiq oluna bilər.
3 + cəmi [4, 5]
3 + (4 + cəmi [5])
3+ 4 + 5=12
Funksiya və ya ifadə öz əhatə dairəsi xaricində bəzi vəziyyəti dəyişdirirsə və ya qaytarılan dəyərdən başqa çağırış funksiyaları ilə müşahidə edilə bilən qarşılıqlı təsirə malikdirsə, onun yan təsirləri olduğu deyilir. Funksional proqramlaşdırma bu yan təsirləri minimuma endirir. Vəziyyət dəyişiklikləri funksiya girişlərindən asılı deyil. Proqramın davranışını başa düşmək üçün faydalıdır. Funksional proqramlaşdırmanın çatışmazlıqlarından biri funksional proqramlaşdırmanı öyrənmək imperativ proqramlaşdırma ilə müqayisədə daha çətindir.
İmperativ Proqramlaşdırma nədir?
İmperativ proqramlaşdırma proqramın vəziyyətini dəyişdirən ifadələrdən istifadə edən proqramlaşdırma paradiqmasıdır. Proqramın necə işlədiyini təsvir etməyə diqqət yetirir. Java, C və C kimi proqramlaşdırma dilləri imperativ proqramlaşdırma dilləridir. Nə etməli olduğunuza dair addım-addım proseduru təqdim edir. İmperativ proqramlaşdırma dillərində if, else, while, for dövrələri, siniflər, obyektlər və funksiyalar kimi strukturlar var.
Şəkil 02: İmperativ proqramlaşdırma dilinin nümunəsi – Java
On ədədin cəmini Java-da aşağıdakı kimi tapmaq olar. Hər iterasiyada i dəyəri cəmiyə əlavə edilir və cəmi dəyişənə təyin edilir. Hər iterasiyada cəmi dəyəri əvvəlcədən hesablanmış məbləğə əlavə olunmağa davam edir.
int cəmi=0;
üçün (int i=0; i<=10; i++) {
cəm=cəmi + i;
}
İmperativ proqramlaşdırmanı öyrənmək, başa düşmək və sazlamaq asandır. Vəziyyət dəyişənlərindən istifadə etdiyinə görə proqram vəziyyətini tapmaq asandır. Bəzi çatışmazlıqlar odur ki, kodu uzun edə bilər və miqyasını minimuma endirə bilər.
Funksional proqramlaşdırma ilə imperativ proqramlaşdırma arasında oxşarlıq nədir?
Həm Funksional Proqramlaşdırma, həm də İmperativ Proqramlaşdırma proqramlaşdırma paradiqmalarıdır
Funksional proqramlaşdırma ilə imperativ proqramlaşdırma arasındakı fərq nədir?
Funksional vs İmperativ Proqramlaşdırma |
|
Funksional Proqramlaşdırma hesablamanı riyazi funksiyaların qiymətləndirilməsi kimi nəzərdən keçirən və vəziyyətin və dəyişən verilənlərin dəyişdirilməsinin qarşısını alan proqramlaşdırma paradiqmasıdır. | İmperativ Proqramlaşdırma proqramın vəziyyətini dəyişən ifadələrdən istifadə edən proqramlaşdırma paradiqmasıdır. |
Strukturlar | |
Funksional Proqramlaşdırma funksiya çağırışlarını və daha yüksək səviyyəli funksiyaları ehtiva edir. | İmperativ Proqramlaşdırma if, else, while for loopları, funksiyaları, sinifləri və obyektlərini ehtiva edir. |
Proqramlaşdırma Dilləri | |
Scala, Haskell və Lisp funksional proqramlaşdırma dilləridir. | C, C++, Java imperativ proqramlaşdırma dilləridir. |
Fokus | |
Funksional Proqramlaşdırma son nəticəyə diqqət yetirir. | İmperativ Proqramlaşdırma proqramın necə işlədiyini təsvir etməyə fokuslanır. |
Sadəlik | |
Funksional proqramlaşdırma çətindir. | İmperativ proqramlaşdırma daha asandır. |
Xülasə – Funksional Proqramlaşdırma və İmperativ Proqramlaşdırma
Proqramlaşdırma paradiqması kompüter proqramının strukturunu və elementlərini qurmaq üslubunu təmin edir. Funksional Proqramlaşdırma və İmperativ Proqramlaşdırma bunlardan ikisidir. Funksional proqramlaşdırma ilə imperativ proqramlaşdırma arasındakı fərq ondan ibarətdir ki, funksional proqramlaşdırma hesablamaları riyazi funksiyalar kimi nəzərdən keçirir və vəziyyət və dəyişən verilənləri dəyişməkdən yayınır, imperativ proqramlaşdırma isə proqramların vəziyyətini dəyişən ifadələrdən istifadə edir.