C++: Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
AvocatoBot (diskusia | príspevky)
d r2.7.1) (robot Zmenil: hy:C++
Aktualizácia vzhľadom k C++11, oprava niekoľkých chýb.
Riadok 3:
Druh = viacparadigmový |
Interpretovaný = nie |
Dátum vzniku = 1985, naposledy upravený 2003v 2011 |
Tvorca = [[Bjarne Stroustrup]]|
Typová kontrola = silná, statická, nie bezpečná |
Riadok 14:
'''C++''' je viacparadigmový [[programovací jazyk]] vyššej úrovne na všeobecné použitie, ktorý umožňuje pracovať aj s prostriedkami nízkej úrovne. Má [[statická typová kontrola|statickú typovú kontrolu]], podporuje procedurálne programovanie, dátovú abstrakciu, objektovo orientované programovanie, ale aj generické programovanie. Od 90-tych rokov 20. storočia patrí k najpopulárnejším programovacím jazykom, požíva ho až vyše 95% engine-ov počítačových hier.
 
[[Bjarne Stroustrup]] vyvinul C++ (pôvodne nazvaný "''C with Classes''") v roku 1983 v [[Bell Labs]] ako rozšírenie [[C (programovací jazyk)|jazyka C]]. Rozširovanie začalo pridaním tried a neskôr pokračovalo pridávaním ďalších vlastností ako sú [[virtuálna funkcia|virtuálne funkcie]], prekrývanie operátorov, [[viacnásobná dedičnosť]], šablóny a [[ošetrenie výnimky|ošetrenie výnimiek]]. Štandard jazyka C++ bol schválený v roku 1998 ako ''[[ISO/IEC 14882]]:1998'', aktuálna verzia je z roku 2003 (''ISO/IEC 14882:2003''). Nová verzia štandardu (neformálne známa pod označením '''[[C++11]]''' alebo '''[[C++0x]]''') sabola schválená v auguste vyvíja2011.
 
== Dejiny ==
Ešte v roku [[1979]] Stroustrup začal pracovať na ''C with Classes'' (C s triedami). Pri tvorbe nového jazyka vychádzal zo skúseností z dizertačnej práce. Stroustrup zistil, že niektoré črty [[Simula|Simuly]] by boli mimoriadne užitočné pri vývoji veľkých softvérových produktov, ale Simula je príliš pomalá na praktické používanie, zatiaľ čo [[BCPL]] je rýchle, ale príliš nízko-úrovňové a nevhodné na vývoj väčších projektov. Keď Struostrup začínal pracovať pre [[Bell Labs]] jeho úlohou bolo analyzovať [[unix]]ové [[Kernel|jadro]] s prihliadnutím na distribuované výpočty. Využijúc skúsenosti z dizertačnej práce smeroval k rozšíreniu jazyka C o črty aké mala Simula. Jazyk C si vybral kvôli jeho zameraniu na všeobecné použitie, rýchlosti a [[portabilitaPortovanie|portabiliteprenositeľnosti]]. Okrem jazykov C a Simula ho inšpirovali aj jazyky [[ALGOL 68]], [[Ada (programovací jazyk)|Ada]], [[CLU]] a [[ML]]. Postupne pridával triedy, dedičnosť tried, silnú typovú kontrolu, inline funkcie a štandardné hodnoty parametrov do jazyka C pomocou nástroja [[Cfront]]. Prvú štandardnú verziu vydal v októbri 1985.<ref name="invention">{{cite web|url=http://public.research.att.com/~bs/bs_faq.html#invention|title=Bjarne Stroustrup's FAQ - When was C++ invented?|accessdate=2006-05-30}}</ref>
 
V roku 1983 sa zmenil názov jazyka z ''C with Classes'' na C++. Pribúdali nové črty ako virtuálne funkcie, preťažovanie funkcií a operátorov, referencie, konštantné premenné, práca s [[Zreťazená voľná pamäť|haldou]], zlepšená typová kontrola a nový štýl komentárov na jeden riadok zapísaný pomocou dvoch lomiek (//). Keď bola v roku 1985 vydaná prvá verzia ''programovacieho jazyka C++'' poskytovala dôležité odkazy na jazyk, ktoré sa ale ešte nestali oficiálnym štandardom. V roku 1989 vyšla verzia jazyka 2.0. Novými vlastnosťami boli viacnásobná dedičnosť, abstraktné triedy, funkcie triedy (statické funkcie), konštantné členské funkcie, neverejné atribúty (protected members). O rok nato vyšla referenčná príručka (''The Annotated C++ Reference Manual''). Táto práca sa stala základom pre budúci štandard. Nedávno boli doplnené ďalšie črty vrátane šablón, výnimiek, menných priestorov, pretypovania a booleovského dátového typu.
Riadok 23:
Ako sa vyvíjal jazyk samotný, spolu s ním sa vyvíjali aj knižnice. Prvá knižnica pridaná k štandardu C++ bola knižnica vstupno-výstupných streamov, ktorá poskytoval nástroje nahrádzajúce funkcie jazyka C ako sú printf, alebo scanf. Neskôr sa k najvýznamnejším rozšíreniam štandardu pridala STL ([[Standard Template Library]]).
 
Po rokoch práce po spojení komisie [[American National Standards Institute|ANSI]] a [[International Organization for Standardization|ISO]] bol jazyk C++ štandardizovaný v roku 1998 (''[[ISO/IEC 14882]]:1998''). O niekoľko rokov po oficiálnom vydaní štandardu komisia zapracovala hlásenia chýb a vydala opravenú verziu štandardu v roku 2003. V roku 2005 bol schválená odborná správa nazvaná [[Technical Report 1|Library Technical Report 1]] (často skrátene označovaná TR1). KýmVäčšina nienavrhovaných jezmien oficiálnouv časťou štandardu, poskytuje množstvo rozšírení štandardnej knižnice, pri ktorýchTR1 sa očakáva, že budú zahrnuté do ďalšej verzie jazyka. Podpora TR1 pribúda vo väčšine kompilátorov, ktoré sú vstala súčasnostisúčasťou udržiavanéC++11.
 
Aj keď jazyk C++ je bezplatný, štandard nie je voľne dostupný.
Riadok 50:
* C++ je navrhnutý na fungovanie bez zložitého programovacieho prostredia.
Stanley B. Lippman podrobne popisuje rozličné modely v knihe '''Inside the C++ Object Model''' (1996) ako kompilátor môže previesť výrazy jazyka C++ na pamäťový model. Dodávatelia kompilátora nie sú obmedzovaný akým spôsobom implementujú štandard. Lippman pracoval na implementácii a údržbe [[Cfront|Cfront-u]] - prvotnej implementácie C++ v Bell Labs.
 
== Štandardná knižnica ==
Štandard C++ z roku 1998 sa skladá z dvoch častí: samotného jazyka (tiež niekedy aj jadro jazyka) a [[C++ štandardná knižnica|C++ štandardnej knižnice]]. Neskôr zahŕňa väčšinu z [[Standard Template Library]] a mierne upravenej verzie štandardnej knižnice jazyka C. Existuje veľa knižníc C++, ktoré nie sú časťou štandardu a používajú externé linkovanie. Knižnicou dokonca môžu byť napísané aj v [[C (programovací jazyk)|jazyku C]].
 
Štandardná knižnica jazyka C++ zahŕňa štandardnú knižnicu jazyka C s niekoľkými malými úpravami, aby umožňovala lepšiu prácu v jazyku C++. Ďalšia veľká časť knižnice C++ je založená na Standard Template Library (STL). Táto poskytuje také užitočné nástroje ako sú kontajnery (napríklad ''vektor'' – [[pole (údajová štruktúra)|pole]], ''list'' – [[zreťazený zoznam]]), [[iterátor]]y (zovšeobecnené [[ukazovateľ (informatika)|ukazovatele]]). Tieto kontajnery poskytujú podobný prístup ako pole a poskytujú operácie ako vyhľadávanie a triedenie. Knižnica ďalej ponúka (multi)mapy ([[asociatívne pole|asociatívne polia]]), (multi)množiny, ktoré ponúkajú podobné interfejsyrozhranie. Potom s použitím šablón je možné napísať generické algoritmy, ktoré pracujú s ľubovoľným kontajnerom, alebo s ľubovoľnou postupnosťou definovanou pomocou iterátorov. Funkcie knižnice sa rovnako ako v jazyku C zahrnú do programu pomocou direktívy <code>#include</code>. C++ poskytuje šesťdesiatdeväť štandardných hlavičkových súborov, ďalších devätnásť sa neodporúča používať (angl. deprecated).
 
Používanie štandardnej knižnice—napríklad používanie std::vector, alebo std::string namiesto polí v štýle jazyka C-- môžeC—môže viesť k bezpečnejšiemu a ľahšie upraviteľnému softvéru.
 
STL bola pôvodne knižnica vyrobená a používaná firmou [[Hewlett-Packard]] a neskôr [[Silicon Graphics]], pred jej začlenením do štandardu C++. Štandard sa na ňu neodkazuje ako na "STL", ale len ako na časť štandardnej knižnice, ale veľa ľudí stále používa tento pojem na odlíšenie od ostatných častí knižnice.
Riadok 103:
 
=== Úvod ===
Výhodou C++ je, že už má zabudovanú podporu objektov. Objekty sú dobré na rôzne veci. Sú aj modernejšie jazyky ktoré zvládajú prefíkanejšie metódy ako napr. [[C#]], ale C++ je z objektových jazykov najrýchlejšínajefektívnejší (samozrejme v rukách skúseného programátora).
 
=== Zabalenie funkcionality (enkapsulácia) ===
V [[C (programovací jazyk)|C]] alebo [[asembler]]i treba na naštartovanie nejakej funcionality zavolať veľa funkcií, napr. na inicializáciu, alokáciu pamäte a po skončení zas na ukončenie a uvoľnenie pamäte. Niekedy to môže byť dosť komplikované a neprehľadné a dajú sa tu hlavne pod stresom robiť chyby ktoré sa potom ťažko hľadajú.
 
V C++ môžeme vyrobiť objekt, ktorý toto všetko zprehladnísprehľadní a pekne čisto zabalí, takže hlavne pri častomopakovanom '''znovupoužití'''použití námvýrazne zníži chybovosť drasticky.
 
;Príklad
Chceme vytvoriť jednoduchú strielačkustrieľačku s obludami ktoré poletujú po obrazovke. Čo budeme potrebovať, sú obludy, čo sú vlastne [[Sprite|sprity]] - takže obludu vyrobíme tak, že ju odvodíme od spritu, čo je v príklade už hotová trieda ''Sprite''. Tiež potrebujeme scénu na ktorej sa to odohráva a tu vyrobíme tak, že ju odvodíme od okna, čo je hotová trieda ''Okno''.
 
<source lang="cpp">