{"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\/ro\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matrio\u0219ka C. Sistem stratificat de limbaj de programare","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>S\u0103 ne imagin\u0103m chimia f\u0103r\u0103 Sistemul Perioadei lui Mendeleev (1869). C\u00e2te elemente trebuia s\u0103 \u021bii minte, \u00een ce ordine aleatorie... (Atunci - 60.)<\/p>\n<p>Pentru aceasta, este suficient s\u0103 te g\u00e2nde\u0219ti la unul sau mai multe limbaje de programare simultan. Acelea\u0219i emo\u021bii, aceea\u0219i zarv\u0103 creativ\u0103. <\/p>\n<p>Iar acum putem experimenta emo\u021biile chimistilor din secolul XIX, c\u00e2nd li s-au prezentat toate cuno\u0219tin\u021bele lor, \u0219i c\u00e2teva \u00een plus, \u00eentr-un singur tabel periodic. <\/p>\n<p><img decoding=\"async\" alt=\"Matrio\u0219ka C. Sistem stratificat de limbaj de programare\" 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 \/>\nCartea \u201eMatrio\u0219ka C. Sistem stratificat de limbaj de programare\u201d prezint\u0103 toate unit\u0103\u021bile limbajului C ca pe o palm\u0103. Acest lucru permite ordonarea lor, corectarea informa\u021biilor \u00eenvechite \u0219i chiar clarificarea \u00eens\u0103\u0219i a conceptului de program. <\/p>\n<p>Ast\u0103zi, informa\u021biile despre programare au nevoie de sistematizare chiar mai mult dec\u00e2t elementele chimice de acum 150 de ani. <\/p>\n<p>Prima necesitate - predarea. Mendeleev a \u00eenceput s\u0103 creeze sistemul s\u0103u c\u00e2nd a fost confruntat cu \u00eentrebarea - de la ce element s\u0103 \u00eenceap\u0103 lec\u021biile: O, H, N, He, Au... \u00cen acest timp, lui i-a fost mai u\u0219or - el preda chimie celor mai buni - studen\u021bii Universit\u0103\u021bii din Sankt Petersburg. Iar programarea deja se pred\u0103 \u00een \u0219coal\u0103 \u0219i \u00een cur\u00e2nd va \u00eencepe \u0219i \u00een gr\u0103dini\u021be. <\/p>\n<p>A doua necesitate - abordarea \u0219tiin\u021bific\u0103. Cu ajutorul Sistemului Perioadei au fost descoperite noi elemente \u0219i corectate informa\u021biile despre cele vechi. A ajutat la crearea modelului atomului (1911). \u0218i a\u0219a mai departe. <\/p>\n<p>A treia necesitate - clarificarea conceptului de program. <\/p>\n<p>Programarea modern\u0103 este blocat\u0103 cu un picior \u00een anii '50 ai secolului XX. Atunci programele erau simple, iar ma\u0219inile \u0219i limbajele de ma\u0219in\u0103 - complexe, a\u0219a c\u0103 totul se \u00eenv\u00e2rtea \u00een jurul ma\u0219inilor \u0219i limbajelor. <\/p>\n<p>Acum totul este invers: programele sunt complexe \u0219i primordiale, limbajele sunt simple \u0219i secundare. Aceasta se nume\u0219te abordarea aplica\u021bional\u0103, care pare familiar\u0103 tuturor. Dar studen\u021bii \u0219i dezvoltatorii continu\u0103 s\u0103 fie convin\u0219i c\u0103 totul este la fel ca \u00eenainte. <\/p>\n<p>Ceea ce ne aduce \u00eenapoi la prima lec\u021bie a privat-docentului Mendeleev. Ce s\u0103 spunem studen\u021bilor de anul \u00eent\u00e2i? Unde este adev\u0103rul? Aici este \u00eentrebarea. <\/p>\n<p>Cartea \u201eMatrio\u0219ka C. Sistem stratificat de limbaj de programare\u201d ofer\u0103 r\u0103spunsul s\u0103u. \u00cens\u0103 aceasta se adreseaz\u0103 nu doar studen\u021bilor, ci \u0219i programatorilor preg\u0103ti\u021bi, deoarece c\u0103utarea adev\u0103rului \u0219i schimbarea viziunii asupra lumii ar trebui s\u0103 vin\u0103 tocmai de la ei, adic\u0103 de la noi. <\/p>\n<p>Urmeaz\u0103 o scurt\u0103 prezentare a c\u0103r\u021bii. <\/p>\n<h2>1. Introducere<\/h2>\n<p>\n\u00cen 1969 a fost creat limbajul C, care a devenit un limbaj de programare fundamental \u0219i r\u0103m\u00e2ne astfel de 50 de ani. De ce este a\u0219a? \u00cen primul r\u00e2nd, pentru c\u0103 C este un <i>limbaj aplicat<\/i> , care confer\u0103 programelor un <i>aspect uman<\/i> \u00een loc de <i>asembler ma\u0219in\u0103.<\/i>Aceast\u0103 realizare a fost consolidat\u0103 de limbajele din familia C: C++, JavaScript, PHP, Java, C# \u0219i altele. \u00cen al doilea r\u00e2nd, este un limbaj concis \u0219i frumos. <\/p>\n<p>Cu toate acestea, limbajul C este adesea confundat cu asamblorul, complic\u00e2nd \u0219i distorsion\u00e2nd astfel percep\u021bia sa. O alt\u0103 extremitate este impunerea unei anumite \u201efilozofii\u201d asupra limbajului: procedurale, orientate pe obiect, func\u021bionale, compilate, interpretate, tipizate etc. Aceasta adaug\u0103 emo\u021bii, dar nu ajut\u0103 la o mai bun\u0103 descriere a limbajului. <\/p>\n<p>Adev\u0103rul se afl\u0103 la mijloc, \u0219i anume pentru limbajul C \u2014 strict la mijloc \u00eentre percep\u021bia filozofic\u0103 \u0219i cea ma\u0219inal\u0103. <\/p>\n<p>Limbajul C nu este autonom, el se supune vorbirii obi\u0219nuite, \u0219i \u00een acela\u0219i timp \u2014 controleaz\u0103 limbajul asamblor. Aceast\u0103 pozi\u021bie descrie <i>Modelul de vorbire al programului<\/i>, conform c\u0103ruia programul este divizat \u00een trei tipuri subordonate: vorbire, cod, comand\u0103. Limbajul C este responsabil pentru al doilea, tipul cod. <\/p>\n<p>Definind locul limbajului \u00een program, putem ordona informa\u021biile despre acesta, ceea ce face <i>Sistemul stratificat al limbajului programului<\/i>, prezent\u00e2nd limbajul C \u00een spiritul sistemului lui Mendeleev \u2014 pe o singur\u0103 pagin\u0103. <\/p>\n<p>Sistemul este construit av\u00e2nd \u00een vedere <i>comunicarea limbajelor aplicate<\/i>, care deriv\u0103 din subordonarea lor lingvistic\u0103. Un set de unit\u0103\u021bi Matryoshka C permite descrierea \u0219i compararea diferitelor limbaje, cre\u00e2nd o serie de Matryoshka: C++, PHP, JavaScript, C#, MySQL, Python etc. Este potrivit \u0219i corect c\u0103 diferitele limbaje sunt descrise prin unit\u0103\u021bi ale limbajului fundamental. <\/p>\n<h2>2. CAPITOLUL 1. Modelul de vorbire al programului. C-ul clar<\/h2>\n<p>\n\u00cen primul capitol este prezentat <i>modelul de vorbire al programului<\/i>, care reflect\u0103 abordarea aplicat\u0103. Conform acestuia, programul are trei tipuri consecutive evidente: <\/p>\n<ol>\n<li>vorbire \u2014 mesajul direct al programatorului care rezolv\u0103 o problem\u0103, <\/li>\n<li>cod \u2014 codificarea solu\u021biei \u00eentr-o form\u0103 matematic\u0103 \u00een limbajul C (sau \u00een orice altul)<\/li>\n<li>\u0219i comand\u0103 \u2014 comenzile ma\u0219in\u0103 directe. <\/li>\n<\/ol>\n<p>\nModelul de vorbire explic\u0103 de ce C este un limbaj simplu \u0219i accesibil. C este construit dup\u0103 chipul \u0219i asem\u0103narea discursului nostru uman obi\u0219nuit. <\/p>\n<p>Primul tip de program este vorbirea direct\u0103 a programatorului. Vorbirea corespunde g\u00e2ndirii umane. Cu ajutorul limbajului sunt scrise programe de c\u0103tre programatori \u00eencep\u0103tori \u2014 ini\u021bial \u00een rom\u00e2n\u0103, apoi traduc\u00e2nd pas cu pas ac\u021biunile \u00een limbajul codului. \u0218i anume dup\u0103 acest model a fost creat limbajul C. <\/p>\n<p>Concluziile programatorului, exprimate prin vorbire, se transform\u0103 \u00een form\u0103 numeric\u0103 de cod. Aceast\u0103 transformare merit\u0103 s\u0103 fie numit\u0103 <i>reflec\u021bie<\/i>, deoarece vorbirea \u0219i codul au aceea\u0219i natur\u0103 (reflec\u021bie \u2014 na\u0219tere \u2014 r\u0103d\u0103cin\u0103). Acest lucru este destul de evident, dac\u0103 compar\u0103m tipul verbal (st\u00e2nga) cu tipul de cod (dreapta) al programului. <\/p>\n<p><img decoding=\"async\" alt=\"Matrio\u0219ka C. Sistem stratificat de limbaj de programare\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste interesant c\u0103 reflexia se realizeaz\u0103 foarte simplu \u2014 doar cu dou\u0103 tipuri de expresii. <\/p>\n<p>Cu toate acestea, descrierea modern\u0103 a limbajului C (din 1978) nu con\u021bine o list\u0103 suficient\u0103 de denumiri nici pentru descrierea limbajului \u00een general, nici pentru sarcina de reflexie \u00een particular. De aceea, suntem nevoi\u021bi s\u0103 ne ocup\u0103m de creativitate \u0219i s\u0103 introducem aceste denumiri.<\/p>\n<p>Alegerea cuvintelor trebuie s\u0103 fie precis\u0103 \u0219i clar\u0103. Pentru aceasta a fost necesar un abordare special\u0103, exprimat\u0103 pe scurt astfel \u2014 utilizarea strict\u0103 a limbii materne. Pentru englezi, aceasta ar fi fost engleza, dar noi nu suntem englezi. A\u0219a c\u0103 folosim ceea ce avem \u0219i ne str\u0103duim s\u0103 vorbim rom\u00e2ne\u0219te. <\/p>\n<p>Reflec\u021bia este realizat\u0103 prin dou\u0103 tipuri de expresii: <\/p>\n<ol>\n<li><i>calcul <\/i>((C) \u2014 reflect\u0103 schimbarea propriet\u0103\u021bilor unui obiect. Proprietatea obiectului este exprimat\u0103 printr-un num\u0103r, atunci ac\u021biunea asupra propriet\u0103\u021bii \u2014 aceasta este o ac\u021biune asupra num\u0103rului \u2014 opera\u021bie. <\/li>\n<li><i>subordonare <\/i>((S) \u2014 reflect\u0103 schimbarea ordinii ac\u021biunilor. Proto-tipul S este propozi\u021bia complex\u0103 subordonat\u0103, de aceea majoritatea tipurilor de S \u00eencep cu conectori subordona\u021bi \u201edac\u0103\u201d, \u201ealtfel\u201d, \u201ep\u00e2n\u0103 c\u00e2nd\u201d, \u201epentru\u201d. Alte tipuri de S le completeaz\u0103. <\/li>\n<\/ol>\n<p>\nApropo, po\u021bi crede c\u0103 \u00een descrierea C nu exist\u0103 un nume pentru expresiile de calcul \u2014 ele sunt numite pur \u0219i simplu \u201eexpresii\u201d? Dup\u0103 asta nu va mai mira absen\u021ba unui nume \u0219i a unei unit\u0103\u021bi pentru tipul subordonare, \u0219i \u00een general, s\u0103r\u0103cia \u00een ceea ce prive\u0219te numele, defini\u021biile \u0219i generaliz\u0103rile. Totul pentru c\u0103 renumitul K\/R (\"Limba C\", Kernighan\/Ritchie, 1978) este o v\u0103dire, nu o descriere a utiliz\u0103rii limbajului. <\/p>\n<p>Totu\u0219i, ar fi dorit s\u0103 existe o descriere a limbajului. Prin urmare, aceasta este propus\u0103 de <i>Sistemul stratificat al limbajului programului<\/i>. <\/p>\n<h2>3. CAPITOLUL 2. Sistemul stratificat. C Scurt.<\/h2>\n<p>\nOrice descriere trebuie s\u0103 fie precis\u0103 \u0219i c\u00e2t mai concis\u0103. \u00cen cazul limbajului programului, o descriere frontal\u0103 este dificil\u0103. <\/p>\n<p>Iat\u0103 programul nostru. Acesta este format din module. Modulele sunt compuse din subprograme \u0219i colec\u021bii (structure). Subprogramele constau din expresii individuale: declara\u021bii, calcule, subordon\u0103ri. Exist\u0103 zece tipuri de subordon\u0103ri. Subordon\u0103rile conecteaz\u0103 subniveluri \u0219i subprograme. De asemenea, sunt mai multe tipuri de declara\u021bii. Totu\u0219i, declara\u021biile sunt incluse nu doar \u00een subprograme \u0219i subniveluri, ci \u0219i \u00een module \u0219i colec\u021bii. Majoritatea expresiilor constau din cuvinte, care sunt at\u00e2t de complexe \u00eenc\u00e2t de obicei sunt prezentate pur \u0219i simplu \u00een dou\u0103 liste - cuvinte de baz\u0103 \u0219i cuvinte derivate, cu care va trebui s\u0103 ne familiariz\u0103m de-a lungul \u00eentregii \u00eenv\u0103\u021b\u0103ri \u0219i aplic\u0103ri a limbajului. S\u0103 ad\u0103ug\u0103m la asta semnele de punctua\u021bie \u0219i \u00eenc\u0103 o serie de expresii. <\/p>\n<p>\u00cen aceast\u0103 prezentare, este dificil de \u00een\u021beles cine pe cine a \u00eentrecut. <\/p>\n<p>Abordarea direct\u0103 \u0219i ierarhic\u0103 a descrierii limbajului ar fi excesiv de complex\u0103. C\u0103utarea unor c\u0103i indirecte duce la descrierea limbajului pe baza naturii sale vorbite \u0219i a p\u0103r\u021bii sale de comand\u0103. Astfel a ap\u0103rut Sistemul Stratificat, care coincide par\u021bial cu Sistemul Perioadelor al lui Mendeleev, care este de asemenea <i>stratificat<\/i>. A\u0219a cum s-a descoperit dup\u0103 42 de ani de la publicarea sa (1869), periodicitatea sistemului este legat\u0103 de straturile electronice <i>(1911, modelul atomului Bohr-Rutherford). De asemenea, Sistemul Stratificat \u0219i Sistemul Perioadelor au \u00een comun aranjarea tabelar\u0103 a tuturor unit\u0103\u021bilor pe o singur\u0103 pagin\u0103. <\/i>Descrierea unit\u0103\u021bilor limbajului este concis\u0103 - doar 10 tipuri de expresii \u0219i 8 tipuri de alte unit\u0103\u021bi, dar \u0219i con\u021binut \u0219i claritate. De\u0219i este neobi\u0219nuit\u0103 pentru prima \u00eent\u00e2lnire. <\/p>\n<p>Unit\u0103\u021bile limbajului sunt \u00eemp\u0103r\u021bite \u00een 6 niveluri: <\/p>\n<p>ordine - r\u00e2nduri ale tabelului<\/p>\n<ol>\n<li>sectoare - grupuri speciale de tipuri (p\u0103r\u021bi din prima linie)<\/li>\n<li>tipuri - celule (nivelul principal de divizare)<\/li>\n<li>subtipuri - separatori de tipuri (nivel rar)<\/li>\n<li>tipuri - formule ale unit\u0103\u021bilor \u00een partea de jos a celulei sau separat\u0103<\/li>\n<li>exemple - unit\u0103\u021bile \u00een sine (doar pentru cuvinte)<\/li>\n<li>Exemplele de cuvinte sunt descrise de<\/li>\n<\/ol>\n<p>\ndic\u021bionar <i>\u2014 un subsystem separat, format din cele \u0219ase niveluri.<\/i> Componenta de limbaj a C este destul de evident\u0103, de\u0219i merit\u0103 descris\u0103. Pe de alt\u0103 parte, partea de comand\u0103 a limbajului este legat\u0103 de gestionarea compil\u0103rii, \u00een cadrul c\u0103reia se creeaz\u0103 un al treilea tip de program - programul de comand\u0103. Aici ne apropiem de cea mai captivant\u0103 parte a limbajului C - frumuse\u021bea. <\/p>\n<p>4. CAPITOLURILE URM\u0102TOARE. Frumos C <\/p>\n<h2>4. CAPITOLELE URM\u0102TOARE. Frumosul Si<\/h2>\n<p>\nLimbajul C se afl\u0103 la baza program\u0103rii moderne. De ce? \u00cen primul r\u00e2nd, pentru c\u0103 corespunde cel mai fidel limbajului uman. \u00cen al doilea r\u00e2nd, pentru c\u0103 a ocolit frumos limit\u0103rile prelucr\u0103rii numerice de c\u0103tre ma\u0219in\u0103.<\/p>\n<p>Ce anume a propus C? Un tip \u0219i un strat. <\/p>\n<p>Cuv\u00e2ntul \u201etip\u201d este o traducere a cuv\u00e2ntului englezesc \u201etype\u201d, care provine din grecescul \u201eprototypus\u201d \u2014 \u201eun model\u201d. \u00cen limba rus\u0103, cuv\u00e2ntul \u201etip\u201d nu transmite esen\u021ba conceptului exprimat, de asemenea se amestec\u0103 cu sensul s\u0103u func\u021bional de \u201etip\u201d. <\/p>\n<p>Ini\u021bial, tipul rezolva o problem\u0103 pur ma\u0219inal\u0103 de calcul, apoi a devenit pista de decolare pentru apari\u021bia limbajelor orientate pe obiect. <\/p>\n<p>Stratul a abordat imediat mai multe probleme \u2014 at\u00e2t ma\u0219inale, c\u00e2t \u0219i aplicative. De aceea, analiza va \u00eencepe cu tipul unitar \u0219i va trece la stratul multithread. <\/p>\n<p>Una dintre tr\u0103s\u0103turile nepl\u0103cute ale program\u0103rii istorice este c\u0103 majoritatea conceptelor, inclusiv cele de baz\u0103, sunt date f\u0103r\u0103 defini\u021bii. \u201eLimbajul de programare (numele r\u00eeurilor) are un tip \u00eentreg \u0219i un tip flotant de numere...\u201d \u2014 \u0219i au trecut mai departe. Ce este \u201etipul\u201d (model) \u2014 nu trebuie definit, pentru c\u0103 autorii \u00een\u0219i\u0219i nu \u00een\u021beleg acest lucru pe deplin \u0219i \u00eel am\u00e2n\u0103 \u201epentru claritate\u201d. Dac\u0103 sunt presa\u021bi la perete, vor oferi o defini\u021bie vague \u0219i inutil\u0103. Este foarte convenabil s\u0103 se ascund\u0103 \u00een spatele cuvintelor str\u0103ine: pentru autorii ru\u0219i \u2014 \u00een spatele celor engleze\u0219ti (tip), pentru englezi \u2014 \u00een spatele celor franceze (subrutin\u0103), grece\u0219ti (polimorfism), latine (\u00eencapsulare) sau combina\u021biei lor (polimorfism ad-hoc). <\/p>\n<p>Dar acesta nu este destinul nostru. Alegerea noastr\u0103 este defini\u021bii clare \u00een limba rus\u0103 pur\u0103. <\/p>\n<h3>Tip<\/h3>\n<p>\n<i>Tip<\/i> \u2014 este un nume predecedent al unui cuantum, definind 1) propriet\u0103\u021bile proprii ale cuantumului \u0219i 2) alegerea opera\u021biunilor corespunz\u0103toare acestuia. <\/p>\n<p>Cuv\u00e2ntului \u201etip\u201d (tip) \u00eei corespunde prima parte a defini\u021biei: \u201epropriet\u0103\u021bile proprii ale cuantumului\u201d. Dar sensul principal al tipului este \u00een a doua parte: \u201ealegerea opera\u021biunilor pentru cuantumuri\u201d.<\/p>\n<p>Punctul de plecare pentru introducerea tipului \u00een limbajul C este calculul obi\u0219nuit, de exemplu, opera\u021bia de adunare. <\/p>\n<p><i>Matematica<\/i> \u00een format pe h\u00e2rtie, scris\u0103 de m\u00e2n\u0103 sau tip\u0103rit\u0103, nu face distinc\u021bii semnificative \u00eentre tipurile de numere, consider\u00e2ndu-le de obicei ca fiind reale. Prin urmare, opera\u021biile de prelucrare a acestora sunt precise.<\/p>\n<p><i>Ma\u0219inal\u0103<\/i> Matematica separ\u0103 strict numerele \u00een \u00eentregi \u0219i frac\u021bionare. Diferitele tipuri de numere sunt stocate diferit \u00een memorie \u0219i sunt procesate de diferite instruc\u021biuni ale procesorului. De exemplu, instruc\u021biunile de adunare pentru numere \u00eentregi \u0219i frac\u021bionare sunt dou\u0103 instruc\u021biuni distincte, corespunz\u00e2nd unor noduri diferite ale procesorului. Cu toate acestea, instruc\u021biunea de adunare pentru argumente \u00eentregi \u0219i frac\u021bionari nu exist\u0103. <\/p>\n<p><i>Aplicat\u0103<\/i> matematica, adic\u0103 limbajul C, separ\u0103 tipurile de numere, dar une\u0219te opera\u021biile: adunarea pentru numere \u00eentregi \u0219i\/sau frac\u021bionare este notat\u0103 cu acela\u0219i semn de ac\u021biune.<\/p>\n<p>O defini\u021bie clar\u0103 a conceptului de model permite s\u0103 vorbim cu certitudine despre dou\u0103 alte concepte: <i>m\u0103rimea <\/i>\u0219i <i>opera\u021bia<\/i>. <\/p>\n<h3>M\u0103rimea \u0219i opera\u021bia<\/h3>\n<p>\n<i>M\u0103rimea <\/i> \u2014 num\u0103rul procesat.<\/p>\n<p><i>Opera\u021bia<\/i> \u2014 procesarea valorilor m\u0103rimilor ini\u021biale (argumentelor) pentru a ob\u021bine num\u0103rul final (rezultatul). <\/p>\n<p>M\u0103rimea \u0219i opera\u021bia sunt interconectate. Fiecare opera\u021bie este o m\u0103rime, deoarece are un rezultat numeric. Iar fiecare m\u0103rime este rezultatul transferului valorii \u00een registrul procesorului\/din procesor, adic\u0103 \u2014 rezultatul unei opera\u021bii. \u00cen ciuda acestei interconexiuni, principalul r\u0103m\u00e2ne posibilitatea de a le descrie separat, chiar dac\u0103 acest lucru implic\u0103 repetarea aceluia\u0219i cuv\u00e2nt \u00een diferite sec\u021biuni ale dic\u021bionarului, ceea ce se \u00eent\u00e2mpl\u0103 \u00een ma3. <\/p>\n<p>Abordarea ma\u0219inal\u0103 a \u00eemp\u0103r\u021bit toate numerele folosite de programator \u00een <i>instruc\u021biuni <\/i>\u0219i <i>date<\/i>. \u00cen trecut, at\u00e2t acestea, c\u00e2t \u0219i celelalte erau numere, de exemplu, instruc\u021biunile erau scrise \u00een coduri numerice. Totu\u0219i, \u00een limbajele aplicate, instruc\u021biunile au \u00eencetat s\u0103 mai fie numere \u0219i au devenit <i>cuvinte <\/i>\u0219i <i>semne de ac\u021biune<\/i>. Numerele au r\u0103mas doar \u201edate\u201d, dar continuarea de a le numi astfel este ridicol\u0103, deoarece, trec\u00e2nd de la perspectiva ma\u0219inal\u0103 la cea matematic\u0103, numerele sunt m\u0103rimi care se \u00eempart \u00een initiale (<i>date<\/i>) \u0219i finale (<i>cercetate<\/i>). \u201eDate necunoscute\u201d ar suna prost. <\/p>\n<p>Instruc\u021biunile s-au \u00eemp\u0103r\u021bit \u0219i ele \u00een dou\u0103 tipuri de ac\u021biuni: matematice \u0219i func\u021bionale. Ac\u021biunile matematice sunt opera\u021bii. Ne vom \u00eentoarce la cele func\u021bionale mai t\u00e2rziu. <\/p>\n<p>\u00cen limbajele C, opera\u021biile matematice uzuale, at\u00e2t pe h\u00e2rtie c\u00e2t \u0219i \u00een ma\u0219in\u0103, aproape c\u0103 devin \u00een majoritate multiple. <\/p>\n<p>Opera\u021biile multiple sunt c\u00e2teva opera\u021bii cu acela\u0219i nume dar cu aspecte diferite ale argumentelor \u0219i ac\u021biuni diferite, dar apropiate ca sens. <\/p>\n<p>Pentru argumentele \u00eentregi este o opera\u021bie \u00eentreag\u0103, pentru cele frac\u021bionare - una frac\u021bionar\u0103. Aceast\u0103 diferen\u021b\u0103 devine evident\u0103 \u00een cazul opera\u021biei de \u00eemp\u0103r\u021bire, c\u00e2nd expresia 1\/2 d\u0103 ca rezultat 0, nu 0,5. Aceast\u0103 notare nu respect\u0103 regulile matematicii pe h\u00e2rtie, dar limbajul C nu \u00ee\u0219i propune s\u0103 le respecte (spre deosebire de Fortran) - acesta joac\u0103 dup\u0103 propriile. <i>aplicative<\/i> reguli.<\/p>\n<p>\u00cen cazul amestec\u0103rii numerelor \u00eentregi cu cele frac\u021bionare se activeaz\u0103 unica corect\u0103 <i>conversie a valorilor argumentelor<\/i> \u2014 o transformare selectiv\u0103 a valorii dintr-o form\u0103 \u00een alta. De fapt, atunci c\u00e2nd se adun\u0103 un num\u0103r \u00eentreg cu unul frac\u021bionar, rezultatul - este frac\u021bionar, astfel \u00eenc\u00e2t forma opera\u021biei <i>apropie <\/i>opera\u021bia de conversie a argumentului \u00eentreg \u00een valoarea frac\u021bionar\u0103. <\/p>\n<p>O serie de opera\u021bii r\u0103m\u00e2n <i>multiple<\/i>, iar <i>simple<\/i>. Astfel de opera\u021bii sunt definite doar pentru un singur tip de argumente: restul \u00eemp\u0103r\u021birii - argumente \u00eentregi, bitwise (opera\u021bii bit la bit) - numere \u00eentregi naturale. Ma3 indic\u0103 multiplicitatea opera\u021biilor prin semnele (#^) cu indicarea formelor pentru care opera\u021bia este definit\u0103. Aceasta este o proprietate important\u0103, dar anterior neobservat\u0103, a fiec\u0103rei opera\u021bii. <\/p>\n<p>Toate func\u021biile sunt opera\u021biuni unitare arbitrare. Excep\u021bia o constituie operatorii - <i>func\u021biile f\u0103r\u0103 paranteze<\/i>, incorporate \u00een limbaj (opera\u021bii de baz\u0103). <\/p>\n<h3>Asisten\u021ba<\/h3>\n<p>\n<i>Asisten\u021ba <\/i> \u2014 ac\u021biunea care \u00eenso\u021be\u0219te opera\u021bia.<\/p>\n<p>Dac\u0103 privim opera\u021bia ca pe o ac\u021biune principal\u0103, putem distinge dou\u0103 ac\u021biuni \u00eenso\u021bitoare care asigur\u0103 opera\u021bia \u0219i difer\u0103 de aceasta. Acestea sunt 1) controlul variabilelor \u0219i 2) subordonarea. Aceast\u0103 ac\u021biune este numit\u0103 <i>asisten\u021b\u0103.<\/i>.<\/p>\n<p>Aici trebuie s\u0103 ne detas\u0103m \u0219i s\u0103 discut\u0103m separat despre traducerile \u00een limba rus\u0103 a manualelor de programare. \u00cen textul K\/R pentru a scrie ac\u021biuni a fost introdus un nou cuv\u00e2nt <i>statement <\/i>(instruc\u021biune), care a \u00eencercat s\u0103 \u00eempart\u0103 conceptele comenzii ma\u0219in\u0103 \u00een diferite ac\u021biuni: 1) opera\u021bie, 2) declara\u021bie \u0219i 3) subordonare (numit\u0103 \u201estructuri de control\u201d). Aceast\u0103 \u00eencercare a fost distrus\u0103 de traduc\u0103torii ru\u0219i, \u00eenlocuind \u201einstruc\u021biune\u201d cu cuv\u00e2ntul \u201eoperator\u201d, care:<\/p>\n<ol>\n<li>a devenit sinonim cu cuv\u00e2ntul ma\u0219in\u0103 \u201ecomand\u0103\u201d, <\/li>\n<li>s-a dovedit a fi sinonim cu sintagma \u201esemn de ac\u021biune\u201d,<\/li>\n<li>\u0219i, de asemenea, a primit un num\u0103r nelimitat de semnifica\u021bii suplimentare. Adic\u0103 s-a transformat \u00eentr-o analogie cu articolul englez \u201eumm\u2026\u201d. <\/li>\n<\/ol>\n<p>\nS\u0103 analiz\u0103m ac\u021biunile \u00eenso\u021bitoare sau <i>asisten\u021bele.<\/i>.<\/p>\n<h4><i>Controlul variabilei<\/i> <\/h4>\n<p>\n<i>Controlul variabilei<\/i> (UP) \u2014 crearea\/\u00eenchiderea celulelor variabile. <br \/>\nUP se produce implicit \u00een timpul declara\u021biei variabilei, care oricum este scris\u0103 din alte motive \u2014 pentru a indica modul de valoare. Doar un tip este gestionat explicit. <i>variabile suplimentare<\/i> folosind func\u021biile malloc() \u0219i free(). <\/p>\n<p>Trebuie men\u021bionat c\u0103 ac\u021biunile implicite sunt mai u\u0219or de scris, deoarece nu necesit\u0103 s\u0103 scrii nimic, dar mai greu de \u00een\u021beles \u2014 este mai complicat de luat \u00een considerare \u0219i de interpretat. <\/p>\n<h4><i>Subordonare<\/i><\/h4>\n<p>\n<i>Subordonare <\/i> \u2014 conectarea\/dezicerea sec\u021biunilor stratificate. <\/p>\n<p>Limbajul C a oferit o modalitate diferit\u0103 de gestionare a ordinii ac\u021biunilor \u2014 subordonarea. Aceasta reflect\u0103 \u0219i dezvolt\u0103 o propozi\u021bie complex\u0103 cu o separare clar\u0103 \u00eentre partea principal\u0103 (propozi\u021bia principal\u0103) \u0219i partea subordonat\u0103 (sec\u021biunile subnivel\/subprogram). <\/p>\n<p>At\u00e2t declara\u021bia, c\u00e2t \u0219i subordonarea se bazeaz\u0103 complet pe conceptul de <i>strat<\/i>. <\/p>\n<h3>Stratul<\/h3>\n<p>\n<i>Stratul <\/i> \u2014 este un set selectiv de expresii limitat la un singur nivel. <\/p>\n<p>Stratul a preluat explicit \u0219i implicit \u00eendeplinirea imediat\u0103 a mai multor sarcini: <\/p>\n<ol>\n<li>ordonarea programului,<\/li>\n<li>limitarea vizibilit\u0103\u021bii numelui (implicit),<\/li>\n<li>gestionarea variabilelor (celule de memorie) (implicit),<\/li>\n<li>definirea sec\u021biunilor subordonate pentru subordonare,<\/li>\n<li>definirea func\u021biilor \u0219i selec\u021biilor \u0219i altele. <\/li>\n<\/ol>\n<p>\n\u00cen limbajele de ma\u0219in\u0103 nu exista conceptul de strat, a\u0219a c\u0103 acesta nu a ap\u0103rut nici \u00een C\/K\/R, iar dac\u0103 ceva nu era acolo \u2014 introducerea acestuia \u00een c\u0103r\u021bile ulterioare ar fi fost o heretic\u0103 \u0219i o g\u00e2ndire liber\u0103. De aceea, conceptul de strat nu a ap\u0103rut deloc, de\u0219i este extrem de util \u0219i destul de evident. <\/p>\n<p>F\u0103r\u0103 strat, nu este posibil s\u0103 explici concis \u0219i clar multe ac\u021biuni \u0219i reguli ale programului. De exemplu, de ce simple precum cele trei bani goto sunt proaste, \u00een timp ce cele complicate while sunt bune. Po\u021bi doar s\u0103 blestemi f\u0103r\u0103 putere, a\u0219a cum a f\u0103cut Dijkstra (\u201ecalificarea programatorilor este o func\u021bie invers propor\u021bional\u0103 cu frecven\u021ba apari\u021biei operatorilor goto \u00een programele lor\u201d. Pe scurt, doar oile folosesc goto. Nivelul de justificare \u2014 Dumnezeu.) Adev\u0103rat, nu este at\u00e2t de grav dac\u0103 c\u0103r\u021bile tale nu trebuie s\u0103 explice nimic, dar, a\u0219a cum am spus deja, aceasta nu este soarta noastr\u0103. <\/p>\n<p>De altfel, se poate presupune c\u0103 Den Ritchie a l\u0103sat `goto` ca o cheie pentru a c\u0103uta un anumit concept nenumit, deoarece nu exista nicio necesitate sau frumuse\u021be \u00een expresia `goto`. Totu\u0219i, a existat nevoie de o explica\u021bie simpl\u0103 \u0219i clar\u0103 a noilor principii ale limbajului, pe care Ritchie nu dorea s\u0103 le ofere, \u0219i care se bazeaz\u0103 pe conceptul de <i>strat<\/i>. <\/p>\n<h3>Abatere<\/h3>\n<p>\n<i>Abatere <\/i> \u2014 modificarea propriet\u0103\u021bilor obi\u0219nuite ale noului nume. <\/p>\n<p>Cea mai important\u0103 abatere este legat\u0103 de propriet\u0103\u021bile stratificate ale programului \u0219i este descris\u0103 printr-un cuv\u00e2nt: \u201estatic\u201d, care are diferite semnifica\u021bii \u00een fiecare dintre tipurile de strat. <\/p>\n<h2>5. CEA DIN URM\u0102. Comunitatea limbajelor aplicate<\/h2>\n<p>\nLimbajele aplicate sunt <i>imaginate <\/i>limbaje (care au o imagine, \u201etipizate\u201d). Ele se bazeaz\u0103 pe utilizarea explicit\u0103 sau implicit\u0103 a imaginii. Din nou apare o contradic\u021bie: o imagine explicit\u0103 este mai clar\u0103, dar mai pu\u021bin convenabil\u0103, \u0219i invers. <\/p>\n<p><img decoding=\"async\" alt=\"Matrio\u0219ka C. Sistem stratificat de limbaj de programare\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(Structura tabelului \u00eenc\u0103 nu a fost livrat\u0103, a\u0219a c\u0103 tabelul este dat ca imagine.)<\/i><\/p>\n<p>Dup\u0103 C, dezvoltarea limbajelor aplicate a mers pe calea cre\u0219terii imagina\u021biei lor. Cel mai important pentru \u00een\u021belegerea unei imagini ridicate este descendentul direct al lui C \u2014 limbajul C++. Acesta dezvolt\u0103 ideea alegerii arbitrare a opera\u021biunilor pentru valori \u0219i o \u00eemputernice\u0219te pe baza expresiei C `selec\u021bie`, care a primit un nou nume \u2014 obiect. Totu\u0219i, C++ nu este la fel de concis \u0219i expresiv ca C, din cauza suprasarcinilor de noi tipuri de selec\u021bie \u0219i a regulilor asociate cu acestea. Apropo, s\u0103 discut\u0103m despre \u201esuprasarcin\u0103\u201d. <\/p>\n<h3>Suprasarcin\u0103 \u0219i polimorfism <\/h3>\n<p>\nCuv\u00e2ntul \u201esuprasarcin\u0103\u201d (overload) \u2014 un termen \u00eenvechit al abord\u0103rii mecanice, \u00eenseamn\u0103 crearea <i>opera\u021biunilor multiple<\/i>. <\/p>\n<p>Programatorii de ma\u0219ini (de sistem) <i>multiplicitatea <\/i>opera\u021biunilor ar fi putut irita: \u201eCe \u00eenseamn\u0103 acest semn (+): adunarea numerelor \u00eentregi, adunarea numerelor frac\u021bionate sau, \u00een general, deplasarea?! \u00cen vremea noastr\u0103, nu se scria a\u0219a!\u201d De aici nuan\u021ba negativ\u0103 a cuv\u00e2ntului ales (\u201esuprareac\u021bie\u201d, \u201es-a s\u0103turat\u201d). Pentru programatorul aplicat, opera\u021biile multiple sunt piatra de temelie, realizarea principal\u0103 \u0219i mo\u0219tenirea limbajului C, at\u00e2t de naturale, \u00eenc\u00e2t sunt adesea necon\u0219tientizate. <\/p>\n<p>\u00cen limbajul C++ <i>multiplicitatea<\/i> s-a extins nu doar la opera\u021biunile de baz\u0103, ci \u0219i la func\u021bii \u2013 at\u00e2t separate, c\u00e2t \u0219i grupate \u00een clase \u2013 metode. Odat\u0103 cu multiplele metode, a ap\u0103rut posibilitatea redefinirii acestora \u00een clase extinse, denumit\u0103 vag \u201epolimorfism\u201d. Combinarea polimorfismului cu suprasarcina a dus la o reac\u021bie exploziv\u0103, rezult\u00e2nd dou\u0103 tipuri de polimorfism: \u201eadev\u0103rat\u201d \u0219i \u201ead-hoc\u201d. A lucra cu acestea poate fi realizat doar prin ignorarea denumirilor atribuite. Drumul c\u0103tre ad este pavat cu denumiri str\u0103ine. <\/p>\n<p>Anun\u021bul de tip \u201esuprasarcin\u0103\u201d este mai bine exprimat prin cuv\u00e2ntul <i>redeclara\u021bie <\/i> \u2014 ad\u0103ug\u00e2nd o declara\u021bie a acelea\u0219i func\u021bii cu argumente de alt tip. <\/p>\n<p>Anun\u021bul de tip \u201epolimorfism\u201d ar trebui denumit <i>redefinire<\/i> \u2014 o declara\u021bie de suprascriere \u00een noua stratificare extins\u0103 a acelea\u0219i func\u021bii cu argumente de acela\u0219i tip. <\/p>\n<p>Atunci va fi u\u0219or de \u00een\u021beles c\u0103 metodele cu nume identice din tipuri diferite (argumente) \u2013 <i>sunt redeclarate<\/i>, \u00een timp ce un tip este \u2013 <i>sunt redefinite<\/i>. <\/p>\n<p>Cuvintele rom\u00e2ne\u0219ti rezolv\u0103. <\/p>\n<h3>Pista de decolare<\/h3>\n<p>\nExaminarea conceptelor limbajelor de tip \u00eenalt confirm\u0103 importan\u021ba definirii clare a conceptelor fundamentale. Cu un C corect descris, studiul limbajelor de tip \u00eenalt va fi u\u0219or \u0219i pl\u0103cut. <\/p>\n<p>Acest lucru este deosebit de important pentru <i>limbajele de tip \u00eenalt implicite<\/i> (PHP, JavaScript). Pentru acestea, importan\u021ba obiectelor (tipuri compuse) devine \u0219i mai mare dec\u00e2t \u00een C++, dar no\u021biunea de tip devine implicit\u0103 \u0219i greu de prins. Din perspectiva comodit\u0103\u021bii, acestea au devenit mai simple, dar din perspectiva \u00een\u021belegerii \u2013 mai complicate. <\/p>\n<p>Prin urmare, studiul limbajelor de programare ar trebui s\u0103 \u00eenceap\u0103 cu limbajul C \u0219i s\u0103 progreseze ulterior \u00een ordinea apari\u021biei limbajelor din familia C. <\/p>\n<p>Acela\u0219i lucru se aplic\u0103 descrierii limbajelor. Limbajele diferite au un set de genuri de unit\u0103\u021bi care se suprapun sau sunt mai reduse dec\u00e2t limbajul C. Num\u0103rul de tipuri \u0219i exemple poate varia \u00een ambele sensuri: C++ are mai multe tipuri dec\u00e2t C, iar JavaScript \u2013 mai pu\u021bine. <\/p>\n<p>Limba MySQL merit\u0103 o men\u021biune special\u0103. P\u0103rea c\u0103 nu are nimic \u00een comun, dar este descris\u0103 excelent prin Matryoshka, iar familiarizarea cu aceasta devine mai rapid\u0103 \u0219i mai simpl\u0103. Ce este important, av\u00e2nd \u00een vedere semnifica\u021bia sa pentru web \u2013 \u201edrumul mesei\u201d program\u0103rii moderne. \u0218i unde e MySQL, sunt \u0219i alte SQL-uri. De asemenea, diferitele Fortran-uri, Pascal-uri, Python-uri sunt descrise prin Matryoshka, de \u00eendat\u0103 ce se poate. <\/p>\n<p>A\u0219adar, ne a\u0219teapt\u0103 lucruri m\u0103re\u021be \u2013 o descriere aplicat\u0103 a limbajului C \u0219i o descriere unitar\u0103 a limbajelor ce urmeaz\u0103. \u201eObiectivele noastre sunt clare, sarcinile definite. S\u0103 ne apuc\u0103m de treab\u0103, tovar\u0103\u0219i! (Applauze tumultuoase \u0219i \u00eendelungate, transform\u00e2ndu-se \u00een ova\u021bii. To\u021bi se ridic\u0103.)\u201d <\/p>\n<p>Opiniile dumneavoastr\u0103 vor fi ascultate cu mare aten\u021bie, iar ajutorul dumneavoastr\u0103 \u00een crearea site-ului matryoshka va fi primit cu o imens\u0103 recuno\u0219tin\u021b\u0103. Informa\u021bii mai detaliate despre carte sunt disponibile pe site-ul, ascuns ingenios \u00een Matryoshka C.<br \/>\n<br \/>Sursa: <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.2.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\/ro\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Matryoshka C. Sistem stratificat al limbajului programului | ProHoster","description":"S\u0103 \u00eencerc\u0103m s\u0103 ne imagin\u0103m chimia f\u0103r\u0103 Tabla Periodic\u0103 a lui Mendeleev (1869).","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}