přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Úvod a história (1)

Programovanie v jazyku C++: Úvod a história (1)

cplusplus.png

Tento článok bude prvým dielom seriálu o programovacom jazyku C++. Dnes si povieme, na čo slúži programovací jazyk C++, niečo o jeho histórii a možnostiach.


Filozofia jazyka

Jazyk C++ má v sebe tri rozdielne filozofie písania kódu. Prvou filozofiou je štrukturované programovanie, druhou objektovo orientované programovanie a treťou je generické programovanie (programovanie na základe predlôh podporované šablónami jazyka C++).

Syntax jazyka C++ je prebraná z jazyka C. Jazyk C++ je veľmi podobný jazyku C, avšak je rozšírený o objektovo-orientované a generické programovanie. Na to, aby ste sa naučili jazyk C++ je potrebné vedieť štandard syntaxe jazyka C. Tam sú prítomne základné typy, riadiace štruktúry, operátory, syntaktické pravidla.

Otázkou je, čí je lepšie sa naučiť jazyk C a potom prejsť na jazyk C++. Na to neexistuje jednoznačná odpoveď, ale veľa autorov rôznych programátorských kníh tvrdí, že lepšie je sa hneď vrhnúť na jazyk C++, pretože prechod z jazyka C na C++ nemusí byť hladký.

Môžu nastať zle programátorské návyky pri programovaní v jazyku C. V jedno som ale zajedno – treba hlavne veľa programovať a snažiť sa zdokonaľovať algoritmické myslenie, syntax rôznych jazykov je potom len „brnkačka“.

Vznik programovacích techník vedúce až k jazyku C++

Prvé elektronické počítače sa objavili počas obdobia druhej svetovej vojny. Od vtedy sa počítače začali rýchlo šíriť po celom svete. Najprv pracovali programátori so strojovým kódom. Strojový kód obsahoval len primitívne inštrukcie tak, ako tomu rozumel procesor počítača. Tieto inštrukcie boli tvorené nulami a jedničkami.

Vývoj smeroval k vzniku jazykom vyššej úrovne(v porovnaní so strojovými jazykmi), ako jazyk Basic či COBOL. Tieto jazyky vyznávali procedurálne programovanie. Už netrebalo prácne si pamätať jednotlivé inštrukcie z núl a jedničiek, kód bol zložený z anglicky sa podobajúcim slovám a vetám a môžeme povedať, že tu sa začína zrod programovacích jazykov, také aké ich v súčasnosti poznáme.

Slová a vety z Basicu a COBOLU boli preložené do strojového jazyka pomocou interpretov a kompilátorov. Interpret programu preloží kód pri čítaní a mení slovné inštrukcie do jednotlivých akcii. Napríklad inštrukcia  Premenna = 10 priradí premennej hodnotu 10. Miesto písania núl a jedničiek postačí vedieť slovné konštrukcie a jednoducho tvoriť programy pre počítač. Interpret to robí za pochodu čítania inštrukcii.

Kompilátor ale miesto krok po kroku (interpret) preloží celý kód do objektového súboru, ktorý ale nie je spustiteľný. Tomuto kroku nazývame kompilácia. Následne kompilátor spustí linker, ktorý objektový súbor prevedie do spustiteľného programu.

Poďme porovnať kompilátor s interpretom. S interpretom sa ľahšie pracuje, pretože interpret spracúvava inštrukciu za inštrukciou a hneď ju prevedie do strojovej podoby. V súčasnosti väčšinu interpretovaných programov označujeme ako skripty a interpret nazývame ako skriptove jadro. V programovacom jazyku Java nazývame interpret virtuálnym strojom. Vo Visual Basicu behovou knižnicou.

Virtuálny stroj Javy ovšem už dávno nie je prostým interpretom. Podporuje dynamickú kompiláciu rôznych častí kódu a ich optimalizáciu podľa cieľovej platformy.

Aké sú výhody kompilátora? Síce prináša krok naviac, keďže musí skompilovať zdrojový kód na objektový súbor a z neho vytvoriť spustiteľný súbor. Avšak, skompilované programy bežia rýchlejšie ako interpretované.

Treba si uvedomiť, že požiadavka kompilácie nastane len raz. Po nej ostane objektový súbor, ktorý je zrozumiteľný pre počítač a spustiteľný súbor, ktorý je možne spustiť na každej procesorovej i softvérovej platforme. Interpretované programy stále potrebujú interpret, skompilovaný spustiteľný program je už všade k dispozícii.

Eduard Boldižár

Eduard Boldižár, 02. March

Programovanie v jazyku C++: Pointer ako návratová hodnota funkcie (2)

Keď budete chcieť vrátiť pointer ako návratovú hodnotu funkcie, tak musíte myslieť na jednú dôležitú...


Eduard Boldižár

Eduard Boldižár, 04. November

Programovanie v jazyku C++: Pointer ako návratová hodnota funkcie

Funkcie môžu vrátiť premenné typu int, float či string. Môžu však funkcie vrátiť pointer, čiže adresu...


Eduard Boldižár

Eduard Boldižár, 21. June

Programovanie v jazyku C++: Pointery ukazujúce na funkcie

Vedeli ste, že pointery môžu ukazovať nielen na rôzne typy premenných, ale aj na funkcie? Ukážeme...


Eduard Boldižár

Eduard Boldižár, 05. February

Programovanie v jazyku C++: Pointery – Tipy a triky (4)

Máme niekoľko možností kombinácie pointerovej aritmetiky a dereferenčného operátora. Okrem ukážok si o...


Eduard Boldižár

Eduard Boldižár, 06. December

Programovanie v jazyku C++: Pointery – Pointerová aritmetika (3)

Naučte sa vytvoriť odkaz (pointer) na vaše vytvorené pole. Zoznámte sa s problematikou pointerovej aritmetiky a...


Eduard Boldižár

Eduard Boldižár, 19. October

Programovanie v jazyku C++: Pointery – Deklarácia pointerov (2)

Naučte sa deklarovať pointery. V článku si podrobne ukážeme rozdiel medzi adresou a hodnotou premennej, čo je...


Eduard Boldižár

Eduard Boldižár, 19. September

Programovanie v jazyku C++: Pointery – úvod (1)

Tento článok slúži ako úvod k problematike pointerov. Základom pre pochopenie využitia pointerov je...


Eduard Boldižár

Eduard Boldižár, 30. July

Programovanie v jazyku C++: Rekurzívne funkcie

Naučte sa využívať rekurzívne funkcie, vďaka ktorým môžete ušetriť nemálo času a kódu pri vývoji a...


Eduard Boldižár

Eduard Boldižár, 11. May

Programovanie v jazyku C++: Tvorba funkcii (2)

Naučte sa pracovať s návratovou hodnotou funkcii. Uvidíte aj implementáciu faktoriálu s využitím funkcie.


Eduard Boldižár

Eduard Boldižár, 18. April

Programovanie v jazyku C++: Tvorba funkcii (1)

Článok vás uvedie do oblastí tvorby vlastných funkcii. Pochopíte význam a syntax funkcie a dozviete sa o...


Eduard Boldižár

Eduard Boldižár, 09. April

Programovanie v jazyku C++: knižnica string – funkcie substr a pop_back

V záverečnom dieli z minicyklu o knižnice string si povieme o funkciách substr a pop_back.


Eduard Boldižár

Eduard Boldižár, 22. February

Programovanie v jazyku C++: Knižnica string – funkcia replace

Nahradiť časť reťazca inou časťou reťazca? V knižnici string sa nachádza funkcia replace, ktorá nám...


Eduard Boldižár

Eduard Boldižár, 25. January

Programovanie v jazyku C++: Knižnica string – funkcia insert

V tomto článku si predstavíme funkciu insert . Zároveň sa naučíte s funkciou insert pracovať a ukážeme...


Eduard Boldižár

Eduard Boldižár, 04. January

Programovanie v jazyku C++: Knižnica string – funkcie back, front a push_back

Ďalšia časť o knižnici string a jej podporovaných funkciách. Tentoraz sa pozrieme na funkcie back, front...


Eduard Boldižár

Eduard Boldižár, 22. December

Programovanie v jazyku C++: funkcie rbegin, cbegin, crbegin a rend, cend, crend

V tomto článku si preberieme viacero funkcii, ale nebojte sa, ide len o deriváty funkcie begin a end s...


Procedurálne/štrukturované programovanie a jazyk C

Jazyk C sa zaslúžil o vytvorenie veľmi rýchlych programov, ktoré boli schopné rýchlo komunikovať s hardvérom. Dovtedy bolo skoro nemožné komfortne riadiť komunikačné porty či ovládače disku. Jedine pomocou strojového kódu.

Začalo sa to v 70 rokoch, keď Dennis Ritchie z Bellových laboratórii pracoval na vývoji operačného systému UNIX.  Operačný systém definujeme ako nejakú sadu programov, ktoré spravujú hardvér i softvér a komunikujú s užívateľom. Napríklad, operačný systém vyšle výzvu, či spustiť nejaký program a užívateľ buď súhlasí alebo nie. Ak súhlasí, tak spustí dotyčný program.

Tu pri operačných systémoch je potrebná veľká dávka abstrakcie. Preto bola iniciatíva vyvinúť programovací jazyk, ktorý by vytváral rýchle programy, mal istú abstraktnú úroveň a zároveň, aby účinne riadil hardvér na najnižšej úrovne a taktiež, aby bol priehľadný pre programátorov.

Doterajšie asemblery riešili tento problém, avšak nevýhodou bolo, že čo iná platforma procesora, to iný asembler. Tým, že asembler je strojovo-orientovaný jazyk, bol silne závislý na type procesora. Každý typ procesora mal svoj asembler.

A ani procedurálne programovanie na túto úlohu nestačilo. Projekt UNIX ale predpokladal, že bude funkčný pre rôzne typy počítačov. Vznikla tak požiadavka vyvinúť vyšší programovací jazyk. Úlohou vyšších programovacích jazykov nebola orientácia na určitý hardvér, ale riešenie problémov. Silne s tým súvisí rozvoj istého stupňa abstrakcie.

Jazyk C je prvým jazykom, ktorý spája výhodu prístupu hardvéru na nízkej úrovne a prenosíteľnosti na rôzne typy počítačov a riešil i problémy procedurálneho programovania.

O prenositeľnosť sa staral kompilátor. Kompilátor, ako sme si hovorili, preloží zdrojový kód do strojového kódu, ktorému porozumie procesor. Aké jednoduché, spustiť kompilátor je možne v rôznych typoch počítačov a strojový kód, ktorý je i tak nespustiteľny, je vytvorený na mieru procesora. Linker sa už len postará o spustiteľnosť programu.

Procedurálne programovanie sa zameriava hlavne na algoritmus programu. Program môžeme chápať ako recept pre počítač. Máme tu sadu inštrukcii, ktorú má počítač vykonať. Algoritmy (čiže recepty) sú alfou-omegou procedurálneho programovania.

Procedurálne programovanie fungovalo na základe premisie, že sme kontrolovali ktorá funkcia vola  ďalšiu funkciu a u ktorých dát došlo k zmene. Typickými predstaviteľmi procedurálneho programovania boli jazyk Basic a Fortran.

Čím sa stavali programy zložitejšie, prichádzali problémy. Pri veľmi dlhých zdrojových kódoch, kde bolo veľa funkcii a prehľadnosť sa strácala, byť len zmeniť jednu funkciu bolo utrpením.

Taktiež procedurálne programovanie používalo príkazy skoku, ich úlohou bolo zmeniť vykonávanie programu z iného miesta v kóde. Príkazy skoku realizovali cykly či podmienky.

Jazyk C priniesol spásu doterajších problémov. Štrukturované programovanie prináša len malú množinu príkazov (cykly for, while, do-while a podmienky if-else), ktoré nahradzujú príkazy skoku.

Ďalším dôvtipným rysom štrukturálneho programovania bol beh programu zhora nadol a to veľmi výrazne spriehľadnil zdrojový kód pre programátorov.

V jazyku C je napísaná drvivá väčšina kódu linuxového jadra. Stále sa často využíva aj v mnohých ďalších softvérových projektoch, napriek nástupu C ++ a mnohých ďalších jazykov.

Objektovo orientovaný prístup

V ďalšej častí sa dozviete o potrebe objektovo orientovaného prístupu a príbeh vzniku jazyka C++.

Nahoru

Příspěvky

Programovanie v jazyku C++: Úvod a história (1)
pravopis 7. 04. 2016, 07:57:13
Odpovědět  Odkaz 
prenosíteľnosti - prenositeľnosti
vola - volá
premisa - premisy
Programovanie v jazyku C++: Úvod a história (1)
Tomo 8. 04. 2016, 19:54:39
Odpovědět  Odkaz 
Proč další seriál o C++? Všude jich je spousta, obsah je u všech mizerný a skončí u vypisování řetězců na stdout. Tento dopadne úplně stejně.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz