Matryoshka Si. Proqram dilinin lay sistemi

Gəlin kimyanı Mendeleyevin dövri sistemi (1869) olmadan təsəvvür etməyə çalışaq. Nə qədər elementləri yadda saxlamaq lazım idi və heç bir xüsusi ardıcıllıqla... (Sonra - 60.)

Bunu etmək üçün bir anda bir və ya bir neçə proqramlaşdırma dili haqqında düşünün. Eyni hisslər, eyni yaradıcı xaos.

İndi biz XNUMX-cu əsr kimyaçılarının bütün biliklərini və bir az daha çoxunu bir Dövri Cədvəldə təqdim etdikləri zaman hisslərini yenidən yaşaya bilərik.

Matryoshka Si. Proqram dilinin lay sistemi


Kitab "Matryoshka C. Layered system of program language” C dilinin bütün vahidlərini bir baxışda təqdim edir. Bu, onları təşkil etməyə, köhnəlmiş məlumatları düzəltməyə və hətta proqramın konsepsiyasını aydınlaşdırmağa imkan verir.

Bu gün proqramlaşdırma məlumatı 150 il əvvəl kimyəvi elementlərdən daha çox sistemləşdirmə tələb edir.

Birinci zərurət öyrətməkdir. Mendeleyev mühazirə oxumağa hansı elementlə başlamaq sualı ilə üzləşəndə ​​öz sistemini yaratmağa başladı: O, H, N, He, Au... Eyni zamanda, onun üçün daha asan idi - o, kimyadan ən yaxşılara - tələbələrə dərs deyirdi. Sankt-Peterburq Universiteti. Proqramlaşdırma isə artıq məktəbdə tədris olunur və tezliklə uşaq bağçasında da başlayacaq.

İkinci ehtiyac elmi yanaşmadır. Dövri Cədvəlin köməyi ilə yeni elementlər kəşf edildi və köhnələr haqqında məlumatlar düzəldildi. O, atom modelini yaratmağa kömək etdi (1911). Və s.

Üçüncü ehtiyac proqram anlayışının aydınlaşdırılmasıdır.

Müasir proqramlaşdırmanın bir ayağı 50-ci əsrin XNUMX-ci illərində ilişib qalıb. O vaxtlar proqramlar sadə idi, lakin maşınlar və maşın dilləri mürəkkəb idi, ona görə də hər şey maşınlar və dillər ətrafında fırlanırdı.

İndi hər şey əksinədir: proqramlar mürəkkəb və əsasdır, dillər sadə və ikinci dərəcəlidir. Bu, hər kəsə tanış görünən tətbiqi yanaşma adlanır. Lakin tələbələr və tərtibatçılar hər şeyin eyni olduğuna əmin olmağa davam edirlər.

Bu, bizi Privatdozent Mendeleyevin ilk mühazirəsinə qaytarır. Birinci kurs tələbələrinə nə demək lazımdır? Həqiqət haradadır? Sual budur.

“Matryoshka C” kitabı bu suala öz cavabını təqdim edir. Proqram dilinin laylı sistemi”. Üstəlik, bu, təkcə tələbələrə deyil, həm də təlim keçmiş proqramçılara ünvanlanır, çünki məhz onlar, yəni biz həqiqəti axtarmalı, dünyagörüşünü dəyişdirməliyik.

Aşağıdakılar kitabın xülasəsidir.

1. Giriş

1969-cu ildə əsas proqramlaşdırma dilinə çevrilən və 50 ildir ki, qaldığı C dili yaradıldı. Bu niyə belədir? Hər şeydən əvvəl ona görə ki, C tətbiq olunur proqramı verən dil humanist əvəzinə baxın maşın. Bu nailiyyət C ailəsindən olan dillər tərəfindən təmin edilmişdir: C++, JavaScript, PHP, Java, C# və başqaları. İkincisi, qısa və gözəl bir dildir.

Bununla belə, C dilinin özü adətən maşın montajçısı ilə qarışdırılır və bununla da onun qavrayışını çətinləşdirir və təhrif edir. Digər ifrat isə dilə müəyyən “fəlsəfə”nin qoyulmasıdır: prosedur, obyekt, funksional, tərtib edilmiş, şərh edilmiş, çap edilmiş və s. Bu, emosiya əlavə edir, lakin dili daha yaxşı təsvir etməyə kömək etmir.

Həqiqət ortadadır və C dili üçün fəlsəfi və maşın qavrayışı arasında ciddi şəkildə ortadadır.

C dili müstəqil deyil, adi yazı dilinə tabedir və eyni zamanda montaj dilinin özünə də nəzarət edir. Bu mövqe təsvir edir Proqramın nitq modeli, buna görə proqram üç tabe növə bölünür: nitq, kod, əmr. C dili ikinci kod növü üçün cavabdehdir.

Proqramda dilin yerini təyin edərək, bu barədə məlumatları təşkil edə bilərsiniz, bu da edir Laylı proqram dili sistemi, dövri sistem ruhunda C dilini təmsil edən - bir səhifədə.

Sistem nəzərə alınmaqla qurulur tətbiqi dillərin icmaları, onların nitq tabeliyindən irəli gəlir. Matruşka C vahidlərinin bir dəsti Matruşkalar seriyasını yaradaraq müxtəlif dilləri təsvir etməyə və müqayisə etməyə imkan verir: C++, PHP, JavaScript, C#, MySQL, Python və s. Fərqli dillərin əsas dilin vahidləri ilə təsvir edilməsi layiqli və düzgündür.

2. FƏSİL 1. Proqramın nitq modeli. Təmiz C

Birinci fəsil təqdim edir Proqramın nitq modeli, tətbiqi yanaşmanı əks etdirir. Onun sözlərinə görə, proqramın üç aydın ardıcıl növü var:

  1. çıxış - problemi həll edən proqramçının birbaşa çıxışı,
  2. kodlanmış - həllin C dilində (və ya hər hansı digər) riyazi formaya kodlaşdırılması
  3. və komanda - birbaşa maşın əmrləri.

Nitq modeli C-nin niyə sadə və başa düşülən dil olduğunu izah edir. Xi, bizə tanış olan insan nitqinin təsvirində və bənzərliyində qurulmuşdur.

Birinci növ proqram proqramçının birbaşa çıxışıdır. Nitq insan təfəkkürünə uyğundur. Başlanğıc proqramçılar nitqdən istifadə edərək proqramlar yazırlar - əvvəlcə rus dilində, sonra addım-addım hərəkətləri kod dilinə tərcümə edirlər. Və məhz bu modeldə C dili yaradılmışdır.

Proqramçının nitqdə ifadə etdiyi nəticələr kodlaşdırılmış ədədi formaya çevrilir. Bu çevrilmə çağırılmalıdır əks, çünki nitq və kod eyni təbiətə malikdir (əks - doğuş - cins). Proqramın nitq (solda) və kod (sağda) növlərini müqayisə etsək, bu, tamamilə aydın görünür.

Matryoshka Si. Proqram dilinin lay sistemi

Maraqlıdır ki, əks etdirmə çox sadədir - yalnız iki növ ifadə ilə.

Bununla belə, C dilinin müasir təsviri (1978-ci ildən) ümumiyyətlə dili təsvir etmək üçün və ya xüsusən də əks etdirmə tapşırığı üçün kifayət qədər ad siyahısını ehtiva etmir. Ona görə də biz məcbur oluruq ki, yaradıcılıqla məşğul olaq və bu adları təqdim edək.

Sözlərin seçimi dəqiq və aydın olmalıdır. Bu, qısaca belə ifadə olunan xüsusi yanaşma tələb edirdi: ana dilindən ciddi istifadə. İngilislər üçün bu ingilis olardı, amma biz ingilis deyilik. Ona görə də əlimizdə olanlardan istifadə edib rusca danışmağa çalışacağıq.

Refleksiya iki növ ifadə ilə həyata keçirilir:

  1. hesablama (HF) - obyektin xassələrindəki dəyişikliyi əks etdirir. Obyektin xassəsi ədədlə ifadə olunur, onda xassə üzərində hərəkət ədəd üzərində hərəkətdir - əməliyyatdır.
  2. tabeçilik (Pch) - hərəkətlərin ardıcıllığının dəyişməsini əks etdirir. Pch-in prototipi mürəkkəb nitq cümləsidir, buna görə də əksər Pch növləri “əgər”, “əks halda”, “ikən”, “üçün” tabeli bağlayıcılarla başlayır. Digər kompüter növləri onları tamamlayır.

Yeri gəlmişkən, inana bilərsinizmi ki, C təsvirində hesablama ifadələri üçün heç bir ad yoxdur - onlara sadəcə "ifadələr" deyilir? Bundan sonra tabelik növü üçün heç bir ad və assosiasiyanın olmaması, əslində adların, təriflərin və ümumiləşdirmələrin azlığı artıq təəccüblü olmayacaq. Çünki məşhur K/R (“The C Language”, Kernighan/Ritchie, 1978) təsvir deyil, dildən istifadə üçün bələdçidir.

Bununla belə, mən hələ də dilin təsvirini vermək istərdim. Ona görə də təklif olunur Laylı proqram dili sistemi.

3. FƏSİL 2. Lay sistemi. Qısaca C

İstənilən təsvir dəqiq və son dərəcə qısa olmalıdır. Proqram dili vəziyyətində frontal təsvir çətindir.

Burada bir proqramımız var. Modullardan ibarətdir. Modullar alt proqramlardan və kolleksiyalardan (strukturdan) ibarətdir. Alt proqramlar fərdi ifadələrdən ibarətdir: bəyannamələr, hesablamalar, subordinasiya. Subordinasiyanın on növü var. Subordinasiya alt səviyyələri və alt proqramları birləşdirir. Bir neçə reklam da var. Bununla belə, bəyannamələr təkcə alt proqramlara və alt səviyyələrə deyil, həm də modullara və kolleksiyalara daxil edilir. Əksər ifadələr təsviri o qədər çətin olan sözlərdən ibarətdir ki, onlar adətən sadəcə olaraq iki siyahıda verilir - dilin öyrənilməsi və istifadəsi zamanı tanış olacağınız orijinal və törəmə sözlər. Buna durğu işarələri və bir sıra başqa ifadələr əlavə edək.

Belə bir təqdimatda kimin kimin üzərində dayandığını anlamaq asan deyil.

Dili təsvir etmək üçün birbaşa iyerarxik yanaşma həddindən artıq mürəkkəb olardı. Dairəvi axtarış dilin nitq xarakteri və əmr tərəfinə əsaslanaraq təsvirinə gətirib çıxarır. Beləliklə, Mendeleyevin Dövri Sistemi ilə qismən üst-üstə düşən təbəqə sistemi yarandı. qat. Nəşr edildikdən 42 il sonra (1869) məlum oldu ki, sistemin dövriliyi elektron sistemlə bağlıdır. qatlar (1911, atomun Bohr-Rutherford modeli). Həmçinin, Layered və Periodic sistemləri bir səhifədə bütün vahidlərin cədvəl düzülüşündə oxşardır.

Dil vahidlərinin təsviri qısadır - yalnız 10 növ ifadə və 8 növ digər vahidlər, eləcə də mənalı və vizual. İlk tanışlıq üçün qeyri-adi olsa da.

Dil vahidləri 6 səviyyəyə bölünür:

  1. vahidlər - masa sıraları
  2. şöbələr - nəsillərin xüsusi qrupları (birinci sətrin hissələri)
  3. cins - hüceyrələr (əsas bölünmə səviyyəsi)
  4. supernövlər - növ ayırıcılar (nadir səviyyə)
  5. növlər - xananın altındakı və ya ayrı-ayrılıqda vahid düsturlar
  6. nümunələr - vahidlərin özləri (yalnız sözlər üçün)

Nümunə sözləri təsvir edir lüğət - eyni altı səviyyədən ibarət ayrıca alt sistem.

C dilinin nitq komponenti hələ də təsvirə layiq olsa da, olduqca aydındır. Amma dilin komanda hissəsi dəqiq kompilyasiya nəzarəti ilə bağlıdır, bu müddət ərzində üçüncü növ proqram yaradılır - komanda. Burada C dilinin ən maraqlı tərəfinə gəlirik: gözəllik.

4. SONRAKİ FƏSİLLƏR. Gözəl Si

C dili müasir proqramlaşdırmanın əsasını təşkil edir. Niyə? Birincisi, nitqə ən böyük uyğunluq səbəbindən. İkincisi, maşın nömrələrinin işlənməsinin məhdudiyyətlərini gözəl şəkildə keçdiyi üçün.

Xi tam olaraq nə təklif etdi? Şəkil və təbəqə.

"Şəkil" sözü yunanca "prototip" - "tip" sözündən gələn ingiliscə "tip" sözünün tərcüməsidir. Rus dilində "növ" sözü ifadə olunan anlayışın təməl daşını ifadə etmir, üstəlik, "tip" köməkçi mənası ilə qarışdırılır.

Əvvəlcə təsvir sırf maşın hesablama problemini həll etdi, sonra isə obyekt dillərinin doğulması üçün uçuş-enmə zolağına çevrildi.

Qat dərhal bir neçə problemi həll etdi - həm maşın, həm də tətbiq. Buna görə də, nəzərdən keçirmə tək vəzifəli bir şəkil ilə başlayacaq və çox vəzifəli təbəqəyə keçəcəkdir.

Tarixi proqramlaşdırmanın xoşagəlməz xüsusiyyətlərindən biri odur ki, əksər anlayışlar, o cümlədən əsas anlayışlar tərifsiz verilir. “Proqramlaşdırma dilində (çayların adı) tam və üzən ədəd növləri var...” və daha da cızdılar. “Növ”ün (şəklin) nə olduğunu müəyyən etmək lazım deyil, çünki müəlliflər özləri bunu tam başa düşmürlər və “aydınlıq naminə” onu susduracaqlar. Əgər onlar divara bərkidilirsə, qeyri-müəyyən və faydasız bir tərif verəcəklər. Xarici sözlərin arxasında gizlənməyə çox kömək edir: rus müəllifləri üçün - ingilis (tip), ingilislər üçün - fransız (alt proqram), yunan (polimorfizm), latın (kapsulyasiya) və ya onların birləşmələrinin (ad-hoc polimorfizmi) arxasında.

Amma bu bizim taleyimiz deyil. Bizim seçimimiz təmiz rus dilində qaldırılmış üzlüklü təriflərdir.

Şəkil

Şəkil 1) kəmiyyətin daxili xassələrini və 2) kəmiyyət üçün əməliyyatların seçilməsini müəyyən edən kəmiyyətin prefiqurativ adıdır.

“Növ” (növ) sözü tərifin birinci hissəsinə uyğundur: “kəmiyyətin daxili xassələri”. Ancaq görüntünün əsas mənası ikinci hissədədir: "əməliyyatların kəmiyyətlərə seçilməsi".

C-də təsvirin təqdim edilməsi üçün başlanğıc nöqtəsi əlavə əməliyyatı kimi normal hesablamadır.

Kağız Riyaziyyat, istər əllə, istərsə də çap olunmuş şəkildə yazılsa da, rəqəmlərin növləri arasında çox fərq qoymur, adətən onların real olduğunu fərz edir. Buna görə də onların emal əməliyyatları birmənalı deyil.

Maşın Riyaziyyat ciddi şəkildə ədədləri tam və kəsrlərə bölür. Müxtəlif növ nömrələr yaddaşda fərqli şəkildə saxlanılır və müxtəlif prosessor göstərişləri ilə işlənir. Məsələn, tam və kəsrlərin əlavə edilməsi üçün təlimatlar iki fərqli prosessor qovşağına uyğun gələn iki fərqli təlimatdır. Amma tam və kəsr arqumentləri əlavə etmək üçün heç bir əmr yoxdur.

Tətbiq olunub riyaziyyat, yəni C dili ədədlərin növlərini ayırır, lakin əməliyyatları birləşdirir: tam ədədlər və/yaxud kəsrlər üçün əlavə bir hərəkət işarəsi ilə yazılır.

Konsepsiya imicinin aydın tərifi bizə digər iki anlayış haqqında mütləq danışmağa imkan verir: məbləğ и əməliyyat.

Böyüklük və əməliyyat

Dəyər — emal olunan nömrə.

Əməliyyat — yekun ədədi (cəmi) əldə etmək üçün ilkin dəyərlərin (arqumentlərin) dəyərlərinin işlənməsi.

Böyüklük və əməliyyat bir-biri ilə bağlıdır. Hər bir əməliyyat kəmiyyətdir, çünki onun ədədi nəticəsi var. Və hər bir dəyər prosessor registrinə/registrindən dəyərin köçürülməsinin nəticəsidir, yəni əməliyyatın nəticəsidir. Bu əlaqəyə baxmayaraq, əsas odur ki, MA3-də baş verənlər lüğətin müxtəlif bölmələrində bir sözün təkrarlanması ilə də olsa, onların ayrıca təsvirinin mümkünlüyüdür.

Maşın yanaşması proqramçının istifadə etdiyi bütün nömrələri bölünür komandalar и data. Əvvəllər onların hər ikisi rəqəm idi, məsələn, əmrlər rəqəmsal kodlarla yazılırdı. Lakin tətbiq olunan dillərdə əmrlər ədəd olmaqdan çıxdı və oldu sözləri ilə и hərəkət əlamətləri. Rəqəmlər kimi yalnız “məlumatlar” qalır, lakin onları belə adlandırmağa davam etmək absurddur, çünki maşından riyazi nöqteyi-nəzərdən keçid zamanı ədədlər orijinala bölünən kəmiyyətlərdir (data) və yekun (tələb olunur). “Naməlum məlumat” axmaq səslənəcək.

Komandalar həmçinin iki növ hərəkətə bölündü: riyazi və xidməti. Riyazi hərəkətlər - əməliyyatlar. Rəsmi məsələlərə sonra keçəcəyik.

C dillərində adi kağız və maşın birmənalı və ya tək riyazi əməliyyatlar demək olar ki, universal olaraq çoxalır.

Çoxsaylı əməliyyatlar müxtəlif növ arqumentlər və fərqli, oxşar məna, hərəkətlərlə eyni adlı bir neçə əməliyyatdır.

Tam arqumentlər bütün əməliyyata, kəsr arqumentləri isə kəsr əməliyyatına uyğundur. Bu fərq xüsusilə bölmə əməliyyatı zamanı aydın görünür, 1/2 ifadəsi 0 deyil, cəmi 0,5 verir. Belə bir qeyd kağız riyaziyyatının qaydalarına uyğun gəlmir, lakin C dili onlara əməl etməyə çalışmır (Fortrandan fərqli olaraq) - özünə uyğun oynayır. tətbiq edilir Qaydalar.

Tam ədədləri və kəsrləri qarışdırmaq vəziyyətində, yalnız düzgün olanı daxil edilir arqument dəyərlərinin ötürülməsi — dəyərin bir təsvirdən digərinə seçici çevrilməsi. Həqiqətən, bir tam və kəsr bir ədəd əlavə edərkən, nəticə kəsrdir, buna görə əməliyyatın şəkli götürür tam arqumentin kəsr dəyərinə çevrilməsi əməliyyatı.

Bir sıra əməliyyatlar qalıb çoxsaylısubay. Belə əməliyyatlar yalnız bir növ arqument üçün müəyyən edilir: bölmə qalığı - tam ədəd arqumentləri, yığma (bit üzrə əməliyyatlar) - təbii tam ədədlər. Ma3 əməliyyatın müəyyən edildiyi şəkilləri göstərən işarələrlə (#^) əməliyyatların çoxluğunu göstərir. Bu, hər bir əməliyyatın vacib, lakin əvvəllər nəzərdən qaçırılmış xüsusiyyətidir.

Bütün funksiyalar ixtiyari vahid əməliyyatlarıdır. İstisna operatorlardır - mötərizədə olmayan funksiyalar, dildə qurulmuşdur (orijinal əməliyyatlar).

Yardım

Yardım - əməliyyatı müşayiət edən hərəkət.

Əgər əməliyyatı əsas hərəkət hesab etsək, onda əməliyyatı təmin edən və ondan fərqlənən iki müşayiət edəni ayırd edə bilərik. Bunlar 1) dəyişən nəzarət və 2) tabeçilikdir. Bu hərəkət adlanır yardım.

Burada proqramlaşdırma dərsliklərinin rus dilinə tərcümələri haqqında ayrı-ayrılıqda kənara çəkilmək və danışmaq lazımdır. Hərəkətləri qeyd etmək üçün K/R mətninə yeni söz daxil edilib bəyanat (ifadə), bir maşın əmri anlayışlarını müxtəlif hərəkətlərə bölməyə cəhd etdi: 1) əməliyyat, 2) bəyannamə və 3) tabeçilik ("idarəetmə konstruksiyaları" adlanır). Bu cəhd rus tərcüməçiləri tərəfindən "ifadə" sözünü "operator" sözü ilə əvəz edərək basdırıldı:

  1. maşın sözünün sinoniminə çevrilmişdir “əmr”,
  2. “hərəkət əlaməti” ifadəsinin sinonimi olduğu ortaya çıxdı.
  3. həm də qeyri-məhdud sayda əlavə dəyər aldı. That is, it has turned into something similar to the English article “uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh”

Müşayiət olunan hərəkətləri nəzərdən keçirin və ya yardım.

Dəyişən nəzarət

Dəyişən nəzarət (UP) - dəyişən xanaların yaradılması/silinməsi.
UE, artıq başqa bir səbəbdən - dəyərin şəklini göstərmək üçün yazılmış dəyişəni elan edərkən gizli şəkildə baş verir. Yalnız bir görünüş açıq şəkildə idarə olunur əlavə dəyişənlər malloc() və free() funksiyalarından istifadə etməklə.

Qeyd etmək lazımdır ki, gizli hərəkətlər yazmaq üçün daha əlverişlidir, çünki onlar ümumiyyətlə heç bir şey yazmağı tələb etmir, lakin onları başa düşmək daha çətindir - onları nəzərə almaq və şərh etmək daha çətindir.

Subordinasiya

Subordinasiya — qat bölmələrini birləşdirin/deaktiv edin.

C dili assemblerdən fərqli olaraq hərəkətlərin ardıcıllığına nəzarətin tətbiqi üsulunu təklif etdi - tabeçilik. Əsas hissəyə (tabelik bəndi) və tabe hissəyə (alt səviyyə/alt proqram bölmələri) aydın bölünmə ilə nitq mürəkkəb cümləsini əks etdirir və inkişaf etdirir.

Həm bəyannamə, həm də təqdimat tamamilə konsepsiya üzərində qurulub слой.

Qat

Qat məhdud bir səviyyəli seçmə ifadələr toplusudur.

Qat açıq və dolayısı ilə eyni anda bir neçə vəzifəni üzərinə götürdü:

  1. proqramın təşkili
  2. adların görünməsinin məhdudlaşdırılması (dolaylı olaraq),
  3. dəyişənlərin idarə edilməsi (yaddaş hüceyrələri) (örtülü),
  4. tabelik üçün tabe cümlələrin müəyyən edilməsi,
  5. funksiyaların və seçimlərin tərifləri və s.

Maşın dillərində təbəqə anlayışı yox idi, ona görə də K/R-də görünmürdü və əgər orada bir şey yox idisə, onu sonrakı kitablarda təqdim etmək bidət və sərbəst düşüncə olardı. Buna görə də, son dərəcə faydalı və olduqca açıq olmasına baxmayaraq, təbəqə anlayışı ümumiyyətlə ortaya çıxmadı.

Qat olmadan proqramın bir çox hərəkətlərini və qaydalarını qısa və aydın şəkildə izah etmək mümkün deyil. Məsələn, niyə üç qəpik qədər sadə getmək pisdir, çətin isə yaxşıdır. Siz ancaq Dijkstra kimi çarəsizcə söyüş söyə bilərsiniz (“proqramçıların məharəti onların proqramlarında goto ifadələrinin baş vermə tezliyindən tərs asılı olan funksiyadır.” Bir sözlə, yalnız keçilər gotodan istifadə edir. Bəraət səviyyəsi Allahdır.) Düzdür, bu o qədər də qorxulu deyil, əgər sizin kitablarınız Biz heç nəyi izah etməyə məcbur deyilik, amma artıq dediyimiz kimi, bu, bizim taleyimiz deyil.

Yeri gəlmişkən, güman etmək olar ki, Dan Ritçi hansısa adı açıqlanmayan konsepsiyanın axtarışı üçün açar kimi goto-dan dəqiq ayrılıb, çünki goto ifadəsində heç bir ehtiyac və gözəllik yox idi. Ancaq Riçinin özünün vermək istəmədiyi və dəqiq konsepsiyaya əsaslanan dilin yeni prinsiplərinin sadə və başa düşülən izahına ehtiyac var idi. слой.

Sapma

Sapma — yeni adın adi xassələrinin dəyişdirilməsi.

Ən vacib sapma proqramın təbəqə xüsusiyyətləri ilə dəqiq bağlıdır və hər bir təbəqə növündə fərqli məna daşıyan bir "statik" sözü ilə təsvir olunur.

5. SON FƏSİL. Tətbiqi dillərin ümumiliyi

Tətbiqi dillərdir obrazlı dillər (şəkli olan, “yazılan”). Onlar təsvirin açıq və ya gizli istifadəsinə əsaslanır. Üstəlik, burada yenidən bir ziddiyyət yaranır: açıq bir görüntü daha başa düşüləndir, lakin daha az rahatdır və əksinə.

Matryoshka Si. Proqram dilinin lay sistemi

(Cədvəlin tərtibatı hələ çatdırılmayıb, ona görə də cədvəl şəkil ilə göstərilib.)

C-dən sonra tətbiqi dillərin inkişafı onların obrazlılığını artırmaq yolunu tutdu. Yüksək təsviri başa düşmək üçün ən vacib olan C-nin birbaşa nəsli - C++ dilidir. O, kəmiyyətlər üçün əməliyyatların ixtiyari seçimi ideyasını inkişaf etdirir və onu yeni bir ad - obyekt alan sintetik ifadə seçimi əsasında təcəssüm etdirir. Bununla belə, C++ yeni kolleksiya növləri və onlarla əlaqəli qaydaların həddən artıq yüklənməsi səbəbindən C qədər yığcam və ifadəli deyil. Yeri gəlmişkən, "aşırı yükləmə" haqqında danışaq.

Həddindən artıq yükləmə və polimorfizm

"Həddindən artıq yükləmə" sözü yaratmaq üçün köhnəlmiş maşın öyrənmə terminidir çoxlu əməliyyatlar.

Maşın (sistem) proqramçıları çoxluq əməliyyatlar zəhlətökən ola bilər: “Bu işarə (+) nə deməkdir: tam ədədlər əlavə etmək, kəsrlər əlavə etmək və ya hətta yerdəyişmə?! Bizim vaxtımızda belə yazmırdılar!” Beləliklə, seçilmiş sözün mənfi məzmunu ("həddən artıq yükləmə", "yorğun"). Tətbiq proqramçısı üçün çoxlu əməliyyatlar C dilinin təməl daşı, əsas nailiyyəti və mirasıdır, o qədər təbiidir ki, onlar çox vaxt tanınmır.

C++ dilində çoxluq yalnız ilkin əməliyyatlara deyil, həm də funksiyalara - həm fərdi, həm də siniflərə birləşdirilmiş - metodlara genişlənir. Çoxsaylı metodlarla onları genişləndirilmiş siniflərdə ləğv etmək imkanı gəldi, bu da qeyri-müəyyən şəkildə "polimorfizm" adlanırdı. Polimorfizm və həddindən artıq yüklənmənin birləşməsi iki polimorfizmə bölünən partlayıcı bir qarışıq meydana gətirdi: "doğru" və "ad-hoc". Bunu ancaq təyin olunmuş adlara baxmayaraq başa düşmək olar. Reklama gedən yol xarici adlarla döşənib.

"Həddindən artıq yükləmə" formasının bəyanı sözlə daha yaxşı ifadə edilir əlavə elan — fərqli təsvirin arqumentləri ilə eyni adlı funksiyanın elanının əlavə edilməsi.

"Polimorfizm" formasının bəyannaməsi daha yaxşı adlanır yenidən elan — eyni təsvirin arqumentləri ilə eyni adlı funksiyanın yeni genişləndirici qatında üst-üstə düşən bəyannamə.

Sonra başa düşmək asan olacaq ki, eyni üsullar müxtəlif şəkillərin (arqumentlərin) - əlavə olaraq elan edildi, və bir şəkil - yenidən elan etdi.

Rus sözləri qərar verir.

Uçuş zolağı

Yüksək obrazlı dillərin anlayışlarının nəzərdən keçirilməsi fundamental anlayışların dəqiq tərifinin vacibliyini təsdiqləyir. Düzgün təsvir olunan C ilə yüksək məcazi dilləri öyrənmək asan və xoş olacaq.

üçün bu xüsusilə vacibdir gizli yüksək obrazlı dillər (PHP, JavaScript). Onlar üçün obyektlərin əhəmiyyəti (kompozit şəkillər) C++ ilə müqayisədə daha yüksək olur, lakin görüntü anlayışının özü gizli və anlaşılmaz olur. Rahatlıq nöqteyi-nəzərindən onlar sadələşib, başa düşmək baxımından isə çətinləşib.

Buna görə də, proqramlaşdırma dillərini C dili ilə öyrənməyə başlamalı və C ailəsinin dillərinin göründüyü ardıcıllıqla irəliləməlisiniz.

Eyni şey dillərin təsvirinə də aiddir. Fərqli dillərdə C dili ilə müqayisədə eyni və ya daha kiçik vahid cinslər dəsti var. Növlərin və nümunələrin sayı hər iki istiqamətdə fərqlənə bilər: C++-da C-dən daha çox növ var, JavaScript isə daha azdır.

MySQL dilini xüsusi qeyd etmək lazımdır. Görünür ki, ortaq heç nə yoxdur, amma o, Matryoshka tərəfindən mükəmməl təsvir olunur və onunla tanış olmaq daha sürətli və asan olur. Müasir proqramlaşdırmanın yemək yolu olan veb üçün əhəmiyyətini nəzərə alsaq, vacibdir. MySQL olan yerdə başqa SQL-lər də var. Yaxşı, hər cür Fortran-Pascal-Pythons da əllərinə düşən kimi Matryoshka tərəfindən təsvir olunur.

Beləliklə, bizi böyük şeylər gözləyir - C dilinin tətbiqi təsviri və ondan sonra gələn dillərin vahid təsviri. “Məqsədlərimiz aydındır, vəzifələrimiz müəyyəndir. İşə başlayın, yoldaşlar! (Fırtınalı, uzun sürən alqışlar, alqışa çevrilir. Hamı ayağa qalxır.)"

Fikirləriniz böyük diqqətlə dinləniləcək, yuva quran kuklalar veb saytının yaradılmasında köməyiniz böyük minnətdarlıqla qarşılanacaq. Kitab haqqında daha dolğun məlumat, Matryoshka C-də ağıllı şəkildə gizlədilmiş veb saytındadır.

Mənbə: www.habr.com

Добавить комментарий