Nejmocnější programovací jazyk aneb C++ is NOT dead
Je C++ mrtvý? Nebo alespoň skoro mrtvý? (Při jeho stáří by se nebylo co divit…) Ani omylem. Alespoň to vyplývá z TALK PANELU SMITIA. Ti, kdo nejen s ním pracují, si k němu řekli své. I k tomu, v čem je dobrý a v čem naopak lehce problematický. Také k jeho kompatibilitě, možnostem alternativ, budoucnosti… Pusťte si diskuzi – a uvidíte sami.
Máme pro vás ty nejdůležitější postřehy z diskuze.
Vše se točí kolem programovacího jazyka C++, jeho využití a vyhlídkách. Jakub Jůza z Roboauta, nezávislý programátor Pavel Šimerda, Pavel Beran z Honeywell a Pavel Geiger z Jablotronu se vyjadřují k přednostem a slabinám C++, jeho komptabilitě, výhledům apod.
Co z jejich postřehů plyne? „Céčko“ stále považují za relevantní a užitečné. Přestože už tu jsou nové jazyky jako Rust či Python. V herním průmyslu, robotice, letectví či v oblasti cloudových služeb je C++ stále nejjistější volbou. (To znamená v projektech, které vyžadují maximální optimalizaci a kontrolu nad pamětí. Zkrátka tam, kde musíme rychle a kvalitně zpracovat velké množství dat. Například u audia moc jiných možností není.)
Jaké benefity přinášejí další verze C++17 a C++20?
Moderní funkce a zlepšení správy paměti. Doporučení diskutujících expertů vybízí k přechodu na novější verze, protože jejich přínosy převažují nad případnými „hnidami“. Upozorňují ale, že to nejde tam, kde je daná verze spojená s nějakou certifikací či normou, které garantují perfektní funkčnost (např. v letectví). V oborech a systémech, kde není 100% funkčnost otázkou života a smrti apod., však mohou nové verze významně posílit konkurenceschopnost.
Jeví se jako perspektivní kombinování C++ s jinými jazyky?
Například s Pythonem, který je častým komplementem díky své flexibilitě a jednoduchosti, určitě ano. Rust je zase mnohými vnímán jako možný nástupce C++ v určitých oblastech, a to zejména pro své bezpečnostní prvky. Úplné nahrazení C++ Rustem nebo jiným jazykem je ovšem v současnosti nereálné. C++ má totiž rozsáhlé legacy projekty a poskytuje kontrolu a výkon, které jiné jazyky nenabízejí.
Kombinace Rustu a C++ významně posiluje momentální tlak na růst bezpečnosti jazyků. Je tak silný, že se mu globální komunita programátorů snaží vycházet vstříc a vyvíjet co nejbezpečnější řešení. I kvůli tomu je přes určitou krkolomnost kombinování jazyků stále běžnější. C++ je obecně vnímán jako jazyk, k němuž se dá ledacos „přifařit“. Paradoxně však jeho vývoj zpomaluje právě jeho komplexnost. (Jakákoli změna se musí promítnout takřka do všeho…)
Jak si C++ stojí z pohledu vzdělávání a sdílení know-how?
I o tom se debatovalo. A jako obvykle zaznělo, že VŠ za moderními standardy poněkud pokulhávají. Takže se není co divit, že absolventi většinou neodpovídají potřebám trhu. Naštěstí působení škol suplují různé meetup akce a komunity (např. C++ Brno kooperující s Roboautem). Čili: Chceš-li se něco naučit, nauč se to sám, tam nebo s námi.
Proč je kombinace C++ s Pythonem dobrá?
Je efektivní z hlediska workflow a softwarové architektury. Python pomůže k rychlejší iteraci a práci, C++ si poradí s výkonově náročnějšími úkoly.
Rostoucí role Rustu jako spolupracovníka C++
Rust je užitečný nástroj ke zvýšení bezpečnosti paměti. Je stále běžnější kombinovat C++ a Rust v jednom projektu. Migrace starších kódů napsaných v C++ do Rustu je ovšem zatím jistou výzvou. I tak ale tato cesta potvrzuje současný trend hledání bezpečnějších a zároveň co nejvýkonnějších jazyků pro systémy náročné na paměť.
Moderní standardy C++
Zkušenosti potvrzují, že C++ je díky moderním funkcím, jako jsou chytré pointery nebo move sémantiky, výkonnější a bezpečnější.
Což je argument pro vývojáře, kteří se rozhodují, zda investovat do aktualizace nástrojů a codebase.
Komplexita a náročnost správy C++ projektů
Využívejte dependency management, nástroje pro continuous integration a statické analýzy. Pomůžou vám udržovat a škálovat projekty v jazyce, který může být někdy na údržbu složitý.
Závěr
C++ zůstává i přes konkurenci ve hře. Je to díky jeho výkonnosti, bezpečnosti a možnostem. Jako všechno na světě ale vyžaduje inovace, které ho budou průběžně slaďovat s dobou a jejími potřebami. Což se – jak je patrné z panelu – děje.