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.
-
Programovanie v jazyku C++: Stream cout
V tomto článku si rozoberieme stream cout, ktorý sa využíva na výstup programu. Okrajovo spomenieme aj funkciu printf() , s ktorou sú céčkári určite oboznámený.
-
Programovanie v jazyku C++: Hlavičkové súbory
V minulom diele sme si niečo povedali o funkcii main() a ďalších zaujímavostí. Tento článok sa bude zameriavať na tematiku hlavičkových súborov, priestoru mien, komentárov a zakončíme to znakom nového riadku.
-
Programovanie v jazyku C++: Funkcia main()
V tomto článku začneme vysvetľovať základné piliere potrebné pri programovaní v jazyku C++. Predstavíme si veľmi dôležitú funkciu main() a ďalšie nutné príkazy, o ktorých by ste mali vedieť.
-
Programovanie v jazyku C++: Kompilovanie programov
V tomto článku sa pozrieme na dôležite body pri vytváraní zdrojových kódov a ukážeme si, ako kompilovať súbory jazyka C++. Vedieť kompilovať je základnou zručnosťou, ktorú treba vedieť pri práci s jazykom C++.
-
Programovanie v jazyku C++: Úvod a história (2)
V tomto článku pokračujeme v rozprávaní o histórii programovacieho jazyka C++.
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++.