{"id":33886,"date":"2019-10-31T21:55:15","date_gmt":"2019-10-31T18:55:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/matryoshka-si-slojnaya-sistema-yazyka-programmy\/"},"modified":"2019-10-31T21:55:15","modified_gmt":"2019-10-31T18:55:15","slug":"matryoshka-si-slojnaya-sistema-yazyka-programmy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matrjo\u0161ka Si. Slojni sistem jezika programa","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Poskusimo si predstavljati kemijo brez Periodi\u010dne tabele Mendelejeva (1869). Koliko elementov bi bilo treba imeti v mislih, in to v poljubnem redu... (Takrat - 60.)<\/p>\n<p>Zadostuje, da pomislite na enega ali ve\u010d programskih jezikov. Enaki ob\u010dutki, tista sama ustvarjalna zmeda. <\/p>\n<p>Sedaj lahko do\u017eivimo ob\u010dutke kemi\u010darjev 19. stoletja, ko so jim ponudili vse njihovo znanje, in \u0161e malo ve\u010d, v eni Periodi\u010dni tabeli. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjo\u0161ka Si. Slojni sistem jezika programa\" src=\"\/wp-content\/uploads\/2019\/05\/15ce1538e152aad5fcd683fe7fcd96c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKnjiga 'Matrioshka C. Plastenjski sistem programske jezika' predstavlja vse enote jezika C, kot bi bile na dlani. To omogo\u010da, da jih uredimo, popravimo zastarele informacije in celo natan\u010dneje opredelimo samo pojmo programa. <\/p>\n<p>Danes informacije o programiranju potrebujejo sistematizacijo \u0161e bolj kot kemi\u010dni elementi pred 150 leti. <\/p>\n<p>Prva nujnost - pou\u010devanje. Mendelejev je za\u010del ustvarjati svoj sistem, ko se je soo\u010dil z vpra\u0161anjem - s katerim elementom za\u010deti predavati: O, H, N, He, Au... Pri tem je bilo njemu la\u017eje - pou\u010deval je kemijo najbolj\u0161e - \u0161tudente SPb univerze. Programiranje pa \u017ee pou\u010dujejo v \u0161oli in kmalu za\u010dnejo v vrtcih. <\/p>\n<p>Druga nujnost - znanstveni pristop. S pomo\u010djo Periodi\u010dne tabele so odkrili nove elemente in popravili podatke o starih. Pomagala je pri ustvarjanju modela atoma (1911). In tako naprej. <\/p>\n<p>Tretja nujnost - natan\u010dnej\u0161a opredelitev pojma programa. <\/p>\n<p>Sodobno programiranje je z eno nogo zastalo v 50-ih letih 20. stoletja. Takrat so bile programe preproste, stroji in strojni jeziki pa zapleteni, zato je vse kro\u017eilo okoli strojev in jezikov. <\/p>\n<p>Sedaj je vse obratno: programe so zapletene in primarne, jeziki pa so preprosti in sekundarni. To se imenuje aplikativni pristop, ki je vsem nekoliko znan. A \u0161tudente in razvijalce \u0161e naprej prepri\u010dujejo, da je vse \u0161e vedno tako. <\/p>\n<p>Kar nas vra\u010da k prvi predavanji privatnega docenta Mendelejeva. Kaj povedati prva\u0161kim \u0161tudentom? Kje je resnica? To je vpra\u0161anje. <\/p>\n<p>Svoj odgovor na to ponuja knjiga 'Matrioshka C. Plastenjski sistem programske jezika'. Poudariti je treba, da je ta namenjena ne le \u0161tudentom, ampak tudi usposobljenim programerjem, saj morajo resnico iskati in prevrniti svetovni nazor prav oni, torej mi. <\/p>\n<p>Naslednje sledi kratko povzetek knjige. <\/p>\n<h2>1. Uvod<\/h2>\n<p>\nV letu 1969 je bil ustvarjen jezik C, ki je postal temeljni programski jezik in \u017ee 50 let ostaja tak. Zakaj je to tako? Predvsem zato, ker je C <i>prakti\u010den<\/i> jezik, ki programom daje <i>\u010dlove\u0161ki<\/i> videz namesto <i>strojnega<\/i>. To dose\u017eek so potrdili jeziki iz dru\u017eine C: C++, JavaScript, PHP, Java, C# in drugi. Drugi\u010d, to je kratek in lep jezik. <\/p>\n<p>Vendar pa se sam jezik C obi\u010dajno zame\u0161a z strojno asemblerjem, kar ote\u017euje in izkrivlja njegovo dojemanje. Druga skrajnost je vsiljevanje neke 'filozofije' jeziku: procedurne, objektne, funkcionalne, kompajlirane, interpretirane, tipizirane in tako naprej. To dodaja \u010dustva, vendar ne pomaga bolje opisati jezika. <\/p>\n<p>Resnica se nahaja na sredini, in sicer za jezik C \u2014 strogo na sredini med filozofskim in strojnih dojemanjem. <\/p>\n<p>Jezik C ni samostojen, podrejen je obi\u010dajnemu pisnemu govoru, hkrati pa sam upravlja jezik asemblerja. To stanje opisuje <i>Govorna model programa<\/i>, po katerem je program razdeljen na tri podrejene tipe: govorni, kodni, ukazni. Jezik C odgovarja za drugi, kodni tip. <\/p>\n<p>Ko dolo\u010dite mesto jezika v programu, lahko uredite informacije o njem, kar omogo\u010da <i>Plastna sistem programa<\/i>, ki predstavlja jezik C v duhu Mendeljejevega sistema \u2014 na eni strani. <\/p>\n<p>Sistem je zgrajen ob upo\u0161tevanju <i>skupnosti prakti\u010dnih jezikov<\/i>, ki izhaja iz njihove govorne podrednosti. En sklop enot Matrio\u0161ke C omogo\u010da opisovanje in primerjanje razli\u010dnih jezikov, kar ustvarja niz Matrio\u0161k: C++, PHP, JavaScript, C#, MySQL, Python in tako naprej. Pravi\u010dno je in prav, da so razli\u010dni jeziki opisani z enotami temeljnega jezika. <\/p>\n<h2>2. GLAVA 1. Govorna model programa. Razumljiv C<\/h2>\n<p>\nV prvem poglavju je predstavljena <i>govorna model programa<\/i>, ki odra\u017ea prakti\u010den pristop. Po njem ima program tri o\u010ditne zaporedne tipe: <\/p>\n<ol>\n<li>govorni \u2014 neposredna govor programerja, ki re\u0161uje nalogo, <\/li>\n<li>kodni \u2014 kodiranje re\u0161itve v matemati\u010dni obliki v jeziku C (ali kateremkoli drugem)<\/li>\n<li>in ukazni \u2014 neposredni strojni ukazi. <\/li>\n<\/ol>\n<p>\nGovorna model pojasnjuje, zakaj je C preprost in razumljiv jezik. C je zgrajen po vzoru in podobni na\u0161i obi\u010dajni \u010dlove\u0161ki govor. <\/p>\n<p>Prvi tip programa je izravni govor programera. Govor je u skladu s ljudskim razmi\u0161ljanjem. Pomo\u0107u govora pi\u0161u programe po\u010detnici \u2014 najprije na ruskom, a zatim postupno prevode\u0107i radnje na programski jezik. I prema tom uzorku je stvoren jezik C. <\/p>\n<p>Zaklju\u010dci programera, izra\u017eeni govorom, pretvaraju se u kodni broj\u010dani oblik. Ovu transformaciju treba nazvati <i>odrazom<\/i>, budu\u0107i da govor i kod imaju jednu prirodu (odraz \u2014 ro\u0111enje \u2014 rod). To je sasvim o\u010dito kada se usporede govorni (s lijeve strane) i kodni (s desne strane) oblici programa. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjo\u0161ka Si. Slojni sistem jezika programa\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZanimljivo je da se odraz odvija vrlo jednostavno \u2014 samo s dva roda izraza. <\/p>\n<p>Me\u0111utim, moderno opisivanje jezika C (od 1978. godine) ne sadr\u017ei dovoljan popis naziva ni za opis jezika uop\u0107e, ni za zadatak odraza posebno. Stoga smo prisiljeni suo\u010diti se s kreativno\u0161\u0107u i uvesti te nazive.<\/p>\n<p>Izbor rije\u010di mora biti to\u010dan i jasan. Za to je potreban poseban pristup, koji se mo\u017ee ukratko izraziti ovako \u2014 strogo kori\u0161tenje materinjeg jezika. Za Engleze bi to bio engleski, ali mi nismo Englezi. Dakle, koristimo ono \u0161to imamo i trudimo se govoriti ruski. <\/p>\n<p>Odraz se izvr\u0161ava s dva roda izraza: <\/p>\n<ol>\n<li><i>ra\u010dunanje <\/i>(R\u010d) \u2014 odra\u017eava promjenu svojstava predmeta. Svojstvo predmeta izra\u017eava se brojem, tada je radnja nad svojstvom \u2014 to je radnja nad brojem \u2014 operacija. <\/li>\n<li><i>pod\u010dinjenje <\/i>(P\u010d) \u2014 odra\u017eava promjenu reda radnji. Predlo\u017eak P\u010d je slo\u017eena re\u010denica, pa ve\u0107ina vrsta P\u010d po\u010dinje s podrednim veznicima \"ako\", \"ina\u010de\", \"dok\", \"za\". Druge vrste P\u010d ih dopunjuju. <\/li>\n<\/ol>\n<p>\nUsput, mo\u017eete povjerovati da u opisu C nema naziva za izraze ra\u010dunanje \u2014 jednostavno se nazivaju \"izrazi\"? Nakon toga ve\u0107 ne iznena\u0111uje nedostatak naziva i kombinacija za rod pod\u010dinjenje, a ni op\u0107enito oskudica u nazivu, definicijama i generalizacijama. Sve zbog toga \u0161to poznati K\/R (\"Jezik C\", Kernighan\/Ritchie, 1978) nije opis, ve\u0107 priru\u010dnik za kori\u0161tenje jezika. <\/p>\n<p>Me\u0111utim, ipak bismo \u017eeljeli imati opis jezika. Stoga ga nudi <i>Plastna sistem programa<\/i>. <\/p>\n<h2>3. GLAVA 2. Slojni sustav. Kratki C<\/h2>\n<p>\nSvaki opis mora biti to\u010dan i izuzetno kratak. U slu\u010daju jezika programa, frontalni opis je ote\u017ean. <\/p>\n<p>Tukaj imamo program. Sestavljen je iz modulov. Moduli so sestavljeni iz podprogramov in zbirk (structure). Podprogrami so sestavljeni iz posameznih izrazov: izjav, izra\u010dunov in podrejenih. Podrejenih je kar deset vrst. Podrejenja vklju\u010dujejo podravni in podprogrami. Izjav je tudi ve\u010d. Vendar pa se izjave ne vklju\u010dujejo le v podprograme in podravne, temve\u010d tudi v module in zbirke. In ve\u010dina izrazov je sestavljena iz besed, katerih opis je tako zapleten, da jih obi\u010dajno preprosto predstavimo v dveh seznamih \u2013 izvorne in izpeljane besede, s katerimi se bomo spoznali skozi celotno u\u010denje in uporabo jezika. Dodajmo k temu \u0161e lo\u010dila in \u0161e vrsto izrazov. <\/p>\n<p>V tak\u0161nem prikazu ni enostavno razumeti, kdo je bil kdo. <\/p>\n<p>Neposreden hierarhi\u010dni pristop k opisovanju jezika bi bil preve\u010d zapleten. Iskanje ovinkastih poti pripelje do opisa jezika na osnovi njegove govorne narave in ukazne plati. Tako je nastala Plasti\u010dna sistem, delno sovpadajo\u010da s Periodi\u010dnim sistemom Mendelejeva, ki je prav tako <i>plastna<\/i>. Kot se je izkazalo 42 let po njenem izidu (1869), je periodi\u010dnost sistema povezana z elektronskimi <i>plastmi <\/i>(1911, model atoma Bohr-Rutherford). Prav tako Plasti\u010dni in Periodi\u010dni sistem zdru\u017euje tabelari\u010dna struktura vseh enot na eni strani. <\/p>\n<p>Opis enot jezika je kratek \u2013 le 10 rodov izrazov in 8 rodov drugih enot, ter hkrati vsebinski in pregleden. \u010ceprav nenavaden za prvo sre\u010danje. <\/p>\n<p>Enote jezika so razdeljene na 6 ravni:<\/p>\n<ol>\n<li>razredi \u2013 vrstice tabele<\/li>\n<li>oddelki \u2013 posebne skupine rodov (del prve vrstice)<\/li>\n<li>rodi \u2013 celice (glavna raven delitve)<\/li>\n<li>nadvrste \u2013 lo\u010devalci vrst (redka raven)<\/li>\n<li>vrste \u2013 formule enot na dnu celice ali posebej<\/li>\n<li>primerki \u2013 same enote (samo za besede)<\/li>\n<\/ol>\n<p>\nPrimerke besed opisuje <i>slovar<\/i> \u2013 lo\u010den podz sistem, sestavljen iz istih \u0161estih ravni. <\/p>\n<p>Govorna sestavina jezika C je povsem o\u010ditna, \u010deprav vseeno zaslu\u017ei opis. Del ukazov jezika pa je povezan z upravljanjem prevajanja, pri \u010demer nastane tretja vrsta programa \u2013 ukazna. Tukaj pridemo do najbolj fascinantnega dela jezika C \u2013 lepote. <\/p>\n<h2>4. NASLEDNJA GLAVA. Lep C<\/h2>\n<p>\nJezik C le\u017ei u osnovi modernog programiranja. Za\u0161to? Prvo, zbog najve\u0107e uskla\u0111enosti s jezikom. Drugo, jer se elegantno nosi s ograni\u010denjima ma\u0161inske obrade brojeva.<\/p>\n<p>\u0160ta je ta\u010dno C ponudio? Tip i sloj. <\/p>\n<p>Re\u010d \u201etip\u201c je prevod engleske re\u010di \u201etype\u201c, koja poti\u010de od gr\u010dkog \u201eprototypo\u201c \u2014 \u201euzor\u201c. U srpskom jeziku re\u010d \u201etip\u201c ne prenosi su\u0161tinsko zna\u010denje izra\u017eene ideje, a tako\u0111e se me\u0161a sa slu\u017ebenim zna\u010denjem \u201evrsta\u201c. <\/p>\n<p>U po\u010detku je tip re\u0161evao isklju\u010divo ma\u0161inski problem izra\u010dunavanja, a zatim je postao uzletna pista za nastanak objektno-orijentisanih jezika. <\/p>\n<p>Sloj je odmah re\u0161avao nekoliko zadataka \u2014 i ma\u0161inskih i primenjenih. Zato \u0107e razmatranje po\u010deti od jednonamenskog tipa i pre\u0107i na vi\u0161enamenski sloj. <\/p>\n<p>Jedna od neprijatnih osobina istorijskog programiranja je ta da se ve\u0107ina pojmova, uklju\u010duju\u0107i osnovne, daje bez definicija. \"Programsko jezgro (ime reka) ima ceo i decimalni tip brojeva...\" \u2014 i nastavi dalje. \u0160ta je \u201ctip\u201d (oblik) \u2014 nije obavezno definisati, jer autori to sami ne razumeju do kraja i zamagljuju \u201eda bi bilo jasnije\u201c. Ako ih pritisnete, daje\u0107e nejasne i beskorisne definicije. Veoma poma\u017ee sakriti se iza stranih re\u010di: za ruske autore \u2014 iza engleskih (tip), za Engleze \u2014 iza francuskih (subroutine), gr\u010dkih (polimorfizam), latinskih (enkapsulacija) ili njihovih kombinacija (polimorfizam ad-hoc). <\/p>\n<p>Ali to nije na\u0161a sudbina. Na\u0161 izbor \u2014 definicije sa podignutim \u0161titom na \u010distom srpskom jeziku. <\/p>\n<h3>Slika<\/h3>\n<p>\n<i>Slika<\/i> \u2014 to je uzorak imena veli\u010dine koji odre\u0111uje 1) sopstvena svojstva veli\u010dine i 2) izbor operacija za veli\u010dinu. <\/p>\n<p>Re\u010di \u201etip\u201c (vrsta) odgovara prvi deo definicije: \u201esopstvena svojstva veli\u010dine\u201c. Ali glavno zna\u010denje tipa je u drugom delu: \u201eizbor operacija za veli\u010dine\u201c.<\/p>\n<p>Polazna ta\u010dka za uvo\u0111enje tipa u jeziku C \u2014 uobi\u010dajeno izra\u010dunavanje, na primer, operacija sabiranja. <\/p>\n<p><i>Papirna<\/i> matematika, zapisana ru\u010dno ili kucana, ne pravi posebnu razliku izme\u0111u vrsta brojeva, obi\u010dno smatraju\u0107i ih realnim. Stoga su operacije njihove obrade jednozna\u010dne.<\/p>\n<p><i>Ma\u0161inska<\/i> Matematika strogo lo\u010di \u0161tevilke na cele in decimalne. Razli\u010dne vrste \u0161tevil se shranjujejo v spomin in obravnavajo z razli\u010dnimi ukazi procesorja. Na primer, ukazi za se\u0161tevanje celih in decimalnih \u0161tevil so dve razli\u010dni ukazni, ki sta povezani z dvema razli\u010dnima enotama procesorja. Vendar pa ukaza za se\u0161tevanje celotnega in decimalnega argumenta ni. <\/p>\n<p><i>Prakti\u010dna<\/i> matematika, torej jezik C, lo\u010di vrste \u0161tevil, vendar zdru\u017euje operacije: se\u0161tevanje celih in\/ali decimalnih \u0161tevil se zapi\u0161e z enim znakom delovanja.<\/p>\n<p>Jasna definicija pojma 'oblika' omogo\u010da, da jasno govorimo o dveh drugih pojmih: <i>veljavnost <\/i>in <i>operacija<\/i>. <\/p>\n<h3>Veljavnost in operacija<\/h3>\n<p>\n<i>Veljavnost <\/i> \u2014 obdelana \u0161tevilka.<\/p>\n<p><i>Operacija<\/i> \u2014 obdelava vrednosti izvornih veljavnosti (argumentov) za pridobitev kon\u010dne \u0161tevilke (rezultata). <\/p>\n<p>Veljavnost in operacija sta med seboj povezani. Vsaka operacija je veljavnost, saj ima numeri\u010dni rezultat. Vsaka veljavnost pa je rezultat prenosa vrednosti v register procesorja\/iz procesorja, torej \u2014 rezultat operacije. Kljub tej povezanosti pa je klju\u010dnega pomena mo\u017enost njihovega lo\u010denega opisa, \u010deprav z ponavljanjem iste besede v razli\u010dnih oddelkih slovarja, kar se dogaja v ma3. <\/p>\n<p>Strojni pristop je delil vse \u0161tevilke, ki jih uporablja programer, na <i>ukazov <\/i>in <i>podaci<\/i>. V preteklosti so bili tako eni kot drugi pravzaprav \u0161tevilke, na primer, ukazi so bili zapisani z numeri\u010dnimi kodi. Vendar so v aplikativnih jezikih ukazi prenehali biti \u0161tevilke in postali <i>besede <\/i>in <i>znaki dejanj<\/i>. \u0160tevilke so ostale samo 'podatki', toda nenehno jih imenovati tako je absurdno, saj pri prehodu od strojne do matemati\u010dne perspektive \u0161tevilke postanejo velikosti, ki jih delijo izvorne (<i>podaci<\/i>) in kon\u010dne (<i>iskane<\/i>). 'Neznan podatek' \u2014 to bi sli\u0161alo neumno. <\/p>\n<p>Ukazi so se prav tako razdelili na dve vrsti dejanj: matemati\u010dne in slu\u017ebene. Matemati\u010dna dejanja so operacije. O slu\u017ebenih se bomo pozneje vrnili. <\/p>\n<p>V jezikih C se obi\u010dajne papirnate in strojne nedvoumne, ali enojne, matemati\u010dne operacije skoraj skoraj vedno pretvorijo v mnogotere. <\/p>\n<p>Mnogotere operacije \u2013 ve\u010d enakih operacij z razli\u010dnimi oblikami argumentov in razli\u010dnimi, po pomenu povezanimi dejanjimi. <\/p>\n<p>Celo\u0161tevnim argumentom ustrezajo celo\u0161tevil\u010dne operacije, decimalnim pa decimalne. Ta razlika je \u0161e posebej o\u010ditna pri operaciji deljenja, ko izraz 1\/2 da rezultat 0, namesto 0,5. Tak\u0161na zapis ne ustreza pravilom papirnate matematike, vendar jezik C ne stremi k njihovemu spo\u0161tovanju (v nasprotju s Fortranom) \u2014 igra po svojih <i>aplikativnih<\/i> pravil.<\/p>\n<p>V primeru me\u0161anja celih in decimalnih \u0161tevil se vklopi edino pravilno <i>prikazovanje vrednosti argumentov<\/i> \u2014 selektivno pretvorbo vrednosti iz ene oblike v drugo. Res je, da pri se\u0161tevanju celega in decimalnega \u0161tevila rezultat \u2014 decimalno, zato se oblika operacije <i>prilagodi <\/i>operaciji pretvorbe celega argumenta v decimalno vrednost. <\/p>\n<p>Vrsta operacij ostaja ne <i>ve\u010dkratne<\/i>, a <i>enotne<\/i>. Tak\u0161ne operacije so opredeljene le za en tip argumentov: ostanek deljenja \u2014 cela \u0161tevila, ukaz (bitne operacije) \u2014 naravna cela \u0161tevila. Ma3 ozna\u010duje ve\u010dkratnost operacij z znaki (#^) z navedbo oblik, za katere je operacija opredeljena. To je pomembna, a prej spregledana lastnost vsake operacije. <\/p>\n<p>Vse funkcije so poljubne enotne operacije. Edina izjema so operatorji \u2014 <i>brezskob\u010dne funkcije<\/i>, vgrajene v jezik (izvorne operacije). <\/p>\n<h3>Pomo\u010d<\/h3>\n<p>\n<i>Pomo\u010d <\/i> \u2014 spremljajo\u010de dejanje operaciji.<\/p>\n<p>\u010ce gledamo operacijo kot osnovno dejanje, lahko izpostavimo dve spremljajo\u010di, ki podpirata operacijo in se razlikujeta od nje. To sta 1) upravljanje spremenljivke in 2) podrejanje. Tak\u0161no dejanje se imenuje <i>pomo\u010d<\/i>.<\/p>\n<p>Tukaj je treba odstopiti in posebej omeniti ruske prevode u\u010dbenikov o programiranju. V besedilu K\/R so za zapis dejanj uvedli novo besedo <i>statement <\/i>(izraz), ki je posku\u0161al razdeliti pojme strojne ukaze na razli\u010dne dejavnosti: 1) operacijo, 2) napoved in 3) podrejanje (imenovano \u201enadzorne strukture\u201c). Ta poskus so pokopali ruski prevajalci, nadomestiv\u0161i \u201eizraz\u201c z besedo \u201eoperator\u201c, ki:<\/p>\n<ol>\n<li>je postala sinonim za strojno besedo \u201eukaz\u201c, <\/li>\n<li>se je izkazala za sinonim besedne zveze \u201eznak delovanja\u201c,<\/li>\n<li>in je tudi pridobila neomejeno \u0161tevilo dodatnih pomenov. Torej je postala podobna angle\u0161kemu: \u201euhhh\u2026\u201c. <\/li>\n<\/ol>\n<p>\nPoglejmo spremljajo\u010da dejanja, ali <i>pomo\u010di<\/i>.<\/p>\n<h4><i>Upravljanje spremenljivke<\/i> <\/h4>\n<p>\n<i>Upravljanje spremenljivke<\/i> (UP) \u2014 ustvarjanje\/odstranjevanje celic spremenljivke. <br \/>\nUP se zgodi implicitno ob razglasitvi spremenljivke, kar se \u017ee pi\u0161e z drugega razloga \u2014 za ozna\u010devanje oblike veli\u010dine. Izrecno se upravlja le z enim tipom <i>dodatnih spremenljivk<\/i> s funkcijama malloc() in free(). <\/p>\n<p>Treba je opozoriti, da so implicitni postopki bolj priro\u010dni za pisanje, saj ne zahtevajo ni\u010desar pisati, a so te\u017eji za razumevanje \u2014 te\u017eje jih je upo\u0161tevati in razlagati. <\/p>\n<h4><i>Podrejanje<\/i><\/h4>\n<p>\n<i>Podrejanje <\/i> \u2014 povezovanje\/odklopanje slojnih razli\u010dnih delov. <\/p>\n<p>Jezik C je predlagal druga\u010den pristop od assemblerja za obvladovanje zaporedja dejanj \u2014 podrejanje. To odra\u017ea in razvija govorjeno zapleteno podrejeno poved z jasnim lo\u010devanjem na glavni del (poved podrejanje) in stranski del (oddelki podneva\/podprogram). <\/p>\n<p>Tako razglasitev kot podrejanje sta v celoti zgrajena na pojmu <i>sloj<\/i>. <\/p>\n<h3>Sloj<\/h3>\n<p>\n<i>Sloj <\/i> \u2014 je omejena enonivojska izbira izrazov. <\/p>\n<p>Sloj je jasno in implicitno prevzel izvajanje ve\u010d nalog takoj: <\/p>\n<ol>\n<li>urejanje programa,<\/li>\n<li>omejevanje vidnosti imen (implicitno),<\/li>\n<li>upravljanje s spremenljivkami (celicami pomnilnika) (implicitno),<\/li>\n<li>dolo\u010danje stranskih odsekov za podrejanje,<\/li>\n<li>dolo\u010danje funkcij in nabora ter druge. <\/li>\n<\/ol>\n<p>\nV strojnih jezikih ni bilo pojma sloj, zato se ta ni pojavil niti v K\/R, in \u010de \u017ee \u010desa tam ni bilo \u2014 bi bilo napakev in svobodoljubnosti to uvajati v nadaljnjih knjigah. Zato pojem sloj sploh ni nastal, \u010deprav je izjemno uporaben in povsem o\u010diten. <\/p>\n<p>Brez sloja ni mogo\u010de na kratek in jasen na\u010din razlo\u017eiti mnogih dejanj in pravil programa. Na primer, zakaj je preprost goto \u2014 slab, medtem ko je zapleten while \u2014 dober. Lahko se samo brez mo\u010di prito\u017eujemo, kot je po\u010del Dijkstra (\u00abkvalifikacija programerjev \u2014 funkcija, ki se obratno odvisno pove\u010duje s frekvenco vklju\u010devanja operadorjev goto v njihovih programih\u00bb. Skratka, le kozli uporabljajo goto. Raven utemeljitve \u2014 Bog.) Res pa to ni tako stra\u0161no, \u010de va\u0161e knjige sploh ne obvezujejo, da bi karkoli razlo\u017eile, vendar, kot smo \u017ee rekli, to ni na\u0161 usoda. <\/p>\n<p>Usput, mo\u017ee se pretpostaviti da je Den Ri\u010di ostavio goto upravo kao klju\u010d za pretra\u017eivanje nekog neimenovanog pojma, jer nije postojala nikakva potreba ili lepota u izrazu goto. Me\u0111utim, postojala je potreba za jednostavnim i jasnim obja\u0161njenjem novih principa jezika, koje sam Ri\u010di nije \u017eeleo da pru\u017ei, a koji su upravo zasnovani na tom pojmu. <i>sloj<\/i>. <\/p>\n<h3>Odstupanje<\/h3>\n<p>\n<i>Odstupanje <\/i> \u2014 promena uobi\u010dajenih osobina novog imena. <\/p>\n<p>Najva\u017enije odstupanje je upravo povezano sa slojnim osobinama programa, i opisuje se jednom re\u010dju \u201estatic\u201c, koja ima razli\u010dita zna\u010denja u svakoj vrsti sloja. <\/p>\n<h2>5. POSLEDNJA GLAVA. Op\u0161tost aplikativnih jezika<\/h2>\n<p>\nAplikativni jezici su <i>oblikovni <\/i>jezici (koji imaju oblik, \u201etipizovani\u201c). Oni se zasnivaju na eksplicitnoj ili implicitnoj upotrebi oblika. I ovde se ponovo javlja kontradikcija: eksplicitan oblik \u2014 jasniji je, ali manje prakti\u010dan, i obrnuto. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjo\u0161ka Si. Slojni sistem jezika programa\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(Tabela za formatiranje jo\u0161 nije dostupna, pa je tabela data kao slika.)<\/i><\/p>\n<p>Nakon C-a, razvoj aplikativnih jezika oti\u0161ao je putem pove\u0107anja njihove oblikovnosti. Najva\u017eniji za razumevanje visoke oblikovnosti je direktni potomak C-a \u2014 jezik C++. On razvija ideju slobodnog izbora operacija na vrednostima i ostvaruje je na osnovu C-ovog izraza izbor, koji dobija novo ime \u2014 objekat. Me\u0111utim, C++ nije tako kratak i izra\u017eajan kao C, zbog preoptere\u0107enja novih vrsta izbora i povezanih pravila. Usput, razgovara\u0107emo o \u201epreoptere\u0107enju\u201c. <\/p>\n<h3>Preoptere\u0107enje i polimorfizam <\/h3>\n<p>\nRe\u010d \u201epreoptere\u0107enje\u201c (overload) \u2014 zastareli termin ma\u0161inskog pristupa, koji ozna\u010dava stvaranje <i>vi\u0161estrukih operacija<\/i>. <\/p>\n<p>Ma\u0161inskih (sistemskih) programera <i>vi\u0161estrukost <\/i>operacija mogla je iritirati: \u201e\u0160ta ovaj simbol (+) zna\u010di: sabiranje celih brojeva, sabiranje decimalnih brojeva ili mo\u017eda pomeranje?! U na\u0161e vreme to se nije pisalo!\u201c Odatle negativna konotacija izabranog izraza (\u201epretilo\u201c, \u201edosadilo\u201c). Za aplikativnog programera vi\u0161estruke operacije \u2014 to je kamen temeljac, najve\u0107e dostignu\u0107e i nasle\u0111e jezika C, toliko prirodne, da se \u010desto ne prepoznaju. <\/p>\n<p>U jeziku C++ <i>vi\u0161estrukost<\/i> se je raz\u0161irila ne le na osnovne operacije, temve\u010d tudi na funkcije \u2014 tako lo\u010dene kot zdru\u017eene v razrede \u2014 metode. Skupaj z ve\u010d metodami se je pojavila mo\u017enost njihovega predefiniranja v raz\u0161irjenih razredih, ki je bila nejasno poimenovana \"polimorfizem\". Kombinacija polimorfizma in \u010dezobremenitve je ustvarila eksplozivno me\u0161anico, ki se je razdelila na dva polimorfizma: \"pravi\" in \"ad-hoc\". Razumeti to je mogo\u010de le kljub dodeljenim imenom. S tujimi imeni je tlakovana pot v ad. <\/p>\n<p>Objava vrste \"\u010dezobremenitev\" je bolje izraziti z besedo <i>dodeklaracija <\/i> \u2014 dodana objava istoimenske funkcije z argumenti druge oblike. <\/p>\n<p>Objava vrste \"polimorfizem\" je bolje poimenovati z besedo <i>predeklaracija<\/i> \u2014 preklicna objava v novem raz\u0161irjenem sloju istoimenske funkcije z argumenti iste oblike. <\/p>\n<p>Takrat bo enostavno razumeti, da se istoimenske metode razli\u010dnih oblik (argumentov) \u2014 <i>dodeklarirajo<\/i>, ena sama oblika \u2014 <i>predeklarira<\/i>. <\/p>\n<p>Ruske besede re\u0161ujejo. <\/p>\n<h3>Vzletna steza<\/h3>\n<p>\nObravnava pojmov visokooblikovnih jezikov potrjuje pomembnost jasne opredelitve temeljnih pojmov. Z ustrezno opisanim C je u\u010denje visokooblikovnih jezikov lahko in prijetno. <\/p>\n<p>To je \u0161e posebej pomembno za <i>implicitne visokooblikovne jezike<\/i> (PHP, JavaScript). Zanje postane pomembnost objektov (sestavljenih oblik) \u0161e vi\u0161ja kot pri C++, toda samo pojmovanje oblike postane implicitno in te\u017eko zajemljivo. Z vidika enostavnosti so postali bolj preprosti, z vidika razumevanja \u2014 pa te\u017eji. <\/p>\n<p>Zato bi se moralo u\u010denje programskih jezikov za\u010deti z jezikom C in napredovati naprej v vrstnem redu, v katerem so se jeziki pojavili iz dru\u017eine C. <\/p>\n<p>Enak primer velja za opis jezikov. Razli\u010dni jeziki imajo sovpadajo\u010d ali manj\u0161ih niz rodov enot kot jezik C. \u0160tevilo vrst in vzorcev se lahko razlikuje v obe smeri: C++ ima ve\u010d vrst kot C, JavaScript \u2014 manj. <\/p>\n<p>Posebno omembo si zaslu\u017ei jezik MySQL. Zdi se, da ni ni\u010d skupnega, a se odli\u010dno opisuje z Matrio\u0161ko, in spoznavanje z njo postane hitrej\u0161e in la\u017eje. Kar je pomembno, ob upo\u0161tevanju njegovega pomena za splet \u2014 avtocesto sodobnega programiranja. In kjer je MySQL, so tudi drugi SQL. No, tudi vsi Fortran-Pascal-Python jeziki se opisujejo z Matrio\u0161ko, ko pridejo na vrsto. <\/p>\n<p>Tako da nas \u010dekaju velika dela \u2014 primen opis jezika C i jedinstven opis slede\u0107ih jezika. \u201eNa\u0161i ciljevi su jasni, zadaci odre\u0111eni. Na posao, drugovi! (Burne, dugotrajne ovacije koje prelaze u aplauz. Svi ustaju.)\u201c <\/p>\n<p>Va\u0161a mi\u0161ljenja \u0107e biti pa\u017eljivo saslu\u0161ana, va\u0161a pomo\u0107 u kreiranju sajta matrioshki bi\u0107e prihva\u0107ena s velikim zahvalnostima. Potpune informacije o knjizi nalaze se na sajtu, ve\u0161to skrivenom u Matrioshki C.<br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452328\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869). \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u2026 (\u0422\u043e\u0433\u0434\u0430 \u2014 60.) \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435 \u0436\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0430, \u0442\u043e\u0442 \u0436\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u0430 \u0445\u0438\u043c\u0438\u043a\u043e\u0432 XIX \u0432\u0435\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0432\u0441\u0435 \u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-33886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Matrioshka C. Slojeviti sistem programskog jezika | ProHoster","description":"Poku\u0161a\u0107emo da zamislimo hemiju bez Periodi\u010dnog sistema Mendelejeva (1869).","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster","og:description":"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).","og:url":"https:\/\/prohoster.info\/sl\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:15+00:00","article:modified_time":"2019-10-31T18:55:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33886","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:23","updated":"2026-01-21 17:06:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}