{"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\/cs\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matryoshka C. Vrstevnat\u00fd syst\u00e9m jazyka programu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u0159edstavme si chemii bez Periodick\u00e9 tabulky prvk\u016f Mend\u011blejeva (1869). Kolik prvk\u016f by bylo t\u0159eba m\u00edt na pam\u011bti, nav\u00edc v libovoln\u00e9m po\u0159ad\u00ed... (Tehdy - 60.)<\/p>\n<p>K tomu sta\u010d\u00ed myslet na jeden nebo v\u00edce programovac\u00edch jazyk\u016f najednou. Ty sam\u00e9 pocity, ten sam\u00fd tv\u016fr\u010d\u00ed chaos. <\/p>\n<p>A nyn\u00ed m\u016f\u017eeme pro\u017e\u00edt pocity chemik\u016f 19. stolet\u00ed, kdy\u017e jim byla nab\u00eddnuta ve\u0161ker\u00e1 jejich znalost, ba i n\u011bco nav\u00edc, v jedn\u00e9 Periodick\u00e9 tabulce. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Vrstevnat\u00fd syst\u00e9m jazyka programu\" 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 \/>\nKniha \u201eMatryoshka C. Vrstevnat\u00fd syst\u00e9m programovac\u00edho jazyka\u201c p\u0159edstavuje v\u0161echny jednotky jazyka C jako na dlani. To umo\u017e\u0148uje je uspo\u0159\u00e1dat, opravit zastaral\u00e9 informace a dokonce up\u0159esnit samotn\u00fd pojem programu. <\/p>\n<p>Dnes pot\u0159ebuj\u00ed informace o programov\u00e1n\u00ed systematizaci je\u0161t\u011b v\u00edce ne\u017e chemick\u00e9 prvky p\u0159ed 150 lety. <\/p>\n<p>Prvn\u00ed pot\u0159ebou je v\u00fduka. Mend\u011blejev za\u010dal vytv\u00e1\u0159et sv\u016fj syst\u00e9m, kdy\u017e st\u00e1l p\u0159ed ot\u00e1zkou \u2013 od kter\u00e9ho prvku za\u010d\u00edt p\u0159edn\u00e1\u0161et: O, H, N, He, Au... Bylo to pro n\u011bj jednodu\u0161\u0161\u00ed - u\u010dil chemii nejlep\u0161\u00ed studenty z Petrohradsk\u00e9 univerzity. Programov\u00e1n\u00ed se ji\u017e u\u010d\u00ed ve \u0161kol\u00e1ch a brzy za\u010dne i v mate\u0159sk\u00fdch \u0161kol\u00e1ch. <\/p>\n<p>Druhou pot\u0159ebou je v\u011bdeck\u00fd p\u0159\u00edstup. Pomoc\u00ed Periodick\u00e9 tabulky byly objeveny nov\u00e9 prvky a opraveny informace o star\u00fdch. Pomohla p\u0159i vytv\u00e1\u0159en\u00ed modelu atomu (1911). A tak d\u00e1le. <\/p>\n<p>T\u0159et\u00ed pot\u0159ebou je up\u0159esn\u011bn\u00ed pojmu programu. <\/p>\n<p>Sou\u010dasn\u00e9 programov\u00e1n\u00ed se jednou nohou zaseklo v 50. letech 20. stolet\u00ed. Tehdy byly programy jednoduch\u00e9, zat\u00edmco stroje a strojov\u00e9 jazyky - slo\u017eit\u00e9, tak\u017ee v\u0161e se to\u010dilo kolem stroj\u016f a jazyk\u016f. <\/p>\n<p>Te\u010f je v\u0161e naopak: programy jsou slo\u017eit\u00e9 a prim\u00e1rn\u00ed, jazyky jsou jednoduch\u00e9 a sekund\u00e1rn\u00ed. Tomu se \u0159\u00edk\u00e1 aplikovan\u00fd p\u0159\u00edstup, kter\u00fd je v\u0161em jaksi zn\u00e1m\u00fd. Ale studenty a v\u00fdvoj\u00e1\u0159e st\u00e1le p\u0159esv\u011bd\u010duj\u00ed, \u017ee je v\u0161e stejn\u011b jako d\u0159\u00edve. <\/p>\n<p>Co n\u00e1s vrac\u00ed k prvn\u00ed p\u0159edn\u00e1\u0161ce privat-docenta Mend\u011blejeva. Co \u0159\u00edkat prv\u00e1k\u016fm? Kde je pravda? To je ot\u00e1zka. <\/p>\n<p>Svoje odpov\u011bdi p\u0159in\u00e1\u0161\u00ed kniha \u201eMatryoshka C. Vrstevnat\u00fd syst\u00e9m programovac\u00edho jazyka\u201c. P\u0159i\u010dem\u017e je ur\u010dena nejen student\u016fm, ale i p\u0159ipraven\u00fdm program\u00e1tor\u016fm, proto\u017ee pravdu hledat a p\u0159evracet sv\u011btov\u00e9 n\u00e1zory by pr\u00e1v\u011b m\u011bli oni, tedy my. <\/p>\n<p>N\u00e1sleduje stru\u010dn\u00fd obsah knihy. <\/p>\n<h2>1. \u00davod<\/h2>\n<p>\nV roce 1969 byl vytvo\u0159en jazyk C, kter\u00fd se stal z\u00e1kladn\u00edm programovac\u00edm jazykem a u\u017e 50 let j\u00edm z\u016fst\u00e1v\u00e1. Pro\u010d tomu tak je? V prvn\u00ed \u0159ad\u011b proto, \u017ee C je <i>aplikovan\u00fd<\/i> jazyk, kter\u00fd dod\u00e1v\u00e1 programu <i>lidsk\u00fd<\/i> vzhled nam\u00edsto <i>strojov\u00e9ho<\/i>. Tento \u00fasp\u011bch potvrdily jazyky z rodiny C: C++, JavaScript, PHP, Java, C# a dal\u0161\u00ed. Za druh\u00e9, je to stru\u010dn\u00fd a kr\u00e1sn\u00fd jazyk. <\/p>\n<p>Nicm\u00e9n\u011b, samotn\u00fd jazyk C je obvykle zam\u011b\u0148ov\u00e1n se strojov\u00fdm assemblerem, \u010d\u00edm\u017e se komplikuje a zkresluje jeho vn\u00edm\u00e1n\u00ed. Druh\u00fdm extr\u00e9mem je vnucov\u00e1n\u00ed k jazyku jak\u00e9si 'filozofie': procedur\u00e1ln\u00ed, objektov\u00e9, funk\u010dn\u00ed, kompilovan\u00e9, interpretovan\u00e9, typovan\u00e9 a tak d\u00e1le. To p\u0159id\u00e1v\u00e1 emoce, ale nepom\u00e1h\u00e1 l\u00e9pe popsat jazyk. <\/p>\n<p>Pravda le\u017e\u00ed uprost\u0159ed, a to pro jazyk C - p\u0159esn\u011b uprost\u0159ed mezi filosofick\u00fdm a strojov\u00fdm vn\u00edm\u00e1n\u00edm. <\/p>\n<p>Jazyk C nen\u00ed autonomn\u00ed, pod\u0159izuje se b\u011b\u017en\u00e9mu p\u00edsemn\u00e9mu projevu, a z\u00e1rove\u0148 \u2013 s\u00e1m \u0159\u00edd\u00ed jazyk assembleru. Tento stav popisuje <i>Modell programov\u00e9 \u0159e\u010di<\/i>, podle kter\u00e9 je program rozd\u011blen do t\u0159\u00ed pod\u0159\u00edzen\u00fdch typ\u016f: \u0159e\u010dov\u00fd, k\u00f3dov\u00fd, p\u0159\u00edkazov\u00fd. Jazyk C odpov\u00edd\u00e1 za druh\u00fd, k\u00f3dov\u00fd typ. <\/p>\n<p>Definov\u00e1n\u00edm m\u00edsta jazyka v programu je mo\u017en\u00e9 uspo\u0159\u00e1dat informace o n\u011bm, co\u017e tvo\u0159\u00ed <i>Syst\u00e9m vrstevn\u00e9ho jazyka programu<\/i>, kter\u00fd p\u0159edstavuje jazyk C ve stylu Mend\u011blejevovy soustavy - na jedn\u00e9 str\u00e1nce. <\/p>\n<p>Syst\u00e9m je postaven s ohledem na <i>spole\u010dnost aplikovan\u00fdch jazyk\u016f<\/i>, vypl\u00fdvaj\u00edc\u00ed z jejich jazykov\u00e9 pod\u0159\u00edzenosti. Jedna sada jednotek Matryoshky C umo\u017e\u0148uje popisovat a porovn\u00e1vat r\u016fzn\u00e9 jazyky, vytv\u00e1\u0159ej\u00edc\u00ed \u0159adu Matryoshk: C++, PHP, JavaScript, C#, MySQL, Python a tak d\u00e1le. Je spr\u00e1vn\u00e9 a vhodn\u00e9, \u017ee r\u016fzn\u00e9 jazyky jsou popisov\u00e1ny jednotkami z\u00e1kladn\u00edho jazyka. <\/p>\n<h2>2. KAPITOLA 1. Modello programov\u00e9 \u0159e\u010di. Srozumiteln\u00e9 C<\/h2>\n<p>\nV prvn\u00ed kapitole je p\u0159edstavena <i>model programov\u00e9 \u0159e\u010di<\/i>, kter\u00fd odr\u00e1\u017e\u00ed aplika\u010dn\u00ed p\u0159\u00edstup. Podle n\u011bj m\u00e1 program t\u0159i o\u010dividn\u00e9 sekven\u010dn\u00ed typy: <\/p>\n<ol>\n<li>\u0159e\u010dov\u00fd \u2013 p\u0159\u00edm\u00e1 \u0159e\u010d program\u00e1tora, kter\u00fd \u0159e\u0161\u00ed \u00falohu, <\/li>\n<li>k\u00f3dov\u00fd \u2013 k\u00f3dov\u00e1n\u00ed \u0159e\u0161en\u00ed do matematick\u00e9 podoby v jazyce C (nebo v jak\u00e9mkoli jin\u00e9m)<\/li>\n<li>a p\u0159\u00edkazov\u00fd \u2013 bezprost\u0159edn\u00ed strojov\u00e9 p\u0159\u00edkazy. <\/li>\n<\/ol>\n<p>\nModel programov\u00e9 \u0159e\u010di vysv\u011btluje, pro\u010d je C jednoduch\u00fd a srozumiteln\u00fd jazyk. C je postaven na obraz a podobu b\u011b\u017en\u00e9 lidsk\u00e9 \u0159e\u010di. <\/p>\n<p>Prvn\u00ed typ programu \u2014 p\u0159\u00edm\u00e1 \u0159e\u010d program\u00e1tora. \u0158e\u010d odpov\u00edd\u00e1 lidsk\u00e9mu my\u0161len\u00ed. Za\u010d\u00ednaj\u00edc\u00ed program\u00e1to\u0159i p\u00ed\u0161\u00ed programy pomoc\u00ed \u0159e\u010di \u2014 nejprve v ru\u0161tin\u011b, pot\u00e9 postupn\u011b p\u0159ev\u00e1d\u011bj\u00ed \u010dinnosti do k\u00f3dov\u00e9ho jazyka. A podle tohoto vzoru byl vytvo\u0159en jazyk C. <\/p>\n<p>\u00davahy program\u00e1tora, vyj\u00e1d\u0159en\u00e9 \u0159e\u010d\u00ed, se transformuj\u00ed do k\u00f3dov\u00e9ho \u010d\u00edseln\u00e9ho vyj\u00e1d\u0159en\u00ed. Tuto transformaci bychom m\u011bli nazvat <i>odrazem<\/i>, proto\u017ee \u0159e\u010d a k\u00f3d maj\u00ed jednu podstatu (odraz \u2014 zrozen\u00ed \u2014 druh). To je zcela z\u0159ejm\u00e9, pokud porovn\u00e1me \u0159e\u010dov\u00fd (vlevo) a k\u00f3dov\u00fd (vpravo) typ programu. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Vrstevnat\u00fd syst\u00e9m jazyka programu\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe zaj\u00edmav\u00e9, \u017ee odraz prob\u00edh\u00e1 velmi jednodu\u0161e \u2014 pouh\u00fdmi dv\u011bma typy v\u00fdraz\u016f. <\/p>\n<p>Modern\u00ed popis jazyka C (z roku 1978) v\u0161ak neobsahuje dostate\u010dn\u00fd seznam n\u00e1zv\u016f ani pro popis jazyka obecn\u011b, ani pro \u00fakol odrazu konkr\u00e9tn\u011b. Proto se mus\u00edme pustit do tvo\u0159en\u00ed a zav\u00e9st tyto n\u00e1zvy.<\/p>\n<p>V\u00fdb\u011br slov mus\u00ed b\u00fdt p\u0159esn\u00fd a jasn\u00fd. K tomu byl zapot\u0159eb\u00ed zvl\u00e1\u0161tn\u00ed p\u0159\u00edstup, stru\u010dn\u011b vyj\u00e1d\u0159en\u00fd takto \u2014 p\u0159\u00edsn\u00e9 pou\u017e\u00edv\u00e1n\u00ed rodn\u00e9ho jazyka. Pro Angli\u010dany by to byla angli\u010dtina, ale my nejsme Angli\u010dan\u00e9. Tak\u017ee pou\u017eijme to, co m\u00e1me, a budeme se sna\u017eit mluvit rusky. <\/p>\n<p>Odraz prov\u00e1d\u011bj\u00ed dva typy v\u00fdraz\u016f: <\/p>\n<ol>\n<li><i>v\u00fdpo\u010det <\/i>(V\u010d) \u2014 odr\u00e1\u017e\u00ed zm\u011bnu vlastnost\u00ed p\u0159edm\u011btu. Vlastnost p\u0159edm\u011btu je vyj\u00e1d\u0159ena \u010d\u00edslem, pak akce nad vlastnost\u00ed \u2014 to je akce nad \u010d\u00edslem \u2014 operace. <\/li>\n<li><i>pod\u0159\u00edzen\u00ed <\/i>(P\u010d) \u2014 odr\u00e1\u017e\u00ed zm\u011bnu po\u0159ad\u00ed akc\u00ed. Prototypem P\u010d je v\u011bta slo\u017een\u00e1 uveden\u00e1 pomoc\u00ed pod\u0159ad\u00edc\u00edch spojek \"pokud\", \"jinak\", \"zat\u00edmco\", \"pro\". Ostatn\u00ed typy P\u010d je dopl\u0148uj\u00ed. <\/li>\n<\/ol>\n<p>\nMimochodem, m\u016f\u017eete uv\u011b\u0159it, \u017ee v popisu jazyka C nen\u00ed n\u00e1zev pro v\u00fdrazy v\u00fdpo\u010det \u2014 naz\u00fdvaj\u00ed se prost\u011b \"v\u00fdrazy\"? Po tom u\u017e nep\u0159ekvap\u00ed absence n\u00e1zvu a sjednocen\u00ed pro typ pod\u0159\u00edzen\u00ed, a v\u016fbec chudost, co se n\u00e1zv\u016f, definic a generalizac\u00ed t\u00fd\u010de. Je to proto, \u017ee slavn\u00fd K\/R (\"Jazyk C\", Kernighan\/Ritchie, 1978) nen\u00ed popisem, ale p\u0159\u00edru\u010dkou pro pou\u017eit\u00ed jazyka. <\/p>\n<p>Nicm\u00e9n\u011b m\u00edt popis jazyka by bylo p\u0159ece jen \u017e\u00e1douc\u00ed. Proto ho nab\u00edz\u00ed <i>Syst\u00e9m vrstevn\u00e9ho jazyka programu<\/i>. <\/p>\n<h2>3. KAPITOLA 2. Slo\u017een\u00fd syst\u00e9m. Stru\u010dn\u00fd C<\/h2>\n<p>\nJak\u00fdkoli popis by m\u011bl b\u00fdt p\u0159esn\u00fd a maxim\u00e1ln\u011b stru\u010dn\u00fd. V p\u0159\u00edpad\u011b programov\u00e9ho jazyka je p\u0159\u00edm\u00fd popis obt\u00ed\u017en\u00fd. <\/p>\n<p>M\u00e1me program. Skl\u00e1d\u00e1 se z modul\u016f. Moduly se skl\u00e1daj\u00ed z podprogram\u016f a v\u00fdb\u011br\u016f (structure). Podprogramy se skl\u00e1daj\u00ed z jednotliv\u00fdch v\u00fdraz\u016f: deklarac\u00ed, v\u00fdpo\u010dt\u016f, pod\u0159\u00edzen\u00fdch fr\u00e1z\u00ed. Pod\u0159\u00edzen\u00fdch fr\u00e1z\u00ed je celkem deset typ\u016f. Pod\u0159\u00edzen\u00ed p\u0159ipojuj\u00ed pod\u00farovn\u011b a podprogramy. Deklarac\u00ed je tak\u00e9 n\u011bkolik. Nav\u00edc, deklarace jsou zahrnuty nejen do podprogram\u016f a pod\u00farovn\u00ed, ale i do modul\u016f a v\u00fdb\u011br\u016f. V\u011bt\u0161ina v\u00fdraz\u016f se skl\u00e1d\u00e1 ze slov, kter\u00e1 je tak slo\u017eit\u00e9 popsat, \u017ee se obvykle poskytuj\u00ed ve dvou seznamech \u2013 z\u00e1kladn\u00ed a odvozen\u00e1 slova, se kter\u00fdmi se bude seznamovat b\u011bhem cel\u00e9ho studia a pou\u017e\u00edv\u00e1n\u00ed jazyka. P\u0159id\u00e1me k tomu interpunk\u010dn\u00ed znam\u00e9nka a dal\u0161\u00ed \u0159adu v\u00fdraz\u016f. <\/p>\n<p>V takov\u00e9m vyj\u00e1d\u0159en\u00ed je t\u011b\u017ek\u00e9 pochopit, kdo na kom st\u00e1l. <\/p>\n<p>P\u0159\u00edm\u00fd hierarchick\u00fd p\u0159\u00edstup k popisu jazyka by byl nadm\u011brn\u011b slo\u017eit\u00fd. Hled\u00e1n\u00ed obchvatn\u00fdch cest vede k popisu jazyka na z\u00e1klad\u011b jeho \u0159e\u010dov\u00e9 povahy a p\u0159\u00edkazov\u00e9 str\u00e1nky. Tak se zrodil Svrstven\u00fd syst\u00e9m, kter\u00fd \u010d\u00e1ste\u010dn\u011b koresponduje s Periodickou soustavou prvk\u016f, je\u017e tak\u00e9 je <i>vrstven\u00fd<\/i>. Jak se uk\u00e1zalo 42 let po sv\u00e9m vyd\u00e1n\u00ed (1869), periodi\u010dnost soustavy souvis\u00ed s elektronick\u00fdmi <i>vrstvami <\/i>(1911, model Bohr-Rutherfordova atomu). Tak\u00e9 Svrstven\u00fd a Periodick\u00fd syst\u00e9m spojuje tabulkov\u00e9 uspo\u0159\u00e1d\u00e1n\u00ed v\u0161ech jednotek na jedn\u00e9 str\u00e1nce. <\/p>\n<p>Popis jazykov\u00fdch jednotek je stru\u010dn\u00fd - pouze 10 rod\u016f v\u00fdraz\u016f a 8 rod\u016f dal\u0161\u00edch jednotek, a p\u0159itom obsahov\u00fd a n\u00e1zorn\u00fd. I kdy\u017e pon\u011bkud nezvykl\u00fd pro prvn\u00ed sezn\u00e1men\u00ed. <\/p>\n<p>Jazykov\u00e9 jednotky jsou rozd\u011bleny do 6 \u00farovn\u00ed:<\/p>\n<ol>\n<li>t\u0159\u00eddy \u2013 \u0159\u00e1dky tabulky<\/li>\n<li>odd\u011blen\u00ed \u2013 zvl\u00e1\u0161tn\u00ed skupiny rod\u016f (\u010d\u00e1sti prvn\u00ed \u0159ady)<\/li>\n<li>rody \u2013 bu\u0148ky (hlavn\u00ed \u00farove\u0148 d\u011blen\u00ed)<\/li>\n<li>nadzdroje \u2013 odd\u011blova\u010de typ\u016f (vz\u00e1cn\u00e1 \u00farove\u0148)<\/li>\n<li>typy \u2013 vzorce jednotek ve spodn\u00ed \u010d\u00e1sti bu\u0148ky nebo samostatn\u011b<\/li>\n<li>vzory \u2013 samotn\u00e9 jednotky (pouze pro slova)<\/li>\n<\/ol>\n<p>\nVzory slov popisuje <i>slovn\u00edk<\/i> \u2013 samostatn\u00e1 podp\u016frn\u00e1 soustava slo\u017een\u00e1 ze stejn\u00fdch \u0161esti \u00farovn\u00ed. <\/p>\n<p>R\u00e9torick\u00e1 slo\u017eka jazyka C je zcela z\u0159ejm\u00e1, i kdy\u017e st\u00e1le zasluhuje popis. P\u0159\u00edkazov\u00e1 \u010d\u00e1st jazyka je ale spojena s \u0159\u00edzen\u00edm kompilace, b\u011bhem n\u00ed\u017e vznik\u00e1 t\u0159et\u00ed typ programu \u2013 p\u0159\u00edkazov\u00fd. T\u00edm se dost\u00e1v\u00e1me k t\u00e9 nejzaj\u00edmav\u011bj\u0161\u00ed str\u00e1nce jazyka C \u2013 kr\u00e1se. <\/p>\n<h2>4. N\u00c1SLEDN\u00cd KAPITOLY. Kr\u00e1sn\u00fd C<\/h2>\n<p>\nJazyk C le\u017e\u00ed v z\u00e1kladech modern\u00edho programov\u00e1n\u00ed. Pro\u010d? Za prv\u00e9 kv\u016fli nejv\u011bt\u0161\u00ed shod\u011b s mluven\u00fdm jazykem. Za druh\u00e9, proto\u017ee elegantn\u011b obch\u00e1z\u00ed omezen\u00ed strojov\u00e9ho zpracov\u00e1n\u00ed \u010d\u00edsel.<\/p>\n<p>Co konkr\u00e9tn\u011b C nab\u00eddlo? Typ a vrstvu. <\/p>\n<p>Slovo \u201etyp\u201c je p\u0159eklad anglick\u00e9ho slova \u201etype\u201c, kter\u00e9 poch\u00e1z\u00ed z \u0159eck\u00e9ho \u201eprot\u00f3tipos\u201c \u2014 \u201ep\u0159edobraz\u201c. V \u010de\u0161tin\u011b slovo \u201etyp\u201c nevyjad\u0159uje kl\u00ed\u010dovost pojmu a nav\u00edc se m\u00edch\u00e1 se slu\u017eebn\u00edm v\u00fdznamem \u201edruh\u201c. <\/p>\n<p>P\u016fvodn\u011b typ \u0159e\u0161il \u010dist\u011b strojovou \u00falohu v\u00fdpo\u010dtu, a pak se stal odrazov\u00fdm m\u016fstkem pro vznik objektov\u00fdch jazyk\u016f. <\/p>\n<p>Vrstva okam\u017eit\u011b \u0159e\u0161ila n\u011bkolik \u00faloh \u2014 jak strojov\u00fdch, tak aplikovan\u00fdch. Proto bude zkoum\u00e1n\u00ed zah\u00e1jeno s jednou \u00falohou a p\u0159ejde k v\u00edcero \u00faloh\u00e1m. <\/p>\n<p>Jednou z nep\u0159\u00edjemn\u00fdch vlastnost\u00ed historick\u00e9ho programov\u00e1n\u00ed je, \u017ee v\u011bt\u0161ina pojm\u016f, v\u010detn\u011b z\u00e1kladn\u00edch, je pod\u00e1v\u00e1na bez definic. \u201eProgramovac\u00ed jazyk (n\u00e1zev \u0159ek) m\u00e1 cel\u00e9 a plovouc\u00ed typy \u010d\u00edsel...\u201c \u2014 a pokra\u010dujeme d\u00e1l. Co je \u201etyp\u201c (typ) \u2014 definovat nen\u00ed nutn\u00e9, proto\u017ee auto\u0159i sami to nepochopili a zamotaj\u00ed to \u201epro jasnost\u201c. Pokud je p\u0159itla\u010d\u00edme ke zdi, poskytnou v\u00e1gn\u00ed a k ni\u010demu u\u017eite\u010dn\u00e9 definice. Velmi pom\u00e1h\u00e1 schovat se za ciz\u00edmi slovy: pro rusk\u00e9 autory \u2014 za anglick\u00fdmi (typ), pro Angli\u010dany \u2014 za francouzsk\u00fdmi (subroutine), \u0159eck\u00fdmi (polymorfismus), latinsk\u00fdmi (enkapsulace) nebo jejich kombinacemi (polymorfismus ad-hoc). <\/p>\n<p>Ale to nen\u00ed n\u00e1\u0161 osud. Na\u0161\u00ed volbou jsou definice s vyzdvi\u017een\u00fdm \u0161t\u00edtem v \u010dist\u00e9 \u010de\u0161tin\u011b. <\/p>\n<h3>Obraz<\/h3>\n<p>\n<i>Obraz<\/i> \u2014 je to p\u0159edobrazn\u00e9 jm\u00e9no veli\u010diny, kter\u00e9 ur\u010duje 1) vlastn\u00ed vlastnosti veli\u010diny a 2) v\u00fdb\u011br operac\u00ed k veli\u010din\u011b. <\/p>\n<p>Slovu \u201etyp\u201c odpov\u00edd\u00e1 prvn\u00ed \u010d\u00e1st definice: \u201evlastn\u00ed vlastnosti veli\u010diny\u201c. Ale hlavn\u00ed smysl typu je ve druh\u00e9 \u010d\u00e1sti: \u201ev\u00fdb\u011br operac\u00ed k veli\u010din\u00e1m\u201c.<\/p>\n<p>V\u00fdchoz\u00ed bod pro zaveden\u00ed typu v jazyce C je b\u011b\u017en\u00fd v\u00fdpo\u010det, nap\u0159\u00edklad operace s\u010d\u00edt\u00e1n\u00ed. <\/p>\n<p><i>Pap\u00edrov\u00e1<\/i> matematika, zapisovan\u00e1 ru\u010dn\u011b nebo tiskem, ned\u011bl\u00e1 \u017e\u00e1dn\u00e9 zvl\u00e1\u0161tn\u00ed rozli\u0161en\u00ed mezi druhy \u010d\u00edsel, obvykle je pova\u017euje za re\u00e1ln\u00e1. Proto jsou operace jejich zpracov\u00e1n\u00ed jednozna\u010dn\u00e9.<\/p>\n<p><i>Strojov\u00e1<\/i> Matematika striktn\u011b d\u011bl\u00ed \u010d\u00edsla na cel\u00e1 a zlomek. R\u016fzn\u00e9 typy \u010d\u00edsel se v pam\u011bti ukl\u00e1daj\u00ed r\u016fzn\u011b a zpracov\u00e1vaj\u00ed se r\u016fzn\u00fdmi instrukcemi procesoru. Nap\u0159\u00edklad instrukce pro s\u010d\u00edt\u00e1n\u00ed cel\u00fdch a zlomkov\u00fdch \u010d\u00edsel jsou dv\u011b r\u016fzn\u00e9 instrukce, kter\u00e9 odpov\u00eddaj\u00ed dv\u011bma r\u016fzn\u00fdm uzl\u016fm procesoru. Na druhou stranu instrukce pro s\u010d\u00edt\u00e1n\u00ed cel\u00e9ho a zlomek argument\u016f chyb\u00ed. <\/p>\n<p><i>Aplikovan\u00e1<\/i> matematika, tedy jazyk C, rozd\u011bl\u00ed typy \u010d\u00edsel, ale sjednocuje operace: s\u010d\u00edt\u00e1n\u00ed pro cel\u00e1 a\/nebo zlomkov\u00e1 \u010d\u00edsla se zapisuje jedn\u00edm oper\u00e1torem.<\/p>\n<p>Jasn\u00e9 definov\u00e1n\u00ed pojmu obraz n\u00e1m umo\u017e\u0148uje ur\u010dit\u011b mluvit o dvou dal\u0161\u00edch pojmech: <i>magnitude <\/i>a <i>operace<\/i>. <\/p>\n<h3>M\u011b\u0159\u00edtko a operace<\/h3>\n<p>\n<i>M\u011b\u0159\u00edtko <\/i> \u2014 zpracov\u00e1van\u00e9 \u010d\u00edslo.<\/p>\n<p><i>Operace<\/i> \u2014 zpracov\u00e1n\u00ed hodnot p\u016fvodn\u00edch veli\u010din (argument\u016f) s c\u00edlem z\u00edskat kone\u010dn\u00e9 \u010d\u00edslo (v\u00fdsledek). <\/p>\n<p>M\u011b\u0159\u00edtko a operace jsou vz\u00e1jemn\u011b propojeny. Ka\u017ed\u00e1 operace je m\u011b\u0159\u00edtkem, proto\u017ee m\u00e1 \u010d\u00edseln\u00fd v\u00fdsledek. A ka\u017ed\u00e9 m\u011b\u0159\u00edtko je v\u00fdsledkem p\u0159enosu hodnoty do registru procesoru\/z procesoru, tedy \u2014 v\u00fdsledkem operace. Navzdory t\u00e9to vz\u00e1jemn\u00e9 vazb\u011b je v\u0161ak hlavn\u00ed mo\u017enost jejich odd\u011blen\u00e9ho popisu, i kdy\u017e se jedno slovo opakuje v r\u016fzn\u00fdch odd\u00edlech slovn\u00edku, co\u017e se tak\u00e9 d\u011bje v ma3. <\/p>\n<p>Strojov\u00fd p\u0159\u00edstup rozd\u011bloval v\u0161echna \u010d\u00edsla pou\u017e\u00edvan\u00e1 program\u00e1torem na <i>p\u0159\u00edkaz\u016f. <\/i>a <i>data<\/i>. D\u0159\u00edve byla ob\u011b \u010d\u00edsla skute\u010dn\u011b \u010d\u00edsly, nap\u0159\u00edklad instrukce byly ps\u00e1ny \u010d\u00edseln\u00fdmi k\u00f3dy. Nicm\u00e9n\u011b v aplika\u010dn\u00edch jazyc\u00edch p\u0159estaly b\u00fdt instrukce \u010d\u00edsly a staly se <i>slovy <\/i>a <i>oper\u00e1tory<\/i>. Z \u010d\u00edsly z\u016fstaly pouze \u201edata\u201c, ale pokra\u010dovat v jejich naz\u00fdv\u00e1n\u00ed takto je sm\u011b\u0161n\u00e9, proto\u017ee z pohledu strojov\u00e9 matematiky jsou \u010d\u00edsla veli\u010dinami, kter\u00e9 se d\u011bl\u00ed na vstupn\u00ed (<i>data<\/i>) a v\u00fdstupn\u00ed (<i>hledan\u00e9<\/i>). \u201eNezn\u00e1m\u00e1 data\u201c - to by zn\u011blo hloup\u011b. <\/p>\n<p>Instrukce se tak\u00e9 rozd\u011blily do dvou typ\u016f akc\u00ed: matematick\u00e9 a servisn\u00ed. Matematick\u00e9 akce - operace. Na servisn\u00ed se pod\u00edv\u00e1me pozd\u011bji. <\/p>\n<p>V jazyce C konven\u010dn\u00ed pap\u00edrov\u00e9 a strojov\u00e9 jednozna\u010dn\u00e9, nebo jednoduch\u00e9, matematick\u00e9 operace t\u00e9m\u011b\u0159 v\u00fdhradn\u011b p\u0159ech\u00e1zej\u00ed na mnohon\u00e1sobn\u00e9. <\/p>\n<p>Mnohon\u00e1sobn\u00e9 operace \u2013 n\u011bkolik operac\u00ed se stejn\u00fdm n\u00e1zvem s r\u016fzn\u00fdmi obrazy argument\u016f a r\u016fzn\u00fdmi, smyslov\u011b bl\u00edzk\u00fdmi, akcemi. <\/p>\n<p>Cel\u00fdm argument\u016fm odpov\u00edd\u00e1 cel\u00e1 operace, \u0159edn\u00fdm \u2014 \u0159edn\u00e1. Tento rozd\u00edl je obzvl\u00e1\u0161\u0165 patrn\u00fd p\u0159i operaci d\u011blen\u00ed, kdy v\u00fdraz 1\/2 d\u00e1v\u00e1 v\u00fdsledek 0, a ne 0,5. Takov\u00fd z\u00e1pis neodpov\u00edd\u00e1 pravidl\u016fm pap\u00edrov\u00e9 matematiky, ale jazyk C se o to ani nesna\u017e\u00ed (na rozd\u00edl od Fortranu) \u2014 hraje podle sv\u00fdch <i>aplikovan\u00fdch<\/i> pravidel.<\/p>\n<p>V p\u0159\u00edpad\u011b sm\u00edch\u00e1n\u00ed cel\u00fdch a \u0159edn\u00fdch \u010d\u00edsel se aktivuje jedin\u00e9 spr\u00e1vn\u00e9 <i>p\u0159izp\u016fsoben\u00ed hodnot argument\u016f<\/i> \u2014 v\u00fdb\u011brov\u00e1 konverze hodnoty z jednoho form\u00e1tu do jin\u00e9ho. Opravdu, p\u0159i s\u010d\u00edt\u00e1n\u00ed cel\u00e9ho a \u0159edn\u00e9ho \u010d\u00edsla je v\u00fdsledek \u2014 \u0159edn\u00fd, tak\u017ee forma operace <i>se p\u0159izp\u016fsobuje <\/i>operaci konverze cel\u00e9ho argumentu na \u0159ednou hodnotu. <\/p>\n<p>\u0158ada operac\u00ed z\u016fst\u00e1v\u00e1 ne <i>mno\u017en\u00e1<\/i>, a <i>jednotn\u00e1<\/i>. Takov\u00e9 operace jsou definov\u00e1ny pouze pro jeden typ argument\u016f: zbytek d\u011blen\u00ed \u2014 cel\u00e1 \u010d\u00edsla, bitov\u00e9 operace \u2014 p\u0159irozen\u00e1 cel\u00e1. Ma3 ozna\u010duje mno\u017enost operac\u00ed znakem (#^) s vyzna\u010den\u00edm forem, pro kter\u00e9 je operace definov\u00e1na. To je d\u016fle\u017eit\u00e1, ale d\u0159\u00edve opom\u00edjen\u00e1 vlastnost ka\u017ed\u00e9 operace. <\/p>\n<p>V\u0161echny funkce jsou libovoln\u00e9 jednotn\u00e9 operace. V\u00fdjimku tvo\u0159\u00ed oper\u00e1tory \u2014 <i>bezokrajov\u00e9 funkce<\/i>, integrovan\u00e9 do jazyka (p\u016fvodn\u00ed operace). <\/p>\n<h3>Podpora<\/h3>\n<p>\n<i>Podpora <\/i> \u2014 doprovodn\u00e1 akce operace.<\/p>\n<p>Pokud pova\u017eujeme operaci za hlavn\u00ed akci, lze vy\u010dlenit dv\u011b doprovodn\u00e9, kter\u00e9 zaji\u0161\u0165uj\u00ed operaci a li\u0161\u00ed se od n\u00ed. To je 1) \u0159\u00edzen\u00ed prom\u011bnn\u00e9 a 2) pod\u0159\u00edzenost. Takov\u00e1 akce se naz\u00fdv\u00e1 <i>podpora<\/i>.<\/p>\n<p>Zde je t\u0159eba se odch\u00fdlit a zvl\u00e1\u0161\u0165 hovo\u0159it o rusk\u00fdch p\u0159ekladech u\u010debnic programov\u00e1n\u00ed. V textu K\/R bylo zavedeno nov\u00e9 slovo pro z\u00e1pis akc\u00ed <i>statement <\/i>(v\u00fdraz), kter\u00e9 se pokusilo odd\u011blit pojmy strojov\u00e9ho p\u0159\u00edkazu na r\u016fzn\u00e9 akce: 1) operaci, 2) deklaraci a 3) pod\u0159\u00edzenost (nazvanou \u201e\u0159\u00edd\u00edc\u00ed konstrukce\u201c). Tento pokus zru\u0161ili ru\u0161t\u00ed p\u0159ekladatel\u00e9, kte\u0159\u00ed nahradili \u201ev\u00fdraz\u201c slovem \u201eoper\u00e1tor\u201c, kter\u00e9:<\/p>\n<ol>\n<li>se stalo synonymem strojov\u00e9ho slova \u201ep\u0159\u00edkaz\u201c <\/li>\n<li>, stalo se synonymem slovn\u00edho spojen\u00ed \u201eznak akce\u201c<\/li>\n<li>a tak\u00e9 z\u00edskalo neomezen\u00fd po\u010det dal\u0161\u00edch v\u00fdznam\u016f. To znamen\u00e1, \u017ee se prom\u011bnilo na n\u011bco podobn\u00e9ho anglick\u00e9mu \u010dl\u00e1nku \u201eehhh\u2026\u201c. <\/li>\n<\/ol>\n<p>\nPoj\u010fme se pod\u00edvat na doprovodn\u00e9 akce, nebo <i>podpory<\/i>.<\/p>\n<h4><i>\u0158\u00edzen\u00ed prom\u011bnn\u00e9<\/i> <\/h4>\n<p>\n<i>\u0158\u00edzen\u00ed prom\u011bnn\u00e9<\/i> (UP) \u2014 vytvo\u0159en\u00ed\/odstran\u011bn\u00ed bun\u011bk prom\u011bnn\u00e9. <br \/>\nUP se prov\u00e1d\u00ed neexplicitn\u011b p\u0159i deklaraci prom\u011bnn\u00e9, kter\u00e1 je ji\u017e naps\u00e1na za jin\u00fdm \u00fa\u010delem \u2014 pro ur\u010den\u00ed podoby velikosti. V\u00fdhradn\u011b se spravuje pouze jeden typ <i>p\u0159\u00eddavn\u00fdch prom\u011bnn\u00fdch<\/i> pomoc\u00ed funkc\u00ed malloc() a free(). <\/p>\n<p>Je t\u0159eba poznamenat, \u017ee neexplicitn\u00ed akce jsou pohodln\u011bj\u0161\u00ed pro psan\u00ed, proto\u017ee vlastn\u011b nevy\u017eaduj\u00ed nic ps\u00e1t, ale jsou slo\u017eit\u011bj\u0161\u00ed k pochopen\u00ed \u2014 h\u016f\u0159e se zohled\u0148uj\u00ed a vykl\u00e1daj\u00ed. <\/p>\n<h4><i>Pod\u0159\u00edzenost<\/i><\/h4>\n<p>\n<i>Pod\u0159\u00edzenost <\/i> \u2014 p\u0159ipojen\u00ed\/odpojen\u00ed vrstven\u00fdch \u010d\u00e1st\u00ed. <\/p>\n<p>Jazyk C nab\u00eddl jin\u00fd ne\u017e assembler, praktick\u00fd zp\u016fsob \u0159\u00edzen\u00ed po\u0159ad\u00ed akc\u00ed \u2014 pod\u0159\u00edzenost. Odr\u00e1\u017e\u00ed a rozv\u00edj\u00ed slo\u017een\u00e9 v\u011bty s jasn\u00fdm rozd\u011blen\u00edm na hlavn\u00ed \u010d\u00e1st (v\u011bta pod\u0159\u00edzenosti) a vedlej\u0161\u00ed \u010d\u00e1st (\u010d\u00e1sti pod\u00farovn\u011b\/podprogramu). <\/p>\n<p>I deklarace, i pod\u0159\u00edzenost jsou pln\u011b postaveny na pojmu <i>vrstva<\/i>. <\/p>\n<h3>Vrstva<\/h3>\n<p>\n<i>Vrstva <\/i> \u2014 to je omezen\u00e1 jednovrstv\u00e1 selektivn\u00ed sada v\u00fdraz\u016f. <\/p>\n<p>Vrstva jasn\u011b a neexplicitn\u011b p\u0159evzala na sebe prov\u00e1d\u011bn\u00ed n\u011bkolika \u00faloh: <\/p>\n<ol>\n<li>\u00faprava programu,<\/li>\n<li>omezen\u00ed viditelnosti jmen (neexplicitn\u011b),<\/li>\n<li>\u0159\u00edzen\u00ed prom\u011bnn\u00fdmi (bu\u0148kami pam\u011bti) (neexplicitn\u011b),<\/li>\n<li>ur\u010den\u00ed vedlej\u0161\u00edch \u010d\u00e1st\u00ed pro pod\u0159\u00edzenost,<\/li>\n<li>definov\u00e1n\u00ed funkc\u00ed a v\u00fdb\u011br\u016f a dal\u0161\u00ed. <\/li>\n<\/ol>\n<p>\nV strojov\u00fdch jazyc\u00edch neexistoval pojem vrstva, a proto se neobjevil ani v K\/R, a pokud n\u011bco tam nebylo \u2014 zav\u00e1d\u011bn\u00ed to v n\u00e1sleduj\u00edc\u00edch knih\u00e1ch by bylo herez\u00ed a volnomyslnost\u00ed. Proto pojem vrstva v\u016fbec nevznikl, p\u0159esto\u017ee je mimo\u0159\u00e1dn\u011b u\u017eite\u010dn\u00fd a zcela z\u0159ejm\u00fd. <\/p>\n<p>Bez vrstvy nen\u00ed mo\u017en\u00e9 kr\u00e1tce a jasn\u011b vysv\u011btlit mnoho akc\u00ed a pravidel programu. Nap\u0159\u00edklad pro\u010d je prost\u00e9 jako t\u0159i hal\u00e9\u0159e goto \u2014 \u0161patn\u00e9, zat\u00edmco slo\u017eit\u00e9 while \u2014 dobr\u00e9. M\u016f\u017eete pouze bezmocn\u011b nad\u00e1vat, jak to d\u011blal Dijkstra (\u201ekvalifikace program\u00e1tor\u016f \u2014 funkce, kter\u00e1 se nep\u0159\u00edmo odv\u00edj\u00ed od \u010detnosti v\u00fdskytu p\u0159\u00edkaz\u016f goto v jejich programech\u201c. Zkr\u00e1tka, pouze kozy pou\u017e\u00edvaj\u00ed goto. \u00darove\u0148 opr\u00e1vn\u011bn\u00ed \u2014 B\u016fh.) Pr\u00e1v\u011b to nen\u00ed tak hrozn\u00e9, pokud va\u0161e knihy nic nemus\u00ed vysv\u011btlovat, ale jak jsme ji\u017e \u0159ekli, to nen\u00ed n\u00e1\u0161 osud. <\/p>\n<p>Mimochodem lze p\u0159edpokl\u00e1dat, \u017ee Den Ritchie zanechal goto pr\u00e1v\u011b jako kl\u00ed\u010d k hled\u00e1n\u00ed jak\u00e9hosi bezejmenn\u00e9ho pojmu, proto\u017ee v samotn\u00e9m v\u00fdrazu goto nebylo \u017e\u00e1dn\u00e9 pot\u0159ebn\u00e9 ani kr\u00e1sn\u00e9. M\u00edsto toho byla pot\u0159eba jednoduch\u00e9ho a srozumiteln\u00e9ho vysv\u011btlen\u00ed nov\u00fdch princip\u016f jazyka, kter\u00e9 s\u00e1m Ritchie necht\u011bl poskytnout, a kter\u00e9 jsou pr\u00e1v\u011b zalo\u017eeny na pojmu <i>vrstva<\/i>. <\/p>\n<h3>Odchylka<\/h3>\n<p>\n<i>Odchylka <\/i> \u2014 zm\u011bna obvykl\u00fdch vlastnost\u00ed nov\u00e9ho n\u00e1zvu. <\/p>\n<p>Nejd\u016fle\u017eit\u011bj\u0161\u00ed odchylka se spojena se strukturovan\u00fdmi vlastnostmi programu a popisuje se jedn\u00edm slovem \u201estatic\u201c, kter\u00e9 m\u00e1 r\u016fzn\u00e9 v\u00fdznamy v ka\u017ed\u00e9m typu vrstvy. <\/p>\n<h2>5. POSLEDN\u00cd KAPITOLA. Obecnost aplika\u010dn\u00edch jazyk\u016f<\/h2>\n<p>\nAplika\u010dn\u00ed jazyky \u2014 to jsou <i>obrazn\u00e9 <\/i>jazyky (maj\u00edc\u00ed obraz, \u201etypizovan\u00e9\u201c). Jsou zalo\u017eeny na v\u00fdslovn\u00e9m nebo nevyj\u00e1d\u0159en\u00e9m pou\u017eit\u00ed obrazu. A op\u011bt se zde projevuje rozpor: v\u00fdslovn\u00fd obraz \u2014 je srozumiteln\u011bj\u0161\u00ed, ale m\u00e9n\u011b praktick\u00fd, a naopak. <\/p>\n<p><img decoding=\"async\" alt=\"Matryoshka C. Vrstevnat\u00fd syst\u00e9m jazyka programu\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(Rozvr\u017een\u00ed tabulky zat\u00edm nebylo dod\u00e1no, proto je tabulka uvedena jako obr\u00e1zek.)<\/i><\/p>\n<p>Po C se v\u00fdvoj aplika\u010dn\u00edch jazyk\u016f ub\u00edral cestou zvy\u0161uj\u00edc\u00ed se obraznosti. Nejd\u016fle\u017eit\u011bj\u0161\u00edm pro pochopen\u00ed vysok\u00e9 obraznosti je p\u0159\u00edm\u00fd potomek C \u2014 jazyk C++. Rozv\u00edj\u00ed my\u0161lenku libovoln\u00e9ho p\u00e1rov\u00e1n\u00ed operac\u00ed k hodnot\u00e1m a realizuje ji na z\u00e1klad\u011b C-ov\u00e9ho v\u00fdrazu p\u00e1rov\u00e1n\u00ed, kter\u00fd dost\u00e1v\u00e1 nov\u00e9 jm\u00e9no \u2014 objekt. Nicm\u00e9n\u011b C++ nen\u00ed tak stru\u010dn\u00fd a v\u00fdsti\u017en\u00fd jako C, kv\u016fli p\u0159et\u00ed\u017een\u00ed nov\u00fdch typ\u016f p\u00e1rov\u00e1n\u00ed a s nimi spojen\u00fdch pravidel. Mimochodem, poj\u010fme mluvit o \u201ep\u0159et\u00ed\u017een\u00ed\u201c. <\/p>\n<h3>P\u0159et\u00ed\u017een\u00ed a polymorfismus <\/h3>\n<p>\nSlovo \u201ep\u0159et\u00ed\u017een\u00ed\u201c (overload) \u2014 zastaral\u00fd term\u00edn strojov\u00e9ho p\u0159\u00edstupu, ozna\u010duj\u00edc\u00ed vytv\u00e1\u0159en\u00ed <i>v\u00edce\u010detn\u00fdch operac\u00ed<\/i>. <\/p>\n<p>Strojov\u00fdch (syst\u00e9mov\u00fdch) program\u00e1tor\u016f <i>mno\u017estv\u00ed <\/i>operac\u00ed mohlo skute\u010dn\u011b roz\u010dilovat: \u201eCo znamen\u00e1 tento znak (+): s\u010d\u00edt\u00e1n\u00ed cel\u00fdch \u010d\u00edsel, s\u010d\u00edt\u00e1n\u00ed zlomkov\u00fdch \u010d\u00edsel nebo v\u016fbec posun?! Za na\u0161ich \u010das\u016f se takhle nep\u00ed\u0161ou!\u201c Odtud negativn\u00ed n\u00e1dech zvolen\u00e9ho slova (\u201ep\u0159et\u00ed\u017een\u00ed\u201c, \u201eunaven\u00fd\u201c). Pro aplika\u010dn\u00edho program\u00e1tora jsou v\u00edce\u010detn\u00e9 operace z\u00e1kladn\u00edm kamenem, hlavn\u00edm dosa\u017een\u00edm a d\u011bdictv\u00edm jazyka C, tak p\u0159irozen\u00e9, \u017ee jsou \u010dasto nev\u011bdom\u00e9. <\/p>\n<p>V jazyce C++ <i>mno\u017estv\u00ed<\/i> roz\u0161\u00ed\u0159ila se nejen na z\u00e1kladn\u00ed operace, ale i na funkce \u2014 jak jednotliv\u00e9, tak slou\u010den\u00e9 do t\u0159\u00edd \u2014 metody. Spolu s mnoha metodami se objevila mo\u017enost jejich p\u0159ep definitions v roz\u0161\u00ed\u0159en\u00fdch t\u0159\u00edd\u00e1ch, kter\u00e1 byla v\u00e1gn\u011b ozna\u010dena jako \u201epolymorfismus\u201c. Kombinace polymorfismu a p\u0159et\u00ed\u017een\u00ed vytvo\u0159ila v\u00fdbu\u0161nou sm\u011bs, kter\u00e1 se rozd\u011blila na dva polymorfismy: \u201eprav\u00fd\u201c a \u201ead-hoc\u201c. Rozlu\u0161tit to lze jen v rozporu s p\u0159i\u0159azen\u00fdmi n\u00e1zvy. Ciz\u00ed n\u00e1zvy vy\u0161lapaly cestu k ad. <\/p>\n<p>Ozn\u00e1men\u00ed typu \u201ep\u0159et\u00ed\u017een\u00ed\u201c by bylo l\u00e9pe vyj\u00e1d\u0159it slovem <i>dodate\u010dn\u00e9 ozn\u00e1men\u00ed <\/i> \u2014 p\u0159id\u00e1n\u00ed ozn\u00e1men\u00ed stejnojmenn\u00e9 funkce s argumenty jin\u00e9ho typu. <\/p>\n<p>Ozn\u00e1men\u00ed typu \u201epolymorfismus\u201c by bylo lep\u0161\u00ed nazvat slovem <i>p\u0159eobjedn\u00e1n\u00ed<\/i> \u2014 p\u0159ekr\u00fdvaj\u00edc\u00ed se ozn\u00e1men\u00ed v nov\u00e9m roz\u0161i\u0159uj\u00edc\u00edm r\u00e1mci stejnojmenn\u00e9 funkce s argumenty stejn\u00e9ho typu. <\/p>\n<p>Pak bude snadn\u00e9 pochopit, \u017ee stejnojmenn\u00e9 metody r\u016fzn\u00fdch typ\u016f (argument\u016f) \u2014 <i>dodate\u010dn\u011b oznamov\u00e1ny<\/i>, a jednoho typu \u2014 <i>p\u0159eobjedn\u00e1v\u00e1ny<\/i>. <\/p>\n<p>Rusk\u00e1 slova to vyjasn\u00ed. <\/p>\n<h3>Vstupn\u00ed dr\u00e1ha<\/h3>\n<p>\nZva\u017eov\u00e1n\u00ed pojm\u016f vysoce typizovan\u00fdch jazyk\u016f potvrzuje d\u016fle\u017eitost jasn\u00e9ho vymezen\u00ed z\u00e1kladn\u00edch pojm\u016f. S dob\u0159e pops\u00e1n\u00fdm C bude studium vysoce typizovan\u00fdch jazyk\u016f snadn\u00e9 a p\u0159\u00edjemn\u00e9. <\/p>\n<p>To je obzvl\u00e1\u0161\u0165 d\u016fle\u017eit\u00e9 pro <i>implicitn\u00ed vysoce typizovan\u00e9 jazyky<\/i> (PHP, JavaScript). Pro n\u011b d\u016fle\u017eitost objekt\u016f (slo\u017een\u00fdch typ\u016f) st\u00e1v\u00e1 je\u0161t\u011b vy\u0161\u0161\u00ed ne\u017e v C++, ale samotn\u00fd pojem typu se st\u00e1v\u00e1 implicitn\u00edm a obt\u00ed\u017en\u011b uchopiteln\u00fdm. Z hlediska pohodl\u00ed se staly jednodu\u0161\u0161\u00edmi, ale z hlediska pochopen\u00ed \u2014 slo\u017eit\u011bj\u0161\u00edmi. <\/p>\n<p>Proto byste m\u011bli za\u010d\u00edt studium programovac\u00edch jazyk\u016f jazykem C a pokra\u010dovat d\u00e1l v po\u0159ad\u00ed vzniku jazyk\u016f rodiny C. <\/p>\n<p>Tot\u00e9\u017e plat\u00ed pro popis jazyk\u016f. R\u016fzn\u00e9 jazyky maj\u00ed shoduj\u00edc\u00ed se, nebo men\u0161\u00ed soubor rodin jednotek ne\u017e jazyk C. Po\u010det typ\u016f a vzor\u016f m\u016f\u017ee v obou sm\u011brech kol\u00edsat: u C++ je typ\u016f v\u00edce ne\u017e u C, u JavaScriptu \u2014 m\u00e9n\u011b. <\/p>\n<p>Zvl\u00e1\u0161tn\u00ed zm\u00ednku zaslou\u017e\u00ed jazyk MySQL. P\u0159ipad\u00e1 si to \u2014 nic spole\u010dn\u00e9ho, ale skv\u011ble je pops\u00e1n Matryoshkou, a sezn\u00e1men\u00ed s n\u00edm se st\u00e1v\u00e1 rychlej\u0161\u00edm a jednodu\u0161\u00edm. Co je d\u016fle\u017eit\u00e9, vzhledem k jeho v\u00fdznamu pro web \u2014 rychlost modern\u00edho programov\u00e1n\u00ed. A kde je MySQL, tam jsou i ostatn\u00ed SQL. No, a v\u0161echny fortrany-pascaly-pythony tak\u00e9 jsou pops\u00e1ny Matryoshkou, jakmile se na to dostanou ruce. <\/p>\n<p>Tak\u017ee n\u00e1s \u010dekaj\u00ed velk\u00e9 v\u011bci \u2014 praktick\u00fd popis jazyka C a jednotn\u00e9 popisy dal\u0161\u00edch n\u00e1sleduj\u00edc\u00edch jazyk\u016f. \u201eNa\u0161e c\u00edle jsou jasn\u00e9, \u00fakoly stanoven\u00e9. Do pr\u00e1ce, soudruzi! (Bou\u0159liv\u00fd, dlouh\u00fd potlesk, p\u0159ech\u00e1zej\u00edc\u00ed v ovaci. V\u0161ichni vst\u00e1vaj\u00ed.)\u201c <\/p>\n<p>Va\u0161e n\u00e1zory budou vyslechnuty s velkou pozornost\u00ed, va\u0161e pomoc p\u0159i vytv\u00e1\u0159en\u00ed webu matrjo\u0161ek bude p\u0159ijata s obrovskou vd\u011b\u010dnost\u00ed. Podrobn\u011bj\u0161\u00ed informace o knize naleznete na webu, tajn\u011b ukryt\u00e9m v matrjo\u0161ce C.<br \/>\n<br \/>Zdroj: <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.3 - 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\/cs\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Matrjo\u0161ka C. Slo\u017ekov\u00fd syst\u00e9m programovac\u00edho jazyka | ProHoster","description":"Zkusme si p\u0159edstavit chemii bez Periodick\u00e9 tabulky prvk\u016f Mend\u011blejeva (1869).","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}