{"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\/et\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kujutame ette keemiat ilma Mendelejevi perioodilise s\u00fcsteemita (1869). Kui palju elemente tuli meeles pidada, veelgi enam, suvalises j\u00e4rjekorras... (Tollal - 60.)<\/p>\n<p>Selleks on piisavalt m\u00f5elda \u00fchele v\u00f5i mitmele programmeerimiskeelele. Samad tunded, sama loominguline segadus. <\/p>\n<p>Ja n\u00fc\u00fcd saame l\u00e4bi elada 19. sajandi keemikute tundeid, kui neile pakuti kogu nende teadmiste kogumit, veidi lisaks, \u00fches perioodilises tabelis. <\/p>\n<p><img decoding=\"async\" alt=\"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel\" 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 \/>\nRaamat \"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel\" esitab k\u00f5ik C# keele \u00fcksused k\u00e4eulatuses. See v\u00f5imaldab neid korrastada, parandada aegunudandmeid ja isegi t\u00e4psustada m\u00f5istet 'programm'. <\/p>\n<p>T\u00e4nap\u00e4eval vajab programmeerimise teave s\u00fcsteematiseerimist isegi rohkem kui 150 aastat tagasi keemilised elemendid. <\/p>\n<p>Esimene vajadus on \u00f5petamine. Mendelejev alustas oma s\u00fcsteemi loomist, kui ta seisis silmitsi k\u00fcsimusega, millisest elemendist alustada loengute pidamist: O, H, N, He, Au... Samal ajal oli tal lihtsam - ta \u00f5petas keemiat parimatele Peterburi \u00fclikooli tudengitele. Ja programmeerimist \u00f5petatakse juba koolis ning varsti alushariduses. <\/p>\n<p>Teine vajadus on teaduslik l\u00e4henemine. Perioodilise s\u00fcsteemi abil avati uusi elemente ja parandati vanade kohta k\u00e4ivat teavet. See aitas kaasa aatomi mudeli loomisele (1911). Ja nii edasi. <\/p>\n<p>Kolmas vajadus on programmi m\u00f5iste t\u00e4psustamine. <\/p>\n<p>Kaasaegne programmeerimine on \u00fche jalaga kinni 20. sajandi 50ndates. Siis olid programmid lihtsad ning masinad ja masinakeeled keerulised, seega keerles k\u00f5ik masinate ja keelte \u00fcmber. <\/p>\n<p>N\u00fc\u00fcd on k\u00f5ik vastupidi: programmid on keerulised ja primaarsetes, keeled on lihtsad ja sekundaarsetes. Seda nimetatakse rakenduslikuks l\u00e4henemiseks, mis on k\u00f5igile tuttav. Kuid tudengeid ja arendajaid j\u00e4tkatakse veenmas, et k\u00f5ik on endiselt samasugune. <\/p>\n<p>See toob meid tagasi Mendelejevi atroofilise \u00f5ppe korralduse juurde. Mida \u00f6elda esmakursuslastele? Kus on t\u00f5de? See on k\u00fcsimus. <\/p>\n<p>Oma vastuse sellele pakub raamat \"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel\". Ja see ei ole suunatud ainult tudengitele, vaid ka ettevalmistatud programmeerijatele, sest just nemad, ehkki me, peaksime t\u00f5de otsima ja maailmavaateid \u00fcmber p\u00f6\u00f6rama. <\/p>\n<p>J\u00e4rgneb raamatu l\u00fchikokkuv\u00f5te. <\/p>\n<h2>1. Sissejuhatus<\/h2>\n<p>\nAastal 1969 loodi keel C, mis sai aluskeeleks programmeerimises ja on seda olnud juba 50 aastat. Miks on see nii? Esiteks, sest C on <i>rakenduslik<\/i> keel, mis annab programmile <i>inimliku<\/i> ilme asemel <i>masinlikule<\/i>. Seda saavutust on kinnitanud C sugulased: C++, JavaScript, PHP, Java, C# ja teised. Teiseks, tegemist on l\u00fchikese ja ilusa keele kasutamisega. <\/p>\n<p>Kuid keelt C segatakse sageli masinasse assembleeritava keelega, mis muudab selle ettekujutuse keeruliseks ja moonutab. Teiseks \u00e4\u00e4rmusteks on millegip\u00e4rast keelele sissetoomine mingit \"filosoofiat\": protseduuriline, objektne, funktsionaalne, kompileeritud, t\u00f5lgendatav, t\u00fcpiseeritud jne. See lisab emotsioone, kuid ei aita paremini keelt kirjeldada. <\/p>\n<p>T\u00f5de asub keskel, C keele puhul - rangelt keskel erakordse ja masinliku m\u00f5istmise vahel. <\/p>\n<p>Keel C ei ole iseseisev, see allub tavap\u00e4rasele kirjutusviisile ja samas - juhib ise assembleerimise keelt. See seisukoht kirjeldab <i>Programmi k\u00f5nemudel<\/i>, mille kohaselt on programm jagatud kolme alluvasse t\u00fc\u00fcpi: k\u00f5ne, kood, k\u00e4sk. C keel vastutab teise, koodi t\u00fc\u00fcbi eest. <\/p>\n<p>M\u00e4\u00e4ratledes keele koha programmis, saab selle kohta teavet korraldada, mis teeb <i>Programmi kihi s\u00fcsteem<\/i>, mis esitleb keelt C Menedeleevi s\u00fcsteemi vaimus - \u00fchel lehel. <\/p>\n<p>S\u00fcsteem on \u00fcles ehitatud <i>rakenduslike keelte \u00fcldisusele<\/i>, mis tuleneb nende k\u00f5ne alluvusest. \u00dcks komplekt C Matryoshka elemente v\u00f5imaldab kirjeldada ja v\u00f5rrelda erinevaid keeli, luues rea Matryoshka-nukke: C++, PHP, JavaScript, C#, MySQL, Python jne. On kena ja \u00f5ige, et erinevaid keeli kirjeldatakse aluskeele elementidega. <\/p>\n<h2>2. PEAT\u00dcKK 1. Programmi k\u00f5nemudel. Selge C<\/h2>\n<p>\nEsimeses peat\u00fckis on esitatud <i>programmi k\u00f5nemudel<\/i>, mis kajastab rakenduslikku l\u00e4henemist. Selle kohaselt on programmil kolm ilmset j\u00e4rjestikku t\u00fc\u00fcpi: <\/p>\n<ol>\n<li>k\u00f5ne - otsek\u00f5ne programmeerijalt, kes lahendab probleemi, <\/li>\n<li>kood - lahenduse koodimine matemaatilisse vormi keeles C (v\u00f5i mis tahes muus)<\/li>\n<li>ja k\u00e4sk - otse masinakomplektid. <\/li>\n<\/ol>\n<p>\nK\u00f5nemudel selgitab, miks C on lihtne ja arusaadav keel. C on \u00fcles ehitatud meie tavalise inimk\u00f5ne mudeli j\u00e4rgi. <\/p>\n<p>Esimene programmiliik on programmeerija otsek\u00f5ne. K\u00f5ne vastab inimm\u00f5tlemisele. Algajad programmeerijad loovad programme k\u00f5ne kaudu \u2014 esmalt vene keeles ja seej\u00e4rel t\u00f5lgivad j\u00e4rk-j\u00e4rgult tegevused koodikeelde. Just sellise mudeli j\u00e4rgi loodi keele C. <\/p>\n<p>Programmeeri m\u00f5tlemised, v\u00e4ljendatud k\u00f5nes, muudetakse koodi numbriliseks vormiks. Seda teisendust tuleks nimetada <i>peegeldamiseks<\/i>, kuna k\u00f5ne ja kood omavad \u00fchte loodust (peegeldamine \u2014 s\u00fcnnitus \u2014 sugulane). See on t\u00e4iesti ilmselge, kui v\u00f5rrelda k\u00f5ne (vasakul) ja koodi (paremal) programmiliike. <\/p>\n<p><img decoding=\"async\" alt=\"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHuvitav, et peegeldamine toimub v\u00e4ga lihtsalt \u2014 vaid kahe v\u00e4ljendusliigiga. <\/p>\n<p>Kuid, kaasaegne keele C kirjeldus (1978. aastast) ei sisalda piisavat nimekirja nimetustest ega keele \u00fcldise kirjelduse jaoks, ega ka peegeldamise \u00fclesande jaoks. Seet\u00f5ttu peame loovalt tegutsema ja need nimetused sisse viima.<\/p>\n<p>S\u00f5nade valik peab olema t\u00e4pne ja selge. Selleks oli vajalik eriline l\u00e4henemine, mida v\u00f5ib l\u00fchidalt v\u00e4ljendada sedasi \u2014 ema keele range kasutamine. Inglaste jaoks oleks see inglise keel, kuid me ei ole inglastest. Seega kasutame seda, mis meil on, ja p\u00fc\u00fcame r\u00e4\u00e4kida vene keeles. <\/p>\n<p>Peegeldust teostavad kaks v\u00e4ljendusliiki: <\/p>\n<ol>\n<li><i>arvutamine <\/i>(A) \u2014 peegeldab objekti omaduste muutumist. Objekti omadus v\u00e4ljendatakse arvuga, seega tegevus omaduse \u00fcle on tegevus numbri \u00fcle \u2014 tehe. <\/li>\n<li><i>alitamine <\/i>(B) \u2014 peegeldab tegevuste j\u00e4rjekorra muutumist. Alitemplari B eelk\u00e4ijaks on k\u00f5neline mitmealuse lause, seet\u00f5ttu algab enamik B t\u00fc\u00fcpe alistuskonjunktidega \"kui\", \"muul juhul\", \"kuni\", \"selleks\". Teised B t\u00fc\u00fcbid t\u00e4iendavad neid. <\/li>\n<\/ol>\n<p>\nMuide, kas usute, et C kirjelduse jaoks ei ole nimetust arvutamise v\u00e4ljendite jaoks \u2014 neid nimetatakse lihtsalt \"v\u00e4ljendid\"? P\u00e4rast seda ei \u00fcllata enam, et alitamise liigi jaoks pole nimetuse ja \u00fchenduse puudumist, ja \u00fcldse see nimetuste, definitsioonide ja \u00fcldistuste nappus. K\u00f5ik on tingitud sellest, et kuulus K\/R (\"C keel\", Kernighan\/Ritchie, 1978) ei ole mitte kirjeldus, vaid keele rakendamise juhis. <\/p>\n<p>Siiski sooviksime omada keele kirjeldust. Seet\u00f5ttu pakub selle <i>Programmi kihi s\u00fcsteem<\/i>. <\/p>\n<h2>3. PEAT\u00dcKK 2. Kihtide s\u00fcsteem. L\u00fchike C<\/h2>\n<p>\nIga kirjeldus peab olema t\u00e4pne ja \u00e4\u00e4rmiselt l\u00fchike. Programmeerimise keele puhul on otsene kirjeldus keeruline. <\/p>\n<p>Meil on programm. See koosneb moodulitest. Moodulid koosnevad alamprogrammidest ja kogumitest (structure). Alamprogrammid koosnevad eraldi v\u00e4ljenditest: deklaratsioonidest, arvutustest, allutustest. Allutusi on kokku k\u00fcmme t\u00fc\u00fcpi. Allutused \u00fchendavad alampinkide ja alamprogrammidega. Deklaratsioone on samuti mitu. Tegelikult h\u00f5lmatakse deklaratsioone mitte ainult alamprogrammidesse ja alampinkidesse, vaid ka moodulitesse ja kogumitesse. Enamik v\u00e4ljendeid koosneb s\u00f5nadest, mille kirjeldamine on sedav\u00f5rd keeruline, et tavaliselt esitletakse neid lihtsalt kahe nimekirjana - algsed ja tuletatud s\u00f5nad, millega tuleb tutvuda kogu keele \u00f5ppimise ja kasutamise v\u00e4ltel. Lisame siia ka kirjapungid ja veel rea v\u00e4ljendeid. <\/p>\n<p>Sellises esituses on keeruline m\u00f5ista, kes kellel seisis. <\/p>\n<p>Otsene hierarhiline l\u00e4henemine keele kirjeldamisele oleks \u00fclem\u00e4\u00e4ra keeruline. K\u00fcllastuslikud teed viivad keele kirjeldamiseni selle k\u00f5nesusega ja k\u00e4su poolega seotud. Nii s\u00fcndis Kihtide s\u00fcsteem, mis osaliselt kokku langeb Mendelejevi Perioodilise s\u00fcsteemiga, mis on samuti <i>kihtmine<\/i>. 42 aastat p\u00e4rast selle v\u00e4ljaandmist (1869) selgus, et s\u00fcsteemi perioodilisus on seotud elektronide <i>kihtidega <\/i>(1911, Bohr-Rutherford'i aatomimudel). Samuti seob Kihiline ja Perioodiline s\u00fcsteem k\u00f5iki \u00fcksusi tabelis \u00fchele lehele. <\/p>\n<p>Keele\u00fcksuste kirjeldamine on l\u00fchike - kokku 10 v\u00e4ljendi liiki ja 8 muu \u00fcksuse liiki, aga ka sisukas ja visuaalne. Kuigi esmakordse tutvumise juures v\u00f5ib see olla harjumatu. <\/p>\n<p>Keele\u00fcksused on jaotatud 6 tasemesse:<\/p>\n<ol>\n<li>r\u00fchmad - tabeli read<\/li>\n<li>osakonnad - erigruppide liigid (esimese rea osad)<\/li>\n<li>liigid - lahtrid (peamine jaotustase)<\/li>\n<li>\u00fclemliigid - liikide eraldajad (haruldane tase)<\/li>\n<li>liigid - valemi\u00fcksused lahtri all v\u00f5i eraldi<\/li>\n<li>n\u00e4idised - ise\u00fcksused (ainult s\u00f5nade jaoks)<\/li>\n<\/ol>\n<p>\nS\u00f5nade n\u00e4idiseid kirjeldab <i>s\u00f5nastik<\/i> - eraldi alams\u00fcsteem, mis koosneb samadest kuuest tasemest. <\/p>\n<p>Keel C on selgelt k\u00f5nekomponent, kuigi see v\u00e4\u00e4rib siiski kirjeldamist. Kuid selle keele k\u00e4suosa on seotud kompileerimise juhtimisega, mille k\u00e4igus luuakse kolmas programmiliik - k\u00e4su. Siin j\u00f5uame keele C k\u00f5ige p\u00f5nevamasse k\u00fclge - ilu. <\/p>\n<h2>4. J\u00c4RGMISED PEAT\u00dcKID. Ilus C<\/h2>\n<p>\nC-keel on kaasaegse programmeerimise alus. Miks? Esiteks, t\u00e4nu sellele, et see vastab k\u00f5ige paremini keelele. Teiseks, sest see \u00fcletab kenasti numbrite masinaprotsessimise piirangud.<\/p>\n<p>Mida t\u00e4pselt C pakkus? T\u00fc\u00fcp ja kiht. <\/p>\n<p>S\u00f5na \u201et\u00fc\u00fcp\u201d on t\u00f5lge ingliskeelsest s\u00f5nast \u201etype\u201d, mis tuleneb kreekakeelsest \u201eprototypos\u201d \u2014 \u201ekuju\u201d. Eesti keeles ei edasta s\u00f5na \u201et\u00fc\u00fcp\u201d v\u00e4ljendatava m\u00f5iste tuuma, lisaks seguneb see teenuslikku t\u00e4hendusse \u201eliik\u201d. <\/p>\n<p>Alguses lahendas t\u00fc\u00fcp puhtalt masinlikku arvutamis\u00fclesannet, kuid hiljem sai see objektip\u00f5histe keelte loomise stardiv\u00e4ljaks. <\/p>\n<p>Kiht lahendas kohe mitu \u00fclesannet \u2014 nii masinlikke kui ka rakenduslikke. Seet\u00f5ttu algab arutelu \u00fcheliikmelisest t\u00fc\u00fcbist ja liigub edasi mitme \u00fclesande kihile. <\/p>\n<p>\u00dcks ajaloolise programmeerimise ebameeldiv omadus on see, et enamik m\u00f5isteid, sealhulgas p\u00f5hielemendid, esitatakse ilma m\u00e4\u00e4ratlusteta. \u201eProgrammeerimiskeele (j\u00f5gede nimed) puhul on terviklik ja ujuv numbrite t\u00fc\u00fcp...\u201d \u2014 ja edasi minnakse. Mis t\u00e4hendab \u201et\u00fc\u00fcp\u201d (kuju) \u2014 ei ole kohustuslik m\u00e4\u00e4ratleda, sest autorid ise ei m\u00f5ista seda l\u00f5peti ja vehivad \u201eselguse nimel\u201d. Kui neid nurka suruda, annavad nad \u00e4hmase ja kasutu m\u00e4\u00e4ratluse. H\u00e4sti aitab peituda v\u00f5\u00f5rkeelsete s\u00f5nade taha: vene autorite jaoks ingliskeelsete (type) taha, inglaste puhul aga prantsuskeelsete (subroutine), kreekakeelsete (polymorphism), ladinakeelsete (encapsulation) v\u00f5i nende kombinatsioonide (polymorphism ad-hoc) taha. <\/p>\n<p>Aga see ei ole meie saatus. Meie valik on m\u00e4\u00e4ratlused puhtas eesti keeles. <\/p>\n<h3>T\u00fc\u00fcp<\/h3>\n<p>\n<i>T\u00fc\u00fcp<\/i> \u2014 see on liiki m\u00e4\u00e4rav nimi, mis m\u00e4\u00e4ratleb 1) suuruse omadused ja 2) operatsioonide valiku suuruse jaoks. <\/p>\n<p>S\u00f5nale \u201et\u00fc\u00fcp\u201d (liik) vastab m\u00e4\u00e4ratlemise esimene osa: \u201esuuruse omadused\u201d. Kuid peamine t\u00e4hendus on teises osas: \u201eoperatsioonide valik suurustele\u201d.<\/p>\n<p>T\u00fc\u00fcbi tutvustamise l\u00e4htepunkt C-keeles on tavap\u00e4rane arvutus, n\u00e4iteks liitmisoperatsioon. <\/p>\n<p><i>Paberimatemaatika, mida kirjutatakse k\u00e4sitsi v\u00f5i tr\u00fckitakse, ei tee liigide vahel suurt vahet, pidades neid tavaliselt reaalseteks. Seet\u00f5ttu on nende t\u00f6\u00f6tlemise operatsioonid \u00fcheselt m\u00f5istetavad.<\/i> Masinlik<\/p>\n<p><i>matemaatika.<\/i> Matemaatika eristab numbreid rangelt t\u00e4isarvudeks ja murdarvudeks. Erinevad arvut\u00fc\u00fcbid salvestatakse m\u00e4llu erinevalt ja neid t\u00f6\u00f6deldakse protsessori erinevate k\u00e4skudega. N\u00e4iteks on t\u00e4isarvude ja murdarvude liitmise k\u00e4sud kaks erinevat k\u00e4sku, mis vastavad kahele erinevale protsessori s\u00f5lmele. Seevastu puudub k\u00e4sk t\u00e4isarvu ja murru argumentide liitmiseks. <\/p>\n<p><i>Rakenduslik<\/i> matemaatika, st C keel eristab arvut\u00fc\u00fcpe, kuid \u00fchendab tehteid: t\u00e4isarvude ja\/v\u00f5i murdarvude liitmine kirjutatakse \u00fche m\u00e4rgiga.<\/p>\n<p>Selge m\u00f5iste m\u00e4\u00e4ratlemine v\u00f5imaldab kindlalt r\u00e4\u00e4kida ka kahest muust m\u00f5istest: <i>kogus <\/i>ja <i>tehe<\/i>. <\/p>\n<h3>Kogus ja tehe<\/h3>\n<p>\n<i>Kogus <\/i> \u2014 t\u00f6\u00f6deldud number.<\/p>\n<p><i>Tehe<\/i> \u2014 algv\u00e4\u00e4rtuste (argumentide) v\u00e4\u00e4rtuste t\u00f6\u00f6tlemine l\u00f5plikku numbrisse (tulemuseni) j\u00f5udmiseks. <\/p>\n<p>Kogus ja tehe on omavahel seotud. Iga tehe on kogus, kuna sellel on numbriline tulemus. Ja iga kogus on tulemus v\u00e4\u00e4rtuse edastamisest protsessori registrisse\/registrist v\u00e4lja, st \u2013 tehe tulemus. Vaatamata sellele seosele on siiski peamine nende eraldi kirjeldamise v\u00f5imalus, isegi kui \u00fchtaegu korratakse sama s\u00f5na erinevates s\u00f5naraamatute osades, nagu see toimub ma3. <\/p>\n<p>Masinlik l\u00e4henemine jagas k\u00f5ik programmis kasutatavad numbrid <i>k\u00e4skudeks <\/i>ja <i>andmeteks<\/i>. Varem olid need m\u00f5lemad numbrid, n\u00e4iteks kirjutati k\u00e4sud numbrilistes koodides. Kuid rakenduskeeltes lakkasid k\u00e4sud olemast numbrid ja muutusid <i>s\u00f5nadeks <\/i>ja <i>tehte m\u00e4rkideks<\/i>. Numbriteks j\u00e4id vaid \"andmed\", kuid nende j\u00e4tkuv nimetamine nii oleks naeruv\u00e4\u00e4rne, kuna masinlikult matemaatilisest vaatenurgast on numbrid kogused, mis jagunevad algseteks (<i>andmeteks<\/i>) ja l\u00f5plikeks (<i>otsitavad<\/i>). \"Tundmatu andmed\" k\u00f5laks rumalalt. <\/p>\n<p>K\u00e4sud jagunesid samuti kaheks teheteks: matemaatilised ja teenindavad. Matemaatilised tehed on operatsioonid. Teenindavatele p\u00f6\u00f6rdume hiljem. <\/p>\n<p>C keeltes muutuvad tuttavad paberil ja masinall tehtavad \u00fchem\u00f5ttelised, v\u00f5i \u00fcksikud, matemaatilised operatsioonid peaaegu \u00fcldiselt mitmem\u00f5tteliseks. <\/p>\n<p>Mitmem\u00f5ttelised operatsioonid \u2013 mitu sama nimega operatsiooni erinevate argumentide ja erinevate, t\u00e4henduse poolest l\u00e4hedaste tegudega. <\/p>\n<p>T\u00e4ielikele argumentidele vastab t\u00e4isoperatsioon, murdudele aga murdopeatsioon. See erinevus on eriti n\u00e4htav jagamisoperatsiooni puhul, kui v\u00e4ljend 1\/2 annab tulemuseks 0, mitte 0,5. Selline m\u00e4rgistus ei vasta pabermatemaatika reeglitele, kuid programmeerimiskeel C ei p\u00fc\u00fcdle nende j\u00e4rgimise poole (erinevalt Fortranist) \u2014 see m\u00e4ngib oma reeglite j\u00e4rgi. <i>rakenduslik<\/i> reeglid.<\/p>\n<p>Segades t\u00e4isarve ja murdarveid, rakendatakse ainut \u00f5iged <i>argumentide v\u00e4\u00e4rtuste viimist<\/i> \u2014 valimistransformatsioon v\u00e4\u00e4rtuse \u00fchtesuks teisendamiseks. T\u00f5epoolest, t\u00e4isarvu ja murdarvu liitmisel on tulemus \u2014 murd, seega operatsiooni <i>valib <\/i>t\u00e4isargumendi muunde murdarvuks. <\/p>\n<p>Mitu operatsiooni j\u00e4\u00e4b mitte <i>mitmekordseks<\/i>, vaid <i>\u00fcheks<\/i>. Sellised operatsioonid on m\u00e4\u00e4ratletud ainult \u00fche t\u00fc\u00fcbi argumentide jaoks: j\u00e4\u00e4k jagamisel \u2014 t\u00e4isarvud, bititasemed (bitwise operations) \u2014 naturaalsed t\u00e4isarvud. Ma3 m\u00e4rgib operatsioonide mitmekordse olemuse m\u00e4rkide (#^) abil, m\u00e4rkides, milliste kuvandite jaoks operatsioon on m\u00e4\u00e4ratletud. See on oluline, kuid varasemalt t\u00e4helepanuta j\u00e4etud omadus iga operatsiooni. <\/p>\n<p>K\u00f5ik funktsioonid on juhuslikud \u00fchekordsed operatsioonid. Erandiks on operaatorid \u2014 <i>ilmse sulgudeta funktsioonid<\/i>, mis on keele sisse ehitatud (algoperatsioonid). <\/p>\n<h3>Koost\u00f6\u00f6<\/h3>\n<p>\n<i>Koost\u00f6\u00f6 <\/i> \u2014 operatsioonile kaasnev tegevus.<\/p>\n<p>Kui vaadata operatsiooni kui p\u00f5hitegevust, siis saab eristada kahte kaasnevat tegevust, mis toetavad operatsiooni ja eristuvad sellest. Need on 1) muutuja juhtimine ja 2) allutamine. Seda tegevust nimetatakse <i>koost\u00f6\u00f6ks.<\/i>.<\/p>\n<p>Siin tuleb k\u00f5rvale kalduda ja eraldi r\u00e4\u00e4kida vene t\u00f5lgetest programmeerimise \u00f5pikutes. K\/ R teksti tegevuse kajastamiseks on sisse viidud uus s\u00f5na <i>statement <\/i>(avaldis), mis proovib jagada masink\u00e4sku erinevatesse tegevustesse: 1) operatsioon, 2) deklareerimine ja 3) allutamine (nimetatud \u00abjuhtivaks konstruktsiooniks\u00bb). Selle katse h\u00e4vitasid vene t\u00f5lkijad, asendades \u00abavaldis\u00bb s\u00f5naga \u00aboperaator\u00bb, mis:<\/p>\n<ol>\n<li>sai s\u00fcnon\u00fc\u00fcmiks masins\u00f5nale \u00abk\u00e4sk\u00bb, <\/li>\n<li>osutus s\u00fcnon\u00fc\u00fcmiks s\u00f5napaarile \u00abtoimingum\u00e4rk\u00bb,<\/li>\n<li>ja sai ka piiramatu hulga t\u00e4iendavaid t\u00e4hendusi. See t\u00e4hendab, et sellest sai sarnasus ingliskeelse artikli \u00abuhh\u2026\u00bb. <\/li>\n<\/ol>\n<p>\nVaatleme kaasnevaid tegevusi, v\u00f5i <i>koost\u00f6\u00f6id.<\/i>.<\/p>\n<h4><i>Muutujate haldamine<\/i> <\/h4>\n<p>\n<i>Muutujate haldamine<\/i> (\u00dcH) \u2014 muutujate rakkude loomine\/ kustutamine. <br \/>\n\u00dcH toimub vaikimisi muutujate kuulutamise ajal, mis kirjutatakse muul p\u00f5hjusel \u2014 suuruse n\u00e4itamiseks. Selges\u00f5naliselt juhitakse ainult \u00fchte t\u00fc\u00fcpi <i>t\u00e4iendavaid muutujaid<\/i> malloc() ja free() funktsioonide abil. <\/p>\n<p>Oluline on m\u00e4rkida, et vaikimisi toimingud on kirjutamise m\u00f5ttes mugavamad, kuna nad ei n\u00f5ua mitte midagi kirjutamist, kuid on arusaamise poolest keerulisemad \u2014 neid on raskem arvesse v\u00f5tta ja t\u00f5lgendada. <\/p>\n<h4><i>Allutamine<\/i><\/h4>\n<p>\n<i>Allutamine <\/i> \u2014 kihiliste osade \u00fchendamine\/eraldamine. <\/p>\n<p>C keel pakkus hea alternatiivina assemblerile rakendusmeetodi tegevuste j\u00e4rjekorra juhtimiseks \u2014 allutamine. See kajastab ja arendab keerukate lausete struktuuri, kus on selge eristus p\u00f5hitegevuse (allutamislause) ja alategevuse (osade tasand\/alamprogramm) vahel. <\/p>\n<p>N nii kuulutamine kui ka allutamine on t\u00e4ielikult \u00fcles ehitatud m\u00f5istele <i>kiht<\/i>. <\/p>\n<h3>Kiht<\/h3>\n<p>\n<i>Kiht <\/i> \u2014 see on piiratud \u00fche tasandi valikuline v\u00e4ljenduskomplekt. <\/p>\n<p>Kiht on v\u00f5tnud selge ja vaikimisi endale mitme \u00fclesande t\u00e4itmise: <\/p>\n<ol>\n<li>programmi struktureerimine,<\/li>\n<li>nimede n\u00e4htavuse piiramise (vaikimisi),<\/li>\n<li>muutujate (m\u00e4lu rakkude) haldamine (vaikimisi),<\/li>\n<li>aluste allutamise m\u00e4\u00e4ramine,<\/li>\n<li>funktsioonide ja kogude m\u00e4\u00e4ramine, ja muud. <\/li>\n<\/ol>\n<p>\nMasinakeeltes polnud kihtide m\u00f5istet, seega ei ilmunud see ka K\/R keeles, ja kui seal midagi polnud, siis oleks olnud mingite hilisemate raamatute sisu nende tutvustamine vale ja vabaduse puudumine. Seet\u00f5ttu ei ilmnenud kihtide m\u00f5isted \u00fcldse, kuigi need on \u00e4\u00e4rmiselt kasulikud ja t\u00e4iesti ilmsed. <\/p>\n<p>Ilma kihtideta ei saa paljusid tegevusi ja programmi reegleid l\u00fchidalt ja selgelt selgitada. N\u00e4iteks, miks 'goto', mis on lihtne nagu kolm senti, on halb, aga 'while', mis tundub keeruline, on hea. Saame vaid j\u00f5hkralt protestida, nagu tegi Dijkstra (\"programmeerijate kvalifikatsioon on p\u00f6\u00f6rdeline funktsioon, mis s\u00f5ltub nende programmides 'goto' operaatorite esinemissagedusest\"). L\u00fchidalt, vaid tolad kasutavad 'goto'. P\u00f5hjendamise tase \u2014 Jumal.) Tegelikult pole see nii hirmus, kui teie raamatud ei pea midagi selgitama, aga nagu me juba \u00fctlesime, ei ole see meie saatus. <\/p>\n<p>Muide, v\u00f5ib arvata, et Den Ritchie j\u00e4ttis goto just kui v\u00f5tme mingisuguse nimetu m\u00f5iste otsimiseks, kuna goto v\u00e4ljendil polnud mingit vajadust ega ilu. Pigem oli vajadus keele uute p\u00f5him\u00f5tete lihtsaks ja arusaadavaks selgitamiseks, mida Ritchie ise ei soovinud anda, ja mis p\u00f5hinevad just m\u00f5istel. <i>kiht<\/i>. <\/p>\n<h3>H\u00e4lve<\/h3>\n<p>\n<i>H\u00e4lve <\/i> \u2014 uue nime harilike omaduste muutmine. <\/p>\n<p>K\u00f5ige olulisem h\u00e4lve on seotud programmi kihiliste omadustega ja seda kirjeldatakse \u00fche s\u00f5naga \u201estaatiline\u201c, millel on igas kihis erinev t\u00e4hendus. <\/p>\n<h2>5. VIIMANE PEAT\u00dcKK. Rakenduskeelte \u00fchtsus<\/h2>\n<p>\nRakenduskeeled on <i>kujundlikud <\/i>keeled (mis sisaldavad kujundit, \u201et\u00fc\u00fcbitud\u201c). Need p\u00f5hinevad kujundi selgel v\u00f5i ebaselgel kasutamisel. Siin ilmneb taas vastuolu: selge kujund on arusaadavam, kuid v\u00e4hem mugav, ja vastupidi. <\/p>\n<p><img decoding=\"async\" alt=\"C# Maatrjoska. Kihiliselt s\u00fcsteemne programmeerimiskeel\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(Tabeli struktuuri pole veel tarnitud, seega on tabel kujutisena.)<\/i><\/p>\n<p>P\u00e4rast C keele areng suundus rakenduskeelte areng suureneva kujundlikkuse poole. K\u00f5ige olulisem k\u00f5rge kujundlikkuse m\u00f5istmiseks on C keele otsene j\u00e4reltulija \u2014 keel C++. See arendab ideed suvaliste toimingute kohandamisest v\u00e4\u00e4rtustega ja kehastab selle C keele v\u00e4ljendi j\u00e4rgi, mida nimetatakse uueks nimeks \u2014 objekt. Kuid C++ ei ole nii kompaktne ja v\u00e4ljendusrikas kui C, kuna see \u00fchistab uusi t\u00fc\u00fcpe ja seotud reegleid. \u00dcks asi, r\u00e4\u00e4gime \u201e\u00fclekoormusest\u201c. <\/p>\n<h3>\u00dclekoormus ja pol\u00fcmorfism <\/h3>\n<p>\nS\u00f5na \u201e\u00fclekoormus\u201c (overload) on vananenud masinliku l\u00e4henemise m\u00f5isted, millega t\u00e4histatakse <i>mitmekesiseid toiminguid<\/i>. <\/p>\n<p>Masin (s\u00fcsteem) programmeerijate <i>mitmekesisus <\/i>toimingutes v\u00f5is h\u00e4irida: \u201eMida t\u00e4hendab see m\u00e4rk (+): t\u00e4isarvude liitmine, murdarvude liitmine v\u00f5i \u00fcldse nihkumine?! Meie ajal ei kirjutatud niimoodi!\u201c Seega ikka negatiivne varjund valitud s\u00f5nal (\u201e\u00fcleliigne\u201c, \u201ek\u00fcll\u201d ). Rakendusprogrammeeri jaoks on mitmekesised toimingud keele C nurga kivi, peamine saavutus ja p\u00e4rand, nii loomulik, et tihti pole seda isegi teadvustatud. <\/p>\n<p>C++ keeles <i>mitmekesisus<\/i> laienes mitte ainult algoperatsioonidele, vaid ka funktsioonidele \u2014 nii eraldi kui ka klassidesse koondatuna \u2014 meetoditele. Koos mitmete meetoditega tekkis v\u00f5imalus nende \u00fclekirjutamiseks laiendatud klassides, mida on uduselt nimetatud \u201epol\u00fcmorfismiks\u201c. Pol\u00fcmorfismi ja \u00fclekulude kombinatsioon andis plahvatusohtliku segu, mis jagunes kaheks pol\u00fcmorfismiks: \u201et\u00f5eline\u201c ja \u201ead-hoc\u201c. Selgusele j\u00f5udmine on v\u00f5imalik vaid nimetuste antud t\u00e4hendustele vastu seistes. V\u00f5\u00f5rkeelsed nimetused sillutavad teed ad. <\/p>\n<p>Deklaratsioon, mis on \u201e\u00fclekulu\u201c t\u00fc\u00fcpi, on parem v\u00e4ljendada s\u00f5naga <i>lisadeklaratsioon <\/i> \u2014 lisav deklaratsioon sama nimega funktsioonist, mille argumendid on teistsugused. <\/p>\n<p>Deklaratsiooni, mis on \u201epol\u00fcmorfism\u201c, on parem nimetada s\u00f5naks <i>\u00fclekirjutamine<\/i> \u2014 kattuv deklaratsioon uue laiendava kihi sama nimega funktsioonist, mille argumendid on samasugused. <\/p>\n<p>Siis on lihtne selgeks teha, et sama nimega meetodid erinevate vormide (argumentide) \u2014 <i>lisatakse<\/i>, aga \u00fche vormi \u2014 <i>\u00fclekirjutatakse<\/i>. <\/p>\n<p>Eesti s\u00f5nad lahendavad. <\/p>\n<h3>Lennurada<\/h3>\n<p>\nK\u00d5RGE VORMIDE KEELTE KOHASED KONTSEPTSIOONID T\u00d5ENDAVAD P\u00d5HISTE T\u00c4PSUSE OLULISUST. \u00d5IGE KIRJELDUSTEGA C-JUHTUMITE \u00d5PPIMINE ON KERGEM JA MEELDIVAM. <\/p>\n<p>Seda on eriti oluline <i>kaudsete k\u00f5rgete vormide keelte jaoks<\/i> (PHP, JavaScript). Nende jaoks on objektide (kompleksvormide) t\u00e4htsus veelgi suurem kui C++-s, kuid ainete m\u00f5isted muutuvad kaudseks ja raskesti tabatavaks. Mugavuse m\u00f5ttes on need muutunud lihtsamaks, arusaamise m\u00f5ttes aga keerulisemaks. <\/p>\n<p>Seega tuleks programmeerimiskeelte \u00f5ppimist alustada C-keelest ja liikuda edasi C-perekonna keeltes j\u00e4rjekorras, milles need ilmusid. <\/p>\n<p>Sama kehtib keelte kirjeldamise kohta. Erinevatel keeltes on sama v\u00f5i v\u00e4iksem hulk liike kui C-keeles. Liikide ja vormide arv v\u00f5ib erineda m\u00f5lemas suunas: C++-l on liike rohkem kui C-l, JavaScriptis on v\u00e4hem. <\/p>\n<p>Erilist t\u00e4helepanu v\u00e4\u00e4rib keel MySQL. Tundub, et there pole midagi \u00fchist, kuid seda saab h\u00e4sti kirjeldada Matryoshka meetodil, ja tutvumine sellega muutub kiiremaks ja lihtsamaks. Mis on oluline, arvestades selle t\u00e4htsust veebis \u2014 kaasaja programmeerimise peamisel teel. Ja kus on MySQL, seal on ka teised SQL-id. Noh, ja igasugused Fortranid, Pascalid, Pythonid saavad samuti Matryoshka meetodi j\u00e4rgi kirjeldatud, kui k\u00e4ed sinna ulatuvad. <\/p>\n<p>Nii et, meid ootavad suured ettev\u00f5tmised \u2013 C-programmeerimiskeele praktiline kirjeldus ja j\u00e4rjestikuste keelte \u00fchine kirjeldus. \u201eMeie eesm\u00e4rgid on selged, \u00fclesanded on m\u00e4\u00e4ratletud. T\u00f6\u00f6le, kaaslased! (Kohutavad, pikad aplausid, mis muutuvad ovatsiooniks. K\u00f5ik t\u00f5usevad.)\u201c <\/p>\n<p>Teie arvamusi kuulatakse suure t\u00e4helepanuga, teie abi veneemade veebisaidi loomisel v\u00f5etakse vastu suurte t\u00e4nudega. Rohkem teavet raamatu kohta leiate saidilt, mis on peidetud C-matrioshka sisse.<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47C-matrioshka. Kihiline programmikeele s\u00fcsteem | ProHoster","description":"Proovime ette kujutada keemiat ilma Mendelejevi perioodilisest s\u00fcsteemist (1869).","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}