C++ je multiparadigmatický programovací jazyk. Byl vyvinut Bjarnem Stroustrupem a dalšími programátory v Bellových laboratořích AT&T jako rozšíření jazyka C. C++ podporuje širší škálu paradigmat, tedy programovacích stylů, mezi které patří procedurální programování, objektově orientované programování a generické programování. Nedá se tedy říct, že by se jednalo čistě o objektově orientovaný jazyk. Patří mezi nejrozšířenější programovací jazyky.

Původně jazyk vznikal pro potřeby systémového programování a vestavěného software s omezenými zdroji a pro potřeby velkých systémů.

Důraz byl kladen na:

  • Výkon
  • Efektivitu
  • flexibilitu použití

C++ je ale užitečné i v mnoha jiných kontextech, s tím, že klíčovými silnými stránkami jazyka jsou:

  • použití v softwarové infrastruktuře a aplikacích s omezenými zdroji, včetně desktopových aplikací, serverů (jako příklad můžeme použít aplikace v e-commerce, webových vyhledávačích nebo SQL serverech)
  • použití do aplikací kritických na provoz, jako jsou například telefonní switche a kosmické sondy.

C++ je kompilovaným jazykem, který má dostupné implementace na mnoha platformách. Mnoho dodavatelů nabízí C++ kompilátory. Patří mezi ně například Free Software Foundation, Microsoft, Intel nebo IBM.

C++ je standardizované Mezinárodní organizací pro normalizaci (International Organization for Standardization – ISO). Nejnovější standardizovaná verze byla ověřena a vydána organizací ISO v prosinci 2017 jako ISO/IEC 14882:2017. Neformálně se jí přezdívá C++17. Programovací jazyk C++ byl původně standardizován v roce 1998 jako ISO/IEC 14882:1998. Tato verze byla následně rozšířena o standardy verzí C++03, C++11 a C++14. Současná verze C++17 předčí tyto svoje předchůdce díky novým vlastnostem a rozšířené standardní knihovně. Další plánovanou standardizovanou verzí je C++20. Před začátkem standardizace v roce 1998 bylo C++ vyvíjeno Bjarnem Stroustrupem a Bellovými laboratořemi od roku 1979.

Původním záměrem bylo vyvinout jazyk jako rozšíření jazyku C a vytvořit tak efektivní a flexibilní jazyk, který by byl podobný C a který by zároveň dokázal poskytnout pokročilé vlastnosti.

Mnoho dalších programovacích jazyků se inspirovalo jazykem C++, včetně C#, D, Java nebo nových verzí C.

Filozofie jazyka C++

Jazyk C++ byl během svého vývoje postavený na následujících zásadách:

  • Musí být poháněn reálnými problémy a jeho vlastnosti musí být okamžitě použitelné pro reálné světové programy.
  • Každá vlastnost musí být implementovatelná s rozumně pochopitelným způsobem jak to udělat.
  • Programátoři by měli mít možnost si vybrat vlastní programovací styl a tento programovací styl by měl být plně podporován jazykem C++.
  • Umožnit užitečnou vlastnost je důležitější nežli zamezit každému možnému špatnému použití C++.
  • C++ by mělo nabízet možnosti jak organizovat programy do dobře definovaných samostatných částí a nabízet možnosti pro kombinování samostatně vyvinutých částí.
  • Žádné implicitní porušení systému typů (ale umožňuje explicitní porušení, tedy to, které je explicitně vyžadováno programátorem).
  • Typy vytvořené uživatelem musí mít stejnou podporu a výkon jako vestavěné typy.
  • Nepoužívané vlastnosti by neměly mít negativní vliv na vytvořené spustitelné části kódu.
  • Neměl by pod jazykem C++ být použitý žádný další jazyk (vyjma assembleru).
  • C++ by mělo fungovat bok po boku s ostatními existujícími programovacími jazyky, místo toho aby docházelo k vývoji vlastního odděleného a nekompatibilního vývojového prostředí.
  • Pokud je programátorův úmysl nejasný, umožnit programátorovi ho specifikovat manuálně.

Historie

V roce 1979 začal dánský počítačový expert Bjarne Stroustrup pracovat na jazyku „C se třídami“, předchůdci dnešního C++. Motivací pro vytvoření tohoto nového jazyka byly zkušenosti Stroustrupa s programováním jeho dizertace. Stroustrup došel k závěru, že Simula měla důležité vlastnosti, které byly zásadní pro vývoj velkého software, ale jazyk byl příliš pomalý pro praktické použití. BCPL bylo rychlé, ale příliš základní, aby se na vývoj velkého software dalo použít. Když Stroustrup začal pracovat v Bellových laboratořích, měl problém s analýzou jádra operačního systému UNIX v souvislosti s distribuovaným výpočtem. Když si vzpomněl na svou dizertaci, Stroustrup se rozhodl rozšířit jazyk C o vlastnosti podobné Simule. C bylo vybráno jako základ proto, že to byl obecný, rychlý, přenosný a široce používaný jazyk. Stejně jako C a Simula ovlivnily vznik C++ i další jazyky, jako například ALGOL 68, Ada, CLU nebo ML.

Původně přidávalo Stroustrupovo „C se třídami“ vlastnosti kompilátoru C Cpre, včetně tříd, odvozených tříd a dalších.

V roce 1983 bylo „C se třídami“ přejmenováno na C++ a byly přidány nové funkce včetně virtuálních funkcí, jmen funkcí a přetěžování operátorů.

V roce 1985 vyšlo první vydání The C++Programming Language. Tato kniha se stala hlavní dokumentací jazyka, jelikož žádný oficiální standard zatím neexistoval. První komerční implementace C++ byla vyreleasována v říjnu roku 1985.

V roce 1989 byla vyreleasována verze C++ 2.0 následována aktualizovaným druhým vydáním The C++ Programming Language v roce 1991. V roce 1990 byl vydán „The Annotated C++ Reference Manual“ který posloužil jako základ pozdější standardizace.

Po aktualizaci 2.0 se C++ vyvíjelo poměrně pomalu až do roku 2011, kdy byl vydán standard C++11. Po menší aktualizaci C++14, která byla vydaná v prosinci 2014 přišly větší změny s verzí C++17 a další změny jsou naplánované na rok 2020.

Podle statistik je C++ třetím nejoblíbenějším programovacím jazykem, hned po jazycích Java a C.