“Proqramlaşdırma dilləri” deyirik, bəs nə fərqləndirir onları?

Fərid Gülüm
Pragmatech
Published in
4 min readAug 9, 2020

İnsanlar proqramlaşdırma dillərindən danışanda çoxu elə bilir ki, bu, öyrənilməsi mümkünsüz olan və sadəcə “əjdaha insanların, yaxud yadplanetlilərin dərk edə biləcəyi texnologiyadır.

Ümumiyyətlə, onları nəyin fərqləndirilməsindən öncə, gəlin, proqramlaşdırma dilinin nə olduğuna tez-bazar nəzər salaq.

Ən sadə dildə proqramlaşdırma dili bizim sərhədsiz ehtiyac və arzularımızı həyata keçirmək üçün yaradılan və insan alqoritmi ilə çalışan bir gerizəkalı texnologiyadır.

Niyə “gerizəkalı”?

Çox sadə. Siz ona 3+4 kimi çox bəsit əmri verdikdə belə bir yanlışlıq etsəniz, nə dediyinizi anlamayacaq.
(bu əmri verəndə kim yanlışlıq edər, o ayrı məsələ)

Tərifi verdik, izahatı açdıq, indi ,gəlin, başlığın məğzinə keçək.

“Proqramlaşdırma dilləri” deyirik, bəs nə fərqləndirir onları?

Bunu “paradiqmalar” (paradigms) fəlsəfəsi ilə bir-birindən ayırmaq olar.

İndi beyninizdə sual yaranıb ki, paradiqma(lar) nədir, ay yazıçı?

Paradiqmanın ən sadə izahı sizin xarici dil öyrənməyiniz üçün istifadə olunan lüğətə bənzəyir. Bəzi lüğətlərdə sözlər bildirdikləri mənaya görə fərqli sırada olur, digərləri əlifbaya görə. Biz birinci hala nəzər salacağıq.

Paradiqma fəlsəfəsini həmin lüğətin özü kimi təsəvvür edin. Sizə dil öyrənməyə bir vasitəçidir, amma ondan vacib içindəki məlumatlardır, elə deyilmi?

Siz bir sözü tapmaq üçün onun yerləşdiyi qrupa baxırsınız. Həmin qrup paradiqmalar adlanır. Onlar sizə öyrənəcəyiniz sözlərin hansı ailəsinə məxsus olduğunu göstərir. Gələk nəticəyə. Alıcını maraqlandıran əsas axtardığı sözü tapmaqdır. Bu da söz ailəsinin içindəki proqramlaşdırma dilidir.

Oxuduqlarınızı bir daha nəzərdən keçirməli olsaq, paradiqma fəlsəfəsi kitabın özü, paradiqmalar sözlərin yerləşdiyi qrup, həmin sözlərin özünə isə proqramlaşdırma dili deyilir.

Sənayedə olan bütün dillər müxtəlif, yaxud eynixassəli paradiqma fəlsəfəni izləyir.

Paradiqmanın qollarına nəzər salaq :

Paradiqmanın qolları

Yuxarıda verilmiş şəkil bəsit paradiqma sistemini göstərir. Burada gördükləriniz ən geniş yayılmış və əsaslarıdır. Mürəkkəb sxemə gələcək məqalələrdə nəzər salacağıq.

Qollardan biri “Imperative”, digəri isə “Declarative”ə çıxır. Bunların sadə dildə izahı belə olardı.

Proqramlaşdırma dilinə yazdığımız alqoritmanı (instruksiyalar toplusu) hər bir atdımını göstəririksə, bu, imperativ (konstruktiv) yanaşmadır.

function sadeVurma(ilkEded,ikinciEded) {
var c = ilkEded * ikinciEded
console.log(c);
}
sadeVurma(3, 4);
netice = 12

Bu, istənilən 2 ədədi bir birinə vurmaq üçün olan funksiyadır.

Burada yazılanları bilməyinizə mütləq ehtiyac yoxdur. İmperativ (konstruktiv) yanaşmada anlamalı olduğunuz hissə kodda göstərildiyi kimi bir nəticəni almaq üçün onun bütün addımlarını (alqoritmasını) tək-tək yazmalı olmağımızdır.

İmperativ proqramlaşdırma dilinə nümunə : C, C#, C++, PHP, Python, JavaS cript, Go, Java, Ruby, Swift, COBOL, BASIC, Ada və s.

Bəs “Declarative” nədir, deyə soruşsanız belə izah edərdim.

Təsəvvür edin ki, evinizi satmaq istəyirsiniz. Bunu üçün ən bəlli yol vasitəçi (makler) ilə evi elana çıxarmaqdır. Evi satmaq üçün maklerin arxaplanda gördüyü iş sizi maraqlandırımı? Təbii ki, yox. Sizin tək məqsədiniz evi satıb, pul əldə etməkdir.

Declarative” paradiqma da bununla eyni fəlsəfəyə malikdir. Siz deklarativ (təyinedici) proqramlaşdırma dilinə bəsit bir alqoritma verirsiniz və sizi maraqlandıran sadəcə nəticədir, arxada hansı işlər getdiyini siz bilməsəz də, olar. Gəlin, buna proqramlaşdırma sahəsindən də nümunə gətirək.

Təsəvvür edin ki, vebsayt qeydiyyatı üçün müştəri bazası yığırsınız. Bu, ad, soyad və şifrədən ibarətdir. Bunu kodlayarkən sizi maraqlandırmır ki, dil necə vebsaytdan məlumatı çəkib bazaya otuzdurdu. Sadəcə bir sıra alqoritmik instruksiyalar (əmrlər) yazmaqla dilə əmr verirsiniz ki, bunu et!

İmperativ ilə deklarativ yanaşma arasındakı fərqlərdən biri ikinci versiyada (deklarativ) bizim istifadə etməyimiz üçün hazır funksiyaların olması, imperativdə isə hər bir alqoritmanı (həmçinin funksiyanı) özümüzün yazmalı olduğudur.

Qeyd : JavaScript, Python kimi hibrid (qarışıq) — hər iki paradiqmaya xas olan dillər mövcuddur. Bu, və bunun kimi digər dillər möhtəşən edən deklarativ yanaşmanın gətirdiyi hazır funksionallıqlardan (built-in functions) istifadə edib, imperativ yolla öz alqoritmanızı yaza bilməyinizdir.

Bəs hazır funksiyalar nədir?

var ilkEded= 17;
var ikinciEded= 12;
var netice = Math.max(ilkEded,ikinciEded);
console.log(netice)
// Deklarativ yanaşmada hazır Math.max funsiyası ile iki ededden hansının böyük olub-olmadığını müqayise etdik. Gelin, bunu imperativ yanaşma ile bir-bir alqoritmik şekilde yazaq.function hansiEdedBoyukdur(a,b) {
if (a > b) {
console.log(a);
}
else {
console.log(b);
}
}
hansiEdedBoyukdur(17, 12);

// Gördüyünüz kimi, birinci nümunədə proqramçı tanrılarının bizə bəxş etdiyi hazır funksionallıqla çox bəsit formada ədədləri müqayisə edə bildik.

İkinci nümunədə isə müqayisə funksiyasını qurmaq üçün müxtəlif yollara əl atdıq. Hər ikisində eyni nəticə alındı, fəqət fərqli cığırlarla.

Bu, iki paraqdiqma arasındakı fərqi izah edən ən böyük nümunədir.

Deklarativ proqramlaşdırma dilinə nümunə : SQL (sequel), XQuery və s.

Bu məqalədə ümumi paradiqma fəlsəfəsi və onun önəmli 2 qolunu izah olundu. Gələcək məqalələrdə bütün qollara toxunub, ətraflı izahlar veriləcək.

--

--

Fərid Gülüm
Pragmatech

Computer Engineering student at Khazar University. Storyteller, interested in psychology, electronics& aimed for coding skills. From Baku, Azerbaijan