Bir başlanğıc üçün obyekt yönümlü, funksional və prosedur proqramlaşdırma arasındakı fərqi necə izah edərdiniz?


cavab 1:

Bütün proqramlaşdırma problemi həll etməkdir. Fərq, problemə necə hücum etdiyinizdir.

İmperativ proqramlaşdırma mənbə kodunu tapşırıq ustasının qərarı kimi qəbul edir. Proqramın hər bir addımı yuxarıdan kompüterə verilən bir əmr kimidir: bunu edin. Bunu çap edin. Bunu ora köçürün. Demək olar ki, baqqal siyahısını izləmək kimidir. İmperativ proqramlaşdırmada əsas bölmə dəyişəndir, zamanla dəyişə biləcək bir dəyər (məsələn, bir sıra və ya mətn sətri kimi).

Obyekt yönümlü proqramlaşdırma, imperativ kodun qurulmasına cəhddir. Problem sahəsindəki müxtəlif konsepsiyaların modelləri yaradılır və tətbiq olunur. Bu modellərə ("obyektlər") müxtəlif tədbirlər həyata keçirə bilən funksiyalar ("metodlar") verilir və hər bir obyektdə də məlumat ola bilər. OOP-dakı əsas bölmə, özündə rus matryoshka kuklasına bənzər digər obyektləri özündə saxlaya bilən obyektdir. Fikir, insan proqramçılarına proqramı müəyyən şeylərə bağlayaraq proqramı vizual olaraq asanlaşdırmaqdır, bu da şeyləri məntiqi şəkildə qruplaşdırmağa imkan verir.

Funksional proqramlaşdırma problem bölgəsinə bir-birinə bükülmüş tənliklər zənciri, cavaba aparan bir sıra tərif kimi baxır. Məlumat bir sıra aksiomalardan başlayır və cavabı sona çatır (bunu ekranda gördüyünüz işlərlə bitən bir məntiqi arqument kimi düşünün). Funksional proqramlaşdırma formal riyaziyyatdan bir çox anlayış alır və riyaziyyatda olduğu kimi (və imperativ proqramlaşdırma və ya OOP-dan fərqli olaraq) adətən addımlar arasında heç bir məlumat saxlamır. Funksional proqramlaşdırmada əsas bölmə əməliyyatlar apara və digər funksiyaları yarada bilən funksiyadır.

Bu üç proqramlaşdırma paradiqması (və bu cavabın hüdudlarından kənara çıxan digərləri) məlumatları geri və irəli göndərməyə imkan verir. Fərq göndərdiyiniz şeydir. İmperativ və obyekt yönümlü proqramlaşdırma məlumatları dəyişənlər və ya obyektlər şəklində göndərir ("Budur tələb etdiyiniz hesablama, istədiyiniz kimi istifadə edin.") Bir funksiya proqramı funksiyaları geri və irəli ötürür ("Fikir verin ki, üçbucağınız var (bu tərifdən) ) bu açılar və bu ölçü ilə ... ") və alıcını arqumentin növbəti hissəsini əlavə etməyə dəvət edir.

Bir sözlə, bu paradiqmalar eyni şeyə baxmağın fərqli yollarıdır.

(Giriş üçün Pratik Mehta'ya təşəkkür edirəm.)


cavab 2:
  • Obyekt yönümlü proqramlaşdırma obyektlərdə bütün məlumatları və proqramlaşdırma məntiqini saxlayır. Obyektlər açıq bir paketdə ümumiləşdirilmiş məlumat və proqramlaşdırma məntiqi olaraq təyin olunur. Proses proqramlaşdırma bir sıra rutinlər vasitəsilə məlumatları dəyişdirir (prosedurlar da deyilir). Bu rutinləri bir obyektdə qruplaşdırmaq lazım deyil. Funksional proqramlaşdırma funksiyaları istifadə edərək yeni məlumatları hesablayır. Məlumat bir dəyər verildikdən sonra dəyişdirilə bilməz (dəyişməzlik deyilən bir əmlak).

x = x + 1


cavab 3:
  • Obyekt yönümlü proqramlaşdırma obyektlərdə bütün məlumatları və proqramlaşdırma məntiqini saxlayır. Obyektlər açıq bir paketdə ümumiləşdirilmiş məlumat və proqramlaşdırma məntiqi olaraq təyin olunur. Proses proqramlaşdırma bir sıra rutinlər vasitəsilə məlumatları dəyişdirir (prosedurlar da deyilir). Bu rutinləri bir obyektdə qruplaşdırmaq lazım deyil. Funksional proqramlaşdırma funksiyaları istifadə edərək yeni məlumatları hesablayır. Məlumat bir dəyər verildikdən sonra dəyişdirilə bilməz (dəyişməzlik deyilən bir əmlak).

x = x + 1


cavab 4:
  • Obyekt yönümlü proqramlaşdırma obyektlərdə bütün məlumatları və proqramlaşdırma məntiqini saxlayır. Obyektlər açıq bir paketdə ümumiləşdirilmiş məlumat və proqramlaşdırma məntiqi olaraq təyin olunur. Proses proqramlaşdırma bir sıra rutinlər vasitəsilə məlumatları dəyişdirir (prosedurlar da deyilir). Bu rutinləri bir obyektdə qruplaşdırmaq lazım deyil. Funksional proqramlaşdırma funksiyaları istifadə edərək yeni məlumatları hesablayır. Məlumat bir dəyər verildikdən sonra dəyişdirilə bilməz (dəyişməzlik deyilən bir əmlak).

x = x + 1