{"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\/hu\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matrjoshka C. A programnyelv r\u00e9teges rendszere","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pr\u00f3b\u00e1ljuk elk\u00e9pzelni a k\u00e9mi\u00e1t a Mendeljejev-f\u00e9le peri\u00f3dusos rendszer (1869) n\u00e9lk\u00fcl. H\u00e1ny elemet kellett volna fejben tartanunk, r\u00e1ad\u00e1sul tetsz\u0151leges sorrendben... (Akkor 60 volt.)<\/p>\n<p>Ehhez el\u00e9g gondolni egy vagy t\u00f6bb programoz\u00e1si nyelvre. Ugyanazok az \u00e9rz\u00e9sek, ugyanaz a kreat\u00edv k\u00e1osz. <\/p>\n<p>Most pedig \u00e1t\u00e9lhetj\u00fck a 19. sz\u00e1zadi k\u00e9mikusok \u00e9rz\u00e9seit, amikor mindazt a tud\u00e1sukat, \u00e9s egy kicsit t\u00f6bbet, egyetlen peri\u00f3dusos t\u00e1bl\u00e1zatban aj\u00e1nlott\u00e1k fel. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjoshka C. A programnyelv r\u00e9teges rendszere\" 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 \/>\nA \"Matrioska C. A programnyelv r\u00e9tegzett rendszere\" k\u00f6nyv a C nyelv minden egys\u00e9g\u00e9t k\u00e9zhez \u00e1ll\u00f3 m\u00f3don mutatja be. Ez lehet\u0151v\u00e9 teszi azok rendszerez\u00e9s\u00e9t, az elavult inform\u00e1ci\u00f3k helyre\u00e1ll\u00edt\u00e1s\u00e1t, s\u0151t, m\u00e9g mag\u00e1nak a program fogalm\u00e1nak pontos\u00edt\u00e1s\u00e1t is. <\/p>\n<p>Ma a programoz\u00e1ssal kapcsolatos ismeretek rendszerez\u00e9sre szorulnak, m\u00e9g ink\u00e1bb, mint 150 \u00e9ve a k\u00e9miai elemek. <\/p>\n<p>Az els\u0151 sz\u00fcks\u00e9glet \u2014 az oktat\u00e1s. Mendeljejev a saj\u00e1t rendszer\u00e9nek l\u00e9trehoz\u00e1s\u00e1ba akkor kezdett, amikor szembes\u00fclt a k\u00e9rd\u00e9ssel \u2014 melyik elemmel kezdje az el\u0151ad\u00e1sokat: O, H, N, He, Au... R\u00e1ad\u00e1sul neki egyszer\u0171bb volt \u2014 a legjobb hallgat\u00f3kat, a Szentp\u00e9terv\u00e1ri Egyetem di\u00e1kjait tan\u00edtotta k\u00e9mi\u00e1ra. A programoz\u00e1st azonban m\u00e1r az iskol\u00e1kban tan\u00edtj\u00e1k, \u00e9s hamarosan a gyermekkertekben is elindul. <\/p>\n<p>A m\u00e1sodik sz\u00fcks\u00e9glet \u2014 tudom\u00e1nyos megk\u00f6zel\u00edt\u00e9s. A peri\u00f3dusos rendszer seg\u00edts\u00e9g\u00e9vel \u00faj elemeket fedeztek fel \u00e9s jav\u00edtott\u00e1k a r\u00e9giek ismereteit. Seg\u00edtett az atommodell l\u00e9trehoz\u00e1s\u00e1ban (1911). \u00c9s \u00edgy tov\u00e1bb. <\/p>\n<p>A harmadik sz\u00fcks\u00e9glet \u2014 a program fogalm\u00e1nak pontos\u00edt\u00e1sa. <\/p>\n<p>A modern programoz\u00e1s egyik l\u00e1ba a 20. sz\u00e1zad 50-es \u00e9veiben ragadt. Akkor a programok egyszer\u0171ek voltak, m\u00edg a g\u00e9pek \u00e9s a g\u00e9pi nyelvek bonyolultak, ez\u00e9rt minden a g\u00e9pek \u00e9s nyelvek k\u00f6r\u00fcl forgott. <\/p>\n<p>Most \u00e9ppen ford\u00edtva van: a programok bonyolultak \u00e9s els\u0151dlegesek, m\u00edg a nyelvek egyszer\u0171ek \u00e9s m\u00e1sodlagosak. Ezt h\u00edvj\u00e1k alkalmazott megk\u00f6zel\u00edt\u00e9snek, ami mindenkinek ismer\u0151snek t\u0171nik. De a hallgat\u00f3kat \u00e9s a fejleszt\u0151ket tov\u00e1bbra is arr\u00f3l gy\u0151zik meg, hogy minden tov\u00e1bbra is \u00edgy van. <\/p>\n<p>Ez visszavezeti minket Mendeljejev mag\u00e1ntan\u00e1r els\u0151 el\u0151ad\u00e1s\u00e1hoz. Mit mondjunk az els\u0151\u00e9veseknek? Hol van az igazs\u00e1g? Ez a k\u00e9rd\u00e9s. <\/p>\n<p>A k\u00f6nyv, a \"Matrioska C. A programnyelv r\u00e9tegzett rendszere\" saj\u00e1t v\u00e1lasz\u00e1t k\u00edn\u00e1lja erre. R\u00e1ad\u00e1sul nemcsak a hallgat\u00f3knak sz\u00f3l, hanem a felk\u00e9sz\u00fclt programoz\u00f3knak is, mivel az igazs\u00e1g keres\u00e9se \u00e9s a vil\u00e1gk\u00e9p megford\u00edt\u00e1sa \u00e9ppen az \u0151 feladatuk, vagyis a mi\u00e9nk. <\/p>\n<p>Ezut\u00e1n a k\u00f6nyv r\u00f6vid \u00f6sszefoglal\u00f3ja k\u00f6vetkezik. <\/p>\n<h2>1. Bevezet\u00e9s<\/h2>\n<p>\n1969-ben ker\u00fclt kialak\u00edt\u00e1sra a C nyelv, amely alapvet\u0151 programoz\u00e1si nyelvv\u00e9 v\u00e1lt, \u00e9s m\u00e1r 50 \u00e9ve megmaradt annak. Mi\u00e9rt van ez \u00edgy? El\u0151sz\u00f6r is, mert a C <i>alkalmaz\u00e1si<\/i> nyelv, ami emberi <i>arcot adott a programnak<\/i> a g\u00e9pi <i>megjelen\u00e9s helyett<\/i>. Ezt a v\u00edvm\u00e1nyt meger\u0151s\u00edtett\u00e9k a C csal\u00e1dba tartoz\u00f3 nyelvek: C++, JavaScript, PHP, Java, C# \u00e9s m\u00e1sok. M\u00e1sodszor, ez egy r\u00f6vid \u00e9s sz\u00e9p nyelv. <\/p>\n<p>A C nyelvet azonban gyakran \u00f6sszekeverik a g\u00e9pi assembly-vel, ezzel megnehez\u00edtve \u00e9s torz\u00edtva annak \u00e9rtelmez\u00e9s\u00e9t. Egy m\u00e1sik sz\u00e9ls\u0151s\u00e9g a nyelvhez kapcsol\u00f3d\u00f3 \u201efiloz\u00f3fia\u201d r\u00e1er\u0151ltet\u00e9se: procedur\u00e1lis, objektumorient\u00e1lt, funkcion\u00e1lis, ford\u00edtott, \u00e9rtelmezett, t\u00edpusos, \u00e9s \u00edgy tov\u00e1bb. Ez \u00e9rzelmeket ad hozz\u00e1, de nem seg\u00edt jobban le\u00edrni a nyelvet. <\/p>\n<p>Az igazs\u00e1g a k\u00f6z\u00e9pen van, \u00e9s a C nyelv eset\u00e9ben ez szigor\u00faan a filoz\u00f3fiai \u00e9s g\u00e9pi \u00e9rtelmez\u00e9s k\u00f6z\u00e9ppontj\u00e1ban helyezkedik el. <\/p>\n<p>A C nyelv nem \u00f6n\u00e1ll\u00f3, al\u00e1rendeli mag\u00e1t a szok\u00e1sos \u00edrott nyelvnek, \u00e9s egyben \u0151 szab\u00e1lyozza a g\u00e9pi assembly-t is. Ezt a helyzetet \u00edrja le <i>A program besz\u00e9dmodellje<\/i>, amely szerint a program h\u00e1rom al\u00e1rendelt t\u00edpusra oszlik: besz\u00e9des, k\u00f3dolt, utas\u00edt\u00e1si. A C nyelv a m\u00e1sodik, a k\u00f3dolt t\u00edpus\u00e9rt felel\u0151s. <\/p>\n<p>A nyelv hely\u00e9nek meghat\u00e1roz\u00e1s\u00e1val a programban rendezni lehet az inform\u00e1ci\u00f3kat r\u00f3la, ami l\u00e9trehozza <i>A program nyelv\u00e9nek r\u00e9tegezett rendszere<\/i>, amely a C nyelvet a peri\u00f3dusos rendszer szellem\u00e9ben mutatja be \u2013 egy oldalra. <\/p>\n<p>A rendszer figyelembe veszi <i>az alkalmaz\u00e1si nyelvek k\u00f6z\u00f6tti k\u00f6z\u00f6ss\u00e9get<\/i>, amely a besz\u00e9des al\u00e1rendelts\u00e9g\u00fckb\u0151l fakad. Egy egyetlen k\u00e9szlet Matryoshka egys\u00e9g a C nyelven lehet\u0151v\u00e9 teszi, hogy k\u00fcl\u00f6nb\u00f6z\u0151 nyelveket \u00edrjunk le \u00e9s hasonl\u00edtsunk \u00f6ssze, l\u00e9trehozva egy sor Matryoshk\u00e1t: C++, PHP, JavaScript, C#, MySQL, Python \u00e9s \u00edgy tov\u00e1bb. Megfelel\u0151 \u00e9s helyes, hogy a k\u00fcl\u00f6nb\u00f6z\u0151 nyelveket az alapnyelv egys\u00e9geivel \u00edrj\u00e1k le. <\/p>\n<h2>2. FEJEZET 1. A program besz\u00e9dmodellje. \u00c9rthet\u0151 C<\/h2>\n<p>\nAz els\u0151 fejezet bemutatja <i>a program besz\u00e9dmodellj\u00e9t<\/i>, amely a gyakorlati megk\u00f6zel\u00edt\u00e9st t\u00fckr\u00f6zi. Ennek megfelel\u0151en a programnak h\u00e1rom nyilv\u00e1nval\u00f3 egym\u00e1sut\u00e1nis\u00e1ga van: <\/p>\n<ol>\n<li>besz\u00e9des \u2013 a feladatot megold\u00f3 programoz\u00f3 k\u00f6zvetlen besz\u00e9de, <\/li>\n<li>k\u00f3dolt \u2013 a megold\u00e1s k\u00f3dol\u00e1sa matematikai form\u00e1ban C nyelven (vagy b\u00e1rmely m\u00e1s nyelven)<\/li>\n<li>\u00e9s utas\u00edt\u00e1si \u2013 k\u00f6zvetlen g\u00e9pi utas\u00edt\u00e1sok. <\/li>\n<\/ol>\n<p>\nA besz\u00e9dmodell magyar\u00e1zatot ad arra, hogy mi\u00e9rt egyszer\u0171 \u00e9s \u00e9rthet\u0151 a C. A C a nek\u00fcnk szok\u00e1sos emberi besz\u00e9d mint\u00e1j\u00e1ra \u00e9p\u00fcl. <\/p>\n<p>Az els\u0151 programt\u00edpus a programoz\u00f3 k\u00f6zvetlen besz\u00e9de. A besz\u00e9d megfelel az emberi gondolkod\u00e1snak. A besz\u00e9d seg\u00edts\u00e9g\u00e9vel programokat \u00edrnak a kezd\u0151 programoz\u00f3k \u2013 el\u0151sz\u00f6r oroszul, majd l\u00e9p\u00e9sr\u0151l l\u00e9p\u00e9sre ford\u00edtva a cselekv\u00e9seket k\u00f3dnyelvre. \u00c9s pontosan ezen minta alapj\u00e1n k\u00e9sz\u00fclt a C nyelv. <\/p>\n<p>A programoz\u00f3 k\u00f6vetkeztet\u00e9sei, amelyeket besz\u00e9ddel fejeznek ki, k\u00f3dos sz\u00e1mform\u00e1v\u00e1 alakulnak. Ezt a transzform\u00e1ci\u00f3t nevezz\u00fck <i>t\u00fck\u00f6rk\u00e9pnek<\/i>, mivel a besz\u00e9d \u00e9s a k\u00f3d egy term\u00e9szet\u0171 (t\u00fck\u00f6rk\u00e9p \u2014 sz\u00fclet\u00e9s \u2014 sz\u00e1rmaz\u00e1s). Ez teljesen nyilv\u00e1nval\u00f3, ha \u00f6sszehasonl\u00edtjuk a besz\u00e9d (balra) \u00e9s a k\u00f3dolt (jobbra) programv\u00e1ltozatokat. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjoshka C. A programnyelv r\u00e9teges rendszere\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9rdekes, hogy a t\u00fck\u00f6rk\u00e9p nagyon egyszer\u0171en t\u00f6rt\u00e9nik \u2013 mind\u00f6ssze k\u00e9tf\u00e9le kifejez\u00e9ssel. <\/p>\n<p>Ugyanakkor a C nyelv modern le\u00edr\u00e1sa (1978-b\u00f3l) nem tartalmaz elegend\u0151 n\u00e9vsort sem a nyelv \u00e1ltal\u00e1nos le\u00edr\u00e1s\u00e1ra, sem a t\u00fck\u00f6rk\u00e9pk\u00e9nt val\u00f3 feladat\u00e1ra vonatkoz\u00f3an. Ez\u00e9rt k\u00e9nytelenek vagyunk kreat\u00edvan elj\u00e1rni \u00e9s bevezetni ezeket a neveket.<\/p>\n<p>A szavak kiv\u00e1laszt\u00e1s\u00e1nak pontosnak \u00e9s vil\u00e1gosnak kell lennie. Ehhez k\u00fcl\u00f6nleges megk\u00f6zel\u00edt\u00e9s sz\u00fcks\u00e9ges, amely r\u00f6viden \u00fagy fejezhet\u0151 ki \u2013 a saj\u00e1t nyelv szigor\u00fa haszn\u00e1lata. Az angolok sz\u00e1m\u00e1ra ez lenne az angol nyelv, de mi nem vagyunk angolok. Teh\u00e1t haszn\u00e1ljuk, ami van, \u00e9s megpr\u00f3b\u00e1lunk oroszul besz\u00e9lni. <\/p>\n<p>A t\u00fck\u00f6rk\u00e9pet k\u00e9tf\u00e9le kifejez\u00e9s hajtja v\u00e9gre: <\/p>\n<ol>\n<li><i>sz\u00e1m\u00edt\u00e1s <\/i>(Sz) \u2013 t\u00fckr\u00f6zi a t\u00e1rgy jellemz\u0151inek v\u00e1ltoz\u00e1s\u00e1t. A t\u00e1rgy jellemz\u0151je sz\u00e1m form\u00e1j\u00e1ban van kifejezve, teh\u00e1t a jellemz\u0151n v\u00e9gzett m\u0171velet \u2013 az a m\u0171velet a sz\u00e1mmal \u2013 oper\u00e1ci\u00f3. <\/li>\n<li><i>al\u00e1rendel\u00e9s <\/i>(Al) \u2013 a cselekv\u00e9sek sorrendj\u00e9nek v\u00e1ltoz\u00e1s\u00e1t t\u00fckr\u00f6zi. Az Al alapja a besz\u00e9dbeli bonyolult al\u00e1rendelt mondat, ez\u00e9rt a legt\u00f6bb Al t\u00edpus al\u00e1rendel\u0151 k\u00f6t\u0151szavakkal kezd\u0151dik, mint p\u00e9ld\u00e1ul \u201eha\u201d, \u201eegy\u00e9bk\u00e9nt\u201d, \u201eam\u00edg\u201d, \u201esz\u00e1m\u00e1ra\u201d. M\u00e1s Al t\u00edpusok kieg\u00e9sz\u00edtik ezeket. <\/li>\n<\/ol>\n<p>\nEgy\u00e9bk\u00e9nt elhiszed, hogy a C le\u00edr\u00e1s\u00e1ban nincs neve a sz\u00e1m\u00edt\u00e1si kifejez\u00e9seknek \u2013 csak sim\u00e1n \u201ekifejez\u00e9seknek\u201d nevezik \u0151ket? Ezut\u00e1n m\u00e1r nem meglep\u0151 annak hi\u00e1nya \u00e9s az al\u00e1rendel\u00e9s fajt\u00e1j\u00e1nak \u00f6sszegz\u00e9se, \u00e9s egy\u00e1ltal\u00e1n a nevek, meghat\u00e1roz\u00e1sok \u00e9s \u00e1ltal\u00e1nos\u00edt\u00e1sok szeg\u00e9nys\u00e9ge. Mindaz az\u00e9rt, mert a h\u00edres K\/R (\u201eC nyelv\u201d, Kernighan\/Ritchie, 1978) nem le\u00edr\u00e1s, hanem a nyelv haszn\u00e1lat\u00e1nak \u00fatmutat\u00f3ja. <\/p>\n<p>Azonban szeretn\u00e9nk, ha lenne egy le\u00edr\u00e1sa a nyelvnek. Ez\u00e9rt ezt k\u00edn\u00e1lja <i>A program nyelv\u00e9nek r\u00e9tegezett rendszere<\/i>. <\/p>\n<h2>3. FEJEZET 2. R\u00e9tegz\u0151d\u00e9si rendszer. R\u00f6vid C<\/h2>\n<p>\nB\u00e1rmilyen le\u00edr\u00e1snak pontosnak \u00e9s rendk\u00edv\u00fcl t\u00f6m\u00f6rnek kell lennie. A programnyelv eset\u00e9ben a front\u00e1lis le\u00edr\u00e1s neh\u00e9z. <\/p>\n<p>Itt van egy programunk. Modulokb\u00f3l \u00e1ll. A modulok alprogramokb\u00f3l \u00e9s v\u00e1logat\u00e1sokb\u00f3l (structure) \u00e1llnak. Az alprogramok k\u00fcl\u00f6n\u00e1ll\u00f3 kifejez\u00e9sekb\u0151l \u00e1llnak: nyilatkozatokb\u00f3l, sz\u00e1m\u00edt\u00e1sokb\u00f3l, al\u00e1rendel\u00e9sekb\u0151l. Az al\u00e1rendel\u00e9seknek \u00f6sszesen t\u00edz t\u00edpusa van. Az al\u00e1rendel\u00e9sek alszinteket \u00e9s alprogramokat kapcsolnak be. Nyilatkozatokb\u00f3l is t\u00f6bb van. Egy\u00e9bk\u00e9nt a nyilatkozatok nemcsak alprogramokban \u00e9s alszintekben szerepelnek, hanem modulokban \u00e9s v\u00e1logat\u00e1sokban is. A kifejez\u00e9sek t\u00f6bbs\u00e9ge szavakb\u00f3l \u00e1ll, amelyeknek a le\u00edr\u00e1sa olyan bonyolult, hogy \u00e1ltal\u00e1ban egyszer\u0171en k\u00e9t listak\u00e9nt adj\u00e1k meg \u0151ket \u2014 az alap- \u00e9s a sz\u00e1rmaz\u00e9kos szavakat, amelyeket a nyelv tanul\u00e1sa \u00e9s haszn\u00e1lata sor\u00e1n fogunk megismerni. Ehhez adjuk m\u00e9g hozz\u00e1 a \u00edr\u00e1sjelet \u00e9s sz\u00e1mos egy\u00e9b kifejez\u00e9st. <\/p>\n<p>Ilyen form\u00e1ban neh\u00e9z meg\u00e9rteni, hogy ki kinek a hely\u00e9n \u00e1llt. <\/p>\n<p>A nyelv le\u00edr\u00e1s\u00e1nak k\u00f6zvetlen hierarchikus megk\u00f6zel\u00edt\u00e9se t\u00fal bonyolult lenne. A k\u00f6r\u00fclm\u00e9nyes utak keres\u00e9se a nyelv besz\u00e9dterm\u00e9szete \u00e9s parancsi oldala alapj\u00e1n t\u00f6rt\u00e9n\u0151 le\u00edr\u00e1s\u00e1hoz vezet. \u00cdgy j\u00f6tt l\u00e9tre a R\u00e9tegzett rendszer, amely r\u00e9szben egybeesik a Mendeljejev peri\u00f3dusos rendszer\u00e9vel, amely szint\u00e9n <i>r\u00e9tegezett<\/i>. 42 \u00e9vvel a megjelen\u00e9se ut\u00e1n (1869) kider\u00fclt, hogy a rendszer peri\u00f3dusoss\u00e1ga a elektronikus <i>r\u00e9tegekkel <\/i>(1911, Bohr-Rutherford atommodell). A R\u00e9tegzett \u00e9s a Peri\u00f3dikus rendszert a k\u00fcl\u00f6nb\u00f6z\u0151 egys\u00e9gek egyoldal\u00fa elhelyez\u00e9se is \u00f6sszek\u00f6ti. <\/p>\n<p>A nyelv egys\u00e9geinek le\u00edr\u00e1sa t\u00f6m\u00f6r \u2014 mind\u00f6ssze 10 kifejez\u00e9st\u00edpus \u00e9s 8 egy\u00e9b egys\u00e9gt\u00edpus, valamint tartalmilag gazdag \u00e9s j\u00f3l \u00e1tl\u00e1that\u00f3. Ugyanakkor els\u0151 tal\u00e1lkoz\u00e1sra szokatlan. <\/p>\n<p>A nyelv egys\u00e9gei 6 szintre vannak osztva:<\/p>\n<ol>\n<li>rendek \u2014 a t\u00e1bl\u00e1zat sora<\/li>\n<li>szakok \u2014 k\u00fcl\u00f6nleges csoportok (az els\u0151 sor r\u00e9szei)<\/li>\n<li>t\u00edpusok \u2014 cell\u00e1k (a f\u0151 feloszt\u00e1si szint)<\/li>\n<li>fels\u0151 t\u00edpusok \u2014 a fajt\u00e1k elv\u00e1laszt\u00f3i (ritka szint)<\/li>\n<li>fajt\u00e1k \u2014 az egys\u00e9gek k\u00e9pletei a cella alj\u00e1n vagy k\u00fcl\u00f6n<\/li>\n<li>mint\u00e1k \u2014 maguk az egys\u00e9gek (csak szavakra vonatkozik)<\/li>\n<\/ol>\n<p>\nA szavak mint\u00e1it a <i>sz\u00f3t\u00e1r<\/i> le\u00edrja \u2014 k\u00fcl\u00f6n alrendszer, amely a hat szintb\u0151l \u00e1ll. <\/p>\n<p>A C nyelv besz\u00e9dkomponensei megnyilv\u00e1nulnak, b\u00e1r m\u00e9gis indokolt a le\u00edr\u00e1sa. A nyelv parancsi r\u00e9sze viszont kapcsol\u00f3dik a ford\u00edt\u00e1s kezel\u00e9s\u00e9hez, amely sor\u00e1n egy harmadik programt\u00edpus \u2014 a parancsos \u2014 j\u00f6n l\u00e9tre. Itt \u00e9rkez\u00fcnk a C nyelv legleny\u0171g\u00f6z\u0151bb r\u00e9sz\u00e9hez \u2014 a sz\u00e9ps\u00e9ghez. <\/p>\n<h2>4. K\u00d6VETKEZ\u0150 FEJEZETEK. Gy\u00f6ny\u00f6r\u0171 C<\/h2>\n<p>\nA C nyelv a modern programoz\u00e1s alapja. Mi\u00e9rt? El\u0151sz\u00f6r is, mert legink\u00e1bb megfelel a besz\u00e9lt nyelvnek. M\u00e1sodszor, mert sz\u00e9pen megker\u00fcli a g\u00e9pi sz\u00e1mfeldolgoz\u00e1s korl\u00e1tait.<\/p>\n<p>Mit is k\u00edn\u00e1lt a C? T\u00edpus \u00e9s r\u00e9teg. <\/p>\n<p>A 't\u00edpus' sz\u00f3 az angol 'type' sz\u00f3b\u00f3l sz\u00e1rmazik, amely a g\u00f6r\u00f6g 'prototypus' - 'protot\u00edpus' sz\u00f3b\u00f3l ered. A magyar nyelvben a 't\u00edpus' sz\u00f3 nem adja vissza a kifejez\u00e9s sarkalatos jelent\u00e9s\u00e9t, r\u00e1ad\u00e1sul keveredik a seg\u00e9d jelent\u00e9ssel, amely a 'faj' volt. <\/p>\n<p>Eredetileg a t\u00edpus tiszt\u00e1n g\u00e9pi sz\u00e1m\u00edt\u00e1si feladatot oldott meg, majd egy ugr\u00f3deszk\u00e1v\u00e1 v\u00e1lt az objektumorient\u00e1lt nyelvek sz\u00fclet\u00e9s\u00e9hez. <\/p>\n<p>A r\u00e9teg azonnal t\u00f6bb feladatot is megoldott - g\u00e9pi \u00e9s alkalmaz\u00e1si szempontb\u00f3l egyar\u00e1nt. \u00c9ppen ez\u00e9rt a vizsg\u00e1l\u00f3d\u00e1s az egydimenzi\u00f3s t\u00edpussal kezd\u0151dik, majd \u00e1tt\u00e9r a t\u00f6bbarcu r\u00e9tegre. <\/p>\n<p>A t\u00f6rt\u00e9nelmi programoz\u00e1s egyik kellemetlen von\u00e1sa, hogy a legt\u00f6bb fogalom, bele\u00e9rtve a legfontosabbakat is, meghat\u00e1roz\u00e1s n\u00e9lk\u00fcl ker\u00fcl bemutat\u00e1sra. 'A programoz\u00e1si nyelv (foly\u00f3k neve) eg\u00e9sz \u00e9s lebeg\u0151 sz\u00e1mokkal rendelkezik...' - majd tov\u00e1bbgondolj\u00e1k. Mi a 't\u00edpus' (t\u00edpus) - meghat\u00e1rozni nem k\u00f6telez\u0151, mert az \u00edr\u00f3k maguk sem \u00e9rtik teljesen, \u00e9s ezt '\u00e9rthet\u0151s\u00e9g' \u00e9rdek\u00e9ben eltagadj\u00e1k. Ha szorongatj\u00e1k \u0151ket, hom\u00e1lyos \u00e9s haszontalan defin\u00edci\u00f3t adnak. Nagyon seg\u00edt elb\u00fajni a k\u00fclf\u00f6ldi szavak m\u00f6g\u00e9: a magyar szerz\u0151k sz\u00e1m\u00e1ra az angol (t\u00edpus), az angolok sz\u00e1m\u00e1ra pedig a francia (alprogram), g\u00f6r\u00f6g (polimorfizmus), latin (inkapszul\u00e1ci\u00f3) vagy ezek kombin\u00e1ci\u00f3i (ad-hoc polimorfizmus). <\/p>\n<p>De ez nem a mi sorsunk. A mi v\u00e1laszt\u00e1sunk a tiszta magyar nyelv\u0171 meghat\u00e1roz\u00e1sok. <\/p>\n<h3>K\u00e9p<\/h3>\n<p>\n<i>K\u00e9p<\/i> - ez a mennyis\u00e9g el\u0151k\u00e9pz\u0151 neve, amely meghat\u00e1rozza 1) a mennyis\u00e9g saj\u00e1tos tulajdons\u00e1gait \u00e9s 2) a m\u0171veletek kiv\u00e1laszt\u00e1s\u00e1t a mennyis\u00e9ghez. <\/p>\n<p>A 't\u00edpus' (faj) sz\u00f3nak megfelel\u0151 els\u0151 r\u00e9sz meghat\u00e1roz\u00e1sa: 'saj\u00e1tos tulajdons\u00e1gok a mennyis\u00e9ghez'. De a legfontosabb jelent\u00e9s a t\u00edpus m\u00e1sodik r\u00e9sz\u00e9ben rejlik: 'a m\u0171veletek kiv\u00e1laszt\u00e1sa a mennyis\u00e9gekhez'.<\/p>\n<p>A t\u00edpus bevezet\u00e9s\u00e9nek kiindul\u00f3pontja a C nyelvben a hagyom\u00e1nyos sz\u00e1m\u00edt\u00e1s, p\u00e9ld\u00e1ul az \u00f6sszead\u00e1s m\u0171velete. <\/p>\n<p><i>Pap\u00edralap\u00fa<\/i> matek, k\u00e9zzel feljegyezve vagy nyomtatva, nem k\u00fcl\u00f6nb\u00f6ztet l\u00e9nyegesen a sz\u00e1mok t\u00edpusai k\u00f6z\u00f6tt, \u00e1ltal\u00e1ban re\u00e1lisnak tekinti \u0151ket. ez\u00e9rt a m\u0171veleteik feldolgoz\u00e1sa egy\u00e9rtelm\u0171.<\/p>\n<p><i>G\u00e9pi<\/i> A matematika szigor\u00faan elv\u00e1lasztja a sz\u00e1mokat eg\u00e9sz \u00e9s t\u00f6rt sz\u00e1mokra. A k\u00fcl\u00f6nb\u00f6z\u0151 sz\u00e1mfajt\u00e1k elt\u00e9r\u0151en ker\u00fclnek t\u00e1rol\u00e1sra a mem\u00f3ri\u00e1ban, \u00e9s a processzor k\u00fcl\u00f6nb\u00f6z\u0151 utas\u00edt\u00e1sai dolgozz\u00e1k fel \u0151ket. P\u00e9ld\u00e1ul az eg\u00e9sz \u00e9s a t\u00f6rt sz\u00e1mok \u00f6sszead\u00e1s\u00e1t k\u00e9t k\u00fcl\u00f6nb\u00f6z\u0151 utas\u00edt\u00e1s jelenti, amelyek k\u00e9t k\u00fcl\u00f6nb\u00f6z\u0151 processzorcsom\u00f3ponthoz tartoznak. Azonban az eg\u00e9sz \u00e9s t\u00f6rt argumentumok \u00f6sszead\u00e1s\u00e1ra vonatkoz\u00f3 utas\u00edt\u00e1s nem l\u00e9tezik. <\/p>\n<p><i>Alkalmazott<\/i> matematika, m\u00e1s n\u00e9ven C nyelv, elv\u00e1lasztja a sz\u00e1mfajt\u00e1kat, de \u00f6sszekapcsolja a m\u0171veleteket: az eg\u00e9sz \u00e9s\/vagy t\u00f6rt sz\u00e1mok \u00f6sszead\u00e1sa egyetlen m\u0171veleti jellel \u00edrhat\u00f3 le.<\/p>\n<p>A fogalom vil\u00e1gos meghat\u00e1roz\u00e1sa lehet\u0151v\u00e9 teszi, hogy hat\u00e1rozottan besz\u00e9lj\u00fcnk k\u00e9t m\u00e1sik fogalomr\u00f3l: <i>mennyis\u00e9g <\/i>\u00e9s <i>m\u0171velet<\/i>. <\/p>\n<h3>Mennyis\u00e9g \u00e9s m\u0171velet<\/h3>\n<p>\n<i>Mennyis\u00e9g <\/i> \u2014 a feldolgozott sz\u00e1m.<\/p>\n<p><i>M\u0171velet<\/i> \u2014 az alapmennyis\u00e9gek (argumentumok) \u00e9rt\u00e9keinek feldolgoz\u00e1sa a v\u00e9gs\u0151 sz\u00e1m (eredm\u00e9ny) el\u0151\u00e1ll\u00edt\u00e1sa \u00e9rdek\u00e9ben. <\/p>\n<p>A mennyis\u00e9g \u00e9s a m\u0171velet \u00f6sszefon\u00f3dik. Minden m\u0171velet mennyis\u00e9g, mivel numerikus eredm\u00e9nye van. Minden mennyis\u00e9g pedig a processzorba t\u00f6rt\u00e9n\u0151 \u00e9rt\u00e9k\u00e1tvitel (vagy a processzorb\u00f3l val\u00f3 kil\u00e9p\u00e9s) eredm\u00e9nye, teh\u00e1t egy m\u0171velet eredm\u00e9nye. Ezen \u00f6sszefon\u00f3d\u00e1s ellen\u00e9re, a legfontosabb k\u00e9rd\u00e9s, hogy lehet\u0151s\u00e9g van a k\u00fcl\u00f6n\u00e1ll\u00f3 le\u00edr\u00e1sukra, m\u00e9g ha a sz\u00f3t t\u00f6bb helyen is meg kell ism\u00e9telni a sz\u00f3t\u00e1r k\u00fcl\u00f6nb\u00f6z\u0151 r\u00e9szeiben, ahogyan ez a ma3-ban t\u00f6rt\u00e9nik. <\/p>\n<p>A g\u00e9pi megk\u00f6zel\u00edt\u00e9s az \u00f6sszes, a programoz\u00f3 \u00e1ltal haszn\u00e1lt sz\u00e1mot a k\u00f6vetkez\u0151 kateg\u00f3ri\u00e1kra osztotta: <i>parancsok <\/i>\u00e9s <i>adatokat<\/i>. R\u00e9gen mindkett\u0151 pontosan sz\u00e1m volt, p\u00e9ld\u00e1ul az utas\u00edt\u00e1sokat numerikus k\u00f3dokkal \u00edrt\u00e1k. Azonban az alkalmaz\u00e1si nyelvekben az utas\u00edt\u00e1sok m\u00e1r nem sz\u00e1mokk\u00e9nt funkcion\u00e1lnak, hanem <i>szavakk\u00e9nt <\/i>\u00e9s <i>m\u0171veleti jelekk\u00e9nt<\/i>. Csak az \u201eadatok\u201d maradtak sz\u00e1mok, de nev\u00fck ilyenk\u00e9nt val\u00f3 folytat\u00e1sa nevets\u00e9ges, mert a g\u00e9pi n\u00e9z\u0151pontt\u00f3l a matematikai n\u00e9z\u0151pontra val\u00f3 \u00e1tt\u00e9r\u00e9skor a sz\u00e1mok olyan mennyis\u00e9gek, amelyek az alap (<i>adatokat<\/i>) \u00e9s a v\u00e9gs\u0151 (<i>keresett<\/i>). \u201eIsmeretlen adat\u201d \u2014 ez nevets\u00e9gesen hangzik. <\/p>\n<p>Az utas\u00edt\u00e1sok is k\u00e9tf\u00e9le m\u0171veletre oszlottak: matematikai \u00e9s seg\u00e9d. A matematikai m\u0171veletek \u2014 m\u0171veletek. A seg\u00e9dm\u0171veletekk\u00e9nt k\u00e9s\u0151bb visszat\u00e9r\u00fcnk. <\/p>\n<p>A C nyelvekn\u00e9l a megszokott pap\u00edralap\u00fa \u00e9s g\u00e9pi egys\u00e9ges, vagyis egy\u00e9rtelm\u0171 matematikai m\u0171veletek szinte teljesen t\u00f6bbsz\u00f6r\u00f6ss\u00e9 v\u00e1lnak. <\/p>\n<p>A t\u00f6bbsz\u00f6r\u00f6s m\u0171veletek \u2013 t\u00f6bb azonos nev\u0171 m\u0171velet elt\u00e9r\u0151 argumentumform\u00e1kkal \u00e9s hasonl\u00f3 jelent\u00e9s\u0171 cselekv\u00e9sekkel. <\/p>\n<p>A whole argument corresponds to a whole operation, while a fractional one corresponds to a fractional operation. This difference is particularly evident in division, where the expression 1\/2 results in 0 instead of 0.5. Such notation does not comply with the rules of paper mathematics, but the C language does not aim to adhere to them (unlike Fortran) \u2014 it plays by its own <i>practical<\/i> rules.<\/p>\n<p>In the case of mixing whole and fractional numbers, the only correct one is to <i>convert the argument values<\/i> \u2014 a selective transformation of a value from one form to another. Indeed, when adding a whole and a fractional number, the result is fractional, hence the form of the operation <i>selects <\/i>the operation of converting a whole argument into a fractional value. <\/p>\n<p>A range of operations remains not <i>multiple<\/i>, \u00e9s <i>single<\/i>. Such operations are defined only for one type of arguments: the remainder of a division \u2014 whole arguments, bitwise operations \u2014 natural wholes. The symbol 3 indicates the multiplicity of operations with signs (#^) specifying the forms for which the operation is defined. This is an important but previously overlooked property of each operation. <\/p>\n<p>All functions are arbitrary single operations. The exception consists of operators \u2014 <i>bracketless functions<\/i>, built into the language (basic operations). <\/p>\n<h3>Assistance<\/h3>\n<p>\n<i>Assistance <\/i> \u2014 a supportive action for the operation.<\/p>\n<p>If we consider the operation as the main action, we can identify two accompanying actions that ensure the operation and differ from it. These are 1) variable control and 2) subordination. This action is called <i>assistance.<\/i>.<\/p>\n<p>Here we should digress and separately address Russian translations of programming textbooks. In the K\/R text for recording actions, a new word was introduced <i>statement <\/i>which attempted to separate the concept of a machine command into different actions: 1) operation, 2) declaration, and 3) subordination (termed 'control structures'). This attempt was buried by Russian translators, replacing 'statement' with the word 'operator', which:<\/p>\n<ol>\n<li>became a synonym for the machine word 'command', <\/li>\n<li>turned out to be synonymous with the phrase 'action sign',<\/li>\n<li>and also acquired an unlimited number of additional meanings. In other words, it turned into a semblance of the English article 'uhhhh...'. <\/li>\n<\/ol>\n<p>\nLet's consider the accompanying actions, or <i>assistance.<\/i>.<\/p>\n<h4><i>Variable control.<\/i> <\/h4>\n<p>\n<i>Variable control.<\/i> (UP) \u2014 v\u00e1ltoz\u00f3cell\u00e1k l\u00e9trehoz\u00e1sa\/elt\u00e1vol\u00edt\u00e1sa. <br \/>\nAz UP implicit m\u00f3don t\u00f6rt\u00e9nik, amikor egy v\u00e1ltoz\u00f3 deklar\u00e1l\u00e1sra ker\u00fcl, ami m\u00e1r egy m\u00e1sik okb\u00f3l t\u00f6rt\u00e9nik \u2014 a mennyis\u00e9g megad\u00e1s\u00e1ra. Csak egyf\u00e9le t\u00edpus van, amit a f\u00fcggv\u00e9nyek kezelnek. <i>kieg\u00e9sz\u00edt\u0151 v\u00e1ltoz\u00f3k<\/i> a malloc() \u00e9s free() f\u00fcggv\u00e9nyek seg\u00edts\u00e9g\u00e9vel. <\/p>\n<p>Meg kell eml\u00edteni, hogy az implicit m\u0171veletek k\u00e9nyelmesebbek az \u00edr\u00e1s szempontj\u00e1b\u00f3l, mivel egy\u00e1ltal\u00e1n nem ig\u00e9nyelnek semmif\u00e9le \u00edr\u00e1st, de nehezebbek a meg\u00e9rt\u00e9s szempontj\u00e1b\u00f3l \u2014 nehezen sz\u00e1m\u00edthat\u00f3k \u00e9s \u00e9rtelmezhet\u0151k. <\/p>\n<h4><i>Al\u00e1rendel\u00e9s<\/i><\/h4>\n<p>\n<i>Al\u00e1rendel\u00e9s <\/i> \u2014 r\u00e9tegelt szakaszok csatlakoztat\u00e1sa\/lev\u00e1laszt\u00e1sa. <\/p>\n<p>A C nyelv egy, az assemblernt\u0151l elt\u00e9r\u0151, alkalmaz\u00e1s orient\u00e1lt m\u00f3dot k\u00edn\u00e1lt a tev\u00e9kenys\u00e9gek sorrendj\u00e9nek kezel\u00e9s\u00e9re \u2014 az al\u00e1rendel\u00e9s. Ez visszat\u00fckr\u00f6zi \u00e9s fejleszti a besz\u00e9lt al\u00e1rendelt mondatot egy\u00e9rtelm\u0171 elv\u00e1laszt\u00e1ssal a f\u0151 r\u00e9sz (al\u00e1rendelt mondat) \u00e9s a mell\u00e9ksz\u00f6veg (alprogram\/r\u00e9szletek) k\u00f6z\u00f6tt. <\/p>\n<p>Az al\u00e1rendel\u00e9s \u00e9s a deklar\u00e1ci\u00f3 teljesen azon a fogalmon alapul, hogy <i>r\u00e9teg<\/i>. <\/p>\n<h3>A r\u00e9teg<\/h3>\n<p>\n<i>A r\u00e9teg <\/i> \u2014 egy korl\u00e1tozott, egyszint\u0171 kiv\u00e1laszt\u00f3 kifejez\u00e9s halmaz. <\/p>\n<p>A r\u00e9teg ny\u00edltan \u00e9s implicit m\u00f3don sz\u00e1mos feladat ell\u00e1t\u00e1s\u00e1t v\u00e1llalta: <\/p>\n<ol>\n<li>a program rendezetts\u00e9ge,<\/li>\n<li>a nevek l\u00e1that\u00f3s\u00e1g\u00e1nak korl\u00e1toz\u00e1sa (implicit m\u00f3don),<\/li>\n<li>v\u00e1ltoz\u00f3k (mem\u00f3riacell\u00e1k) kezel\u00e9se (implicit m\u00f3don),<\/li>\n<li>mell\u00e9kelt r\u00e9szletek meghat\u00e1roz\u00e1sa az al\u00e1rendel\u00e9shez,<\/li>\n<li>funkci\u00f3k \u00e9s gy\u0171jtem\u00e9nyek meghat\u00e1roz\u00e1sa \u00e9s egy\u00e9b. <\/li>\n<\/ol>\n<p>\nA g\u00e9pi nyelvekben nem l\u00e9tezett a r\u00e9teg fogalma, ez\u00e9rt a K\/R-ben sem jelent meg, \u00e9s ha ott nem volt, akkor ut\u00f3lagos bevitele a tov\u00e1bbi k\u00f6nyvekbe eretneks\u00e9gnek \u00e9s szabadgondolkod\u00e1snak sz\u00e1m\u00edtott. Teh\u00e1t a r\u00e9teg fogalma egy\u00e1ltal\u00e1n nem jelent meg, b\u00e1r rendk\u00edv\u00fcl hasznos \u00e9s teljesen nyilv\u00e1nval\u00f3. <\/p>\n<p>R\u00e9teg n\u00e9lk\u00fcl sok cselekv\u00e9st \u00e9s a program szab\u00e1lyait r\u00f6viden \u00e9s vil\u00e1gosan elmagyar\u00e1zni lehetetlen. P\u00e9ld\u00e1ul, hogy mi\u00e9rt rossz a h\u00e1romfill\u00e9res goto, m\u00edg a bonyolult while j\u00f3. Csak tehetetlen\u00fcl lehet szitkoz\u00f3dni, ahogy Dijkstra tette (\"a programoz\u00f3k k\u00e9pes\u00edt\u00e9se \u2014 egy funkci\u00f3, amely visszafel\u00e9 f\u00fcgg a goto utas\u00edt\u00e1sok el\u0151fordul\u00e1s\u00e1nak gyakoris\u00e1g\u00e1t\u00f3l a programjaikban\". R\u00f6viden, csak a bunk\u00f3k haszn\u00e1lj\u00e1k a goto-t. A megalapoz\u00e1s szintje \u2014 Isten.) Igaz, ez nem olyan r\u00e9miszt\u0151, ha a k\u00f6nyveidnek egy\u00e1ltal\u00e1n nem kell semmit magyar\u00e1zniuk, de, ahogy m\u00e1r mondtuk, ez nem a mi sorsunk. <\/p>\n<p>Egy\u00e9bk\u00e9nt felt\u00e9telezhet\u0151, hogy Dennis Ritchie a goto kifejez\u00e9st pontosan az\u00e9rt hagyta meg, mint egy kulcsot egy n\u00e9vtelen fogalom keres\u00e9s\u00e9re, mert nem volt sz\u00fcks\u00e9g vagy sz\u00e9ps\u00e9g a goto kifejez\u00e9sre. Viszont sz\u00fcks\u00e9g volt egy egyszer\u0171 \u00e9s \u00e9rthet\u0151 magyar\u00e1zatra az \u00faj nyelvi elvekr\u0151l, amelyeket Ritchie maga nem akart megadni, \u00e9s amelyek \u00e9ppen a fogalomra \u00e9p\u00fclnek. <i>r\u00e9teg<\/i>. <\/p>\n<h3>Elt\u00e9r\u00e9s<\/h3>\n<p>\n<i>Elt\u00e9r\u00e9s <\/i> \u2014 a \u00faj n\u00e9v szok\u00e1sos tulajdons\u00e1gainak megv\u00e1ltoz\u00e1sa. <\/p>\n<p>A legfontosabb elt\u00e9r\u00e9s \u00e9ppen a program r\u00e9tegzett tulajdons\u00e1gaihoz kapcsol\u00f3dik, \u00e9s egy sz\u00f3val \u201estatikus\u201d jellemzi, amelynek a r\u00e9tegek k\u00fcl\u00f6nb\u00f6z\u0151 jelent\u00e9sei vannak. <\/p>\n<h2>5. FEJEZET. Az alkalmaz\u00e1si nyelvek k\u00f6z\u00f6ss\u00e9ge<\/h2>\n<p>\nAz alkalmaz\u00e1si nyelvek \u2014 <i>k\u00e9pviseleti <\/i>nyelvek (k\u00e9p alap\u00fa, \u201etipiz\u00e1lt\u201d). Ezek nyilv\u00e1nos vagy implicit k\u00e9p haszn\u00e1lat\u00e1n alapulnak. R\u00e1ad\u00e1sul itt \u00fajra megjelenik a ellentmond\u00e1s: a ny\u00edlt k\u00e9p \u2014 k\u00f6nnyebben \u00e9rthet\u0151, de kev\u00e9sb\u00e9 k\u00e9nyelmes, \u00e9s ford\u00edtva. <\/p>\n<p><img decoding=\"async\" alt=\"Matrjoshka C. A programnyelv r\u00e9teges rendszere\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(A t\u00e1bl\u00e1zat form\u00e1z\u00e1s\u00e1t m\u00e9g nem sz\u00e1ll\u00edtott\u00e1k, ez\u00e9rt a t\u00e1bl\u00e1zat k\u00e9pk\u00e9nt van megadva.)<\/i><\/p>\n<p>A C ut\u00e1ni fejl\u0151d\u00e9s az alkalmaz\u00e1si nyelvekben a k\u00e9pviselet n\u00f6vel\u00e9s\u00e9nek ir\u00e1ny\u00e1ba haladt. A legfontosabb a magas szint\u0171 k\u00e9pviselet meg\u00e9rt\u00e9s\u00e9ben a C k\u00f6zvetlen lesz\u00e1rmazottja \u2014 a C++ nyelv. Ez fejleszti az \u00f6tletet, hogy tetsz\u0151leges m\u0171veleteket rendelnek a mennyis\u00e9gekhez, \u00e9s megval\u00f3s\u00edtja azt a C nyelv\u0171 kifejez\u00e9s alapj\u00e1n, amely \u00faj nevet kapott \u2014 objektum. Azonban a C++ nem olyan r\u00f6vid \u00e9s kifejez\u0151, mint a C, a k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa m\u0171veletek \u00e9s a vel\u00fck kapcsolatos szab\u00e1lyok t\u00falterhelts\u00e9ge miatt. Egy sz\u00f3t eml\u00edts\u00fcnk a \u201et\u00falterhel\u00e9sr\u0151l\u201d. <\/p>\n<h3>T\u00falterhel\u00e9s \u00e9s polimorfizmus <\/h3>\n<p>\nA \u201et\u00falterhel\u00e9s\u201d (overload) sz\u00f3 \u2014 egy elavult g\u00e9pi megk\u00f6zel\u00edt\u00e9s ut\u00e1ni kifejez\u00e9s, amely a <i>t\u00f6bbsz\u00f6r\u00f6s m\u0171veletek l\u00e9trehoz\u00e1s\u00e1ra utal.<\/i>. <\/p>\n<p>A g\u00e9pi (rendszerszint\u0171) programoz\u00f3k <i>t\u00f6bbsz\u00f6r\u00f6ss\u00e9ge <\/i>a m\u0171veletek teljesen irrit\u00e1lhatja: \u201eMit jelent ez a jel (+): eg\u00e9sz sz\u00e1mok \u00f6sszead\u00e1s\u00e1t, t\u00f6rt sz\u00e1mok \u00f6sszead\u00e1s\u00e1t, vagy egy\u00e1ltal\u00e1n eltol\u00e1st?! A mi id\u0151nkben nem \u00edgy \u00edrt\u00e1k!\u201d Innen sz\u00e1rmazik a v\u00e1lasztott sz\u00f3 negat\u00edv \u00e1rnyalata (\u201ezavar\u00e1s\u201d, \u201eunalom\u201d). Az alkalmaz\u00e1si programoz\u00f3k sz\u00e1m\u00e1ra a t\u00f6bbsz\u00f6r\u00f6s m\u0171veletek \u2014 a C nyelv alapk\u00f6ve, legfontosabb v\u00edvm\u00e1nya \u00e9s \u00f6r\u00f6ks\u00e9ge, annyira term\u00e9szetesek, hogy gyakran nem is tudatosulnak. <\/p>\n<p>A C++ nyelvet <i>t\u00f6bbsz\u00f6r\u00f6ss\u00e9ge<\/i> A kiterjed\u00e9s nemcsak az alapm\u0171veletekre vonatkozik, hanem a funkci\u00f3kra is \u2013 legyenek azok k\u00fcl\u00f6n\u00e1ll\u00f3ak vagy oszt\u00e1lyokba t\u00f6m\u00f6r\u00edtve. A sz\u00e1mos m\u00f3dszer megjelen\u00e9s\u00e9vel lehet\u0151s\u00e9g ny\u00edlt azok fel\u00fclb\u00edr\u00e1l\u00e1s\u00e1ra kib\u0151v\u00edtett oszt\u00e1lyokban, ami hom\u00e1lyosan \u201epolimorfizmusnak\u201d lett nevezve. A polimorfizmus \u00e9s a t\u00falterhel\u00e9s kombin\u00e1ci\u00f3ja robban\u00e9kony elegyet alkotott, amelyb\u0151l k\u00e9tf\u00e9le polimorfizmus sz\u00fcletett: az \u201eigazi\u201d \u00e9s az \u201ead-hoc\u201d. Ezt csak a megnevezett c\u00edmek ellen\u00e9re lehet meg\u00e9rteni. A k\u00fclf\u00f6ldi nevekkel van kik\u00f6vezve az \u00fat az ad c\u00edm\u0171h\u00f6z. <\/p>\n<p>A \u201et\u00falterhel\u00e9s\u201d t\u00edpus\u00fa nyilatkozatot jobban kifejezheti a <i>kib\u0151v\u00edt\u0151 nyilatkozat <\/i> \u2013 amely \u00faj, azonos nev\u0171 funkci\u00f3t ad hozz\u00e1, m\u00e1s alak\u00fa argumentumokkal. <\/p>\n<p>A \u201epolimorfizmus\u201d t\u00edpus\u00fa nyilatkozatot jobban nevezhetn\u00e9nk <i>\u00fajra nyilatkozat<\/i> \u2013 amely ugyanazon nev\u0171 funkci\u00f3 fel\u00fclb\u00edr\u00e1l\u00e1sa egy \u00faj kiterjeszt\u0151 r\u00e9tegben, azonos alak\u00fa argumentumokkal. <\/p>\n<p>\u00cdgy k\u00f6nnyen meg\u00e9rthet\u0151, hogy az azonos nev\u0171 m\u00f3dszerek k\u00fcl\u00f6nb\u00f6z\u0151 alakok eset\u00e9n <i>kib\u0151v\u00edtettek<\/i>, m\u00edg egy alak eset\u00e9n <i>fel\u00fclb\u00edr\u00e1l\u00e1sra ker\u00fclnek.<\/i>. <\/p>\n<p>A magyar szavak megoldj\u00e1k. <\/p>\n<h3>Felk\u00e9sz\u00fcl\u00e9si p\u00e1lya<\/h3>\n<p>\nA magasan absztrakt nyelvek fogalmainak megfontol\u00e1sa meger\u0151s\u00edti az alapvet\u0151 fogalmak pontos megfogalmaz\u00e1s\u00e1nak fontoss\u00e1g\u00e1t. A j\u00f3l le\u00edrt C nyelvvel a magasan absztrakt nyelvek tanul\u00e1sa k\u00f6nny\u0171 \u00e9s kellemes lesz. <\/p>\n<p>Ez k\u00fcl\u00f6n\u00f6sen fontos a <i>rejtett magasan absztrakt nyelvek<\/i> (PHP, JavaScript) eset\u00e9ben. Sz\u00e1mukra az objektumok (\u00f6sszetett alakok) jelent\u0151s\u00e9ge m\u00e9g a C++-n\u00e1l is nagyobb\u00e1 v\u00e1lik, viszont az alak fogalma rejtett\u00e9 \u00e9s nehezen megfoghat\u00f3v\u00e1 v\u00e1lik. K\u00e9nyelmi szempontb\u00f3l egyszer\u0171bb\u00e9 v\u00e1ltak, de a meg\u00e9rt\u00e9s szempontj\u00e1b\u00f3l bonyolultabb\u00e1. <\/p>\n<p>Ez\u00e9rt a programoz\u00e1si nyelvek tanulm\u00e1nyoz\u00e1s\u00e1t a C nyelvvel kell kezdeni, \u00e9s a C csal\u00e1d nyelvein kereszt\u00fcl kell folytatni. <\/p>\n<p>Ugyanez igaz a nyelvek le\u00edr\u00e1s\u00e1ra is. K\u00fcl\u00f6nb\u00f6z\u0151 nyelvek megegyez\u0151, vagy kisebb egys\u00e9gfajt\u00e1kkal b\u00edrnak, mint a C nyelv. A fajt\u00e1k \u00e9s p\u00e9ld\u00e1k sz\u00e1ma elt\u00e9rhet mindk\u00e9t ir\u00e1nyban: a C++-ban t\u00f6bb fajta van, mint a C-ben, a JavaScript-ben pedig kevesebb. <\/p>\n<p>K\u00fcl\u00f6n eml\u00edt\u00e9st \u00e9rdemel a MySQL nyelv. \u00dagy t\u0171nhet, hogy semmi k\u00f6ze nincs, de kiv\u00e1l\u00f3an le\u00edrhat\u00f3 a Matryoshk\u00e1n, \u00e9s a vele val\u00f3 megismerked\u00e9s gyorsabb\u00e1 \u00e9s egyszer\u0171bb\u00e9 v\u00e1lik. Ami fontos, figyelembe v\u00e9ve a weben bet\u00f6lt\u00f6tt jelent\u0151s\u00e9g\u00e9t \u2014 a modern programoz\u00e1s f\u0151 \u00fatj\u00e1t. Ahol MySQL, ott m\u00e1s SQL is. Valamint a t\u00f6bbi fortranok, pascalok, pythonok is le\u00edrhat\u00f3k a Matryoshk\u00e1n, amint eljutunk hozz\u00e1juk. <\/p>\n<p>\u00d6t nagy feladat v\u00e1r r\u00e1nk \u2013 a C nyelv alkalmazott le\u00edr\u00e1sa \u00e9s az azt k\u00f6vet\u0151 nyelvek egys\u00e9ges le\u00edr\u00e1sa. \u201eC\u00e9ljaink vil\u00e1gosak, a feladatok meghat\u00e1rozottak. Dolgozni kezdj\u00fcnk, elvt\u00e1rsak! (L\u00e1zas, hosszan tart\u00f3 taps, ami ov\u00e1ci\u00f3ba csap \u00e1t. Mindenki fel\u00e1ll.)\u201d <\/p>\n<p>V\u00e9lem\u00e9nyeiket nagy figyelemmel fogjuk meghallgatni, seg\u00edts\u00e9g\u00fcket a Matryoshka webhely\u00e9nek l\u00e9trehoz\u00e1s\u00e1ban nagy h\u00e1l\u00e1val fogadjuk. R\u00e9szletesebb inform\u00e1ci\u00f3k a k\u00f6nyvr\u0151l a C Matryoshka-bab\u00e1ban rejt\u0151zk\u00f6d\u0151 weboldalon tal\u00e1lhat\u00f3k.<br \/>\n<br \/>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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 Matryoshka. A programnyelv r\u00e9teges rendszere | ProHoster","description":"Pr\u00f3b\u00e1ljuk meg a k\u00e9mi\u00e1t a Mendeljejev-f\u00e9le peri\u00f3dusos rendszer (1869) n\u00e9lk\u00fcl elk\u00e9pzelni.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}