Nejlepší programovací jazyk je C++

Po více než roce, co jsem se bavil s PHP 4 a potom s PHP 5, pociťuji nesmírnou úlevu a potěchu, že zase něco smysluplně produkuji ve skutečném programovacím jazyku, a to hned v tom nejlepším a nejmocnějším, tedy v C++.

Pokud si člověk zvykne na věci jako header files, šablony, přetěžování operátorů, properties, exceptions, thready, a mraky dalších věcí, dělá se mu z jazyků jako je PHP dokonale špatně. C++ je jazyk pro špičkové programátory, na rozdíl od Javy, C# či Object Pascalu (Delphi) pro střední programátorskou třídu či VisualBasicu pro naprosté začátečníky.

Historicky jsem programoval v assembleru, C, QBasicu, Borland Pascalu, Borland C++ pro DOS, PL/SQL v Oracle, Paradoxu a Accessu, Borland C++ pro Windows (VCL) a Sun Forte C++, Object Pascalu (Delphi), PHP 4/5, Javě a Pythonu, ale C++ je z těchto jazyků bezkonkurenčně nejmocnější. Na druhou stranu, jeho mocnost znamená pro méně nadané programátory noční můru, a spíše obtěžuje, než by jim pomáhala.

Psát v C++ aplikace, které nejsou real-time, je zřejmě zbytečné, jazyky jako je Java s garbage collector a bez řady pokročilých rysů C++ zde postačí, osobně ale stejně C++ i na takovéto projekty preferuji, možnosti tohoto jazyka nemají totiž konkurenci, a já se nerad omezuji 🙂

Programování v C++ je pro mě typicky zábavnější věcí než šéfovat pár desítkám lidí. To druhé je totiž mnohem méně intelektuálně náročné, a osobně nerad "krním". Nechci tím říci, že takové řízení lidí je snadné (dosáhnout třeba po několik let po sobě nulové fluktuace zaměstnanců, jejich vysokou motivaci, funkční controling, nezvyšované fixní platy, a pracovní dobu minimálně 10 hodin denně je skutečně již mírně složité), ale s vývojem v C++ se to nedá srovnávat. A to mám dlouhodobé zkušenosti z obou oblastí 🙂

Borland C++

Výhodou C++ je i to, že pokud je člověk dobře zná, je schopen programovat téměř v čemkoliv jiném na solidní úrovni během 24 hodin…

PS: pro lidi, co to nechápou, nesrovnávám zde možné a vhodné použití jazyka, ale jeho obecné možnosti, koncepci a návrh. Skuteční programátoři to pochopí 🙂

Komentáře 35

  1. #1 nadko

    "Nejlepší programovací jazyk je C++"
    by malo byt:
    "Múj nejlepší programovací jazyk je C++"

    programujem v Jave (J2EE) a co sa tyka vecsich enterprise aplikacii, tak Java ma urcite navrch.
    Vo svete internetu je nepomerne viacej zastupena ako C++, ktore ma navrch v realtime aplikaciach, ale ani tam nie je najlepsie.

  2. #2 Radek Hulán autor webu ▲10 ▼0

    [1] pro enterprise aplikace je J2EE rozhodně lepší, ale jinak J2EE postrádá řadu rysů C++, kdybys znal oba jazyky (jako já), pochopíš... Potom z čistě intelektuálního hlediska je C++ rozhodně "nejlepší" jazyk, jeho praktické použití je již jiná věc.

    Ale mluvit v případě Javy o realtime, to je sranda, ne? 😉

  3. #3 t3rb1

    no ja sa učím céčko. javu pre pecečka sa nechcem a ani nebudem učit, lebo netúžim po tom aby moje programy ťahali so sebou nejaký hovadský pomalý framework. java mozno len pre mobily

  4. #4 Michal Tuláček

    Vřele souhlasím, dále bych rád řekl, že ač je již léta naším rodinným autem škoda felicie, nyní jsem došel k názoru že jablka jsou daleko lepší ovoce....

    (já se nezbláznil, jen jsem se také pokusil srovnat dvě položky, z nihž každá slouží jinému účelu)

  5. #5 Yossarian

    hmm, jak moc ste se setkal s PHP? evidentně moc ne, protože pokud vidím, tak jste vyjmenoval všechny rysy, které má PHP s C++ společné(např. exceptions), popř. C++ vůbec nemá (properties), a tvrdíte, že kvůli nim je PHP horší céčka

  6. #6 Radek Hulán autor webu ▲10 ▼0

    [5] nestudoval jsem nikdy PHP cíleně, pokud člověk zná třeba C++, tak se podívá na (v té době) na syntax PHP 4, a během hodiny v tom normálně dělá.. Neříkám, že kvalitně, ale dělá..

  7. #7 Deny

    Začínám uvažovat, že bych se začal C++ učit, nechci si ale zbytečně kupovat nějakou učebnici, nebo začít číst nějaký neprofesionální seriál, který je k ničemu. Můžete mi říct jaký je Váš zdroj informací o tomto jazyku, popř. kde jste se tento jazyk naučil Vy? Díky moc.

  8. #8 Radek Hulán autor webu ▲10 ▼0
  9. #9 Memphis

    [5] C++ je mnohonásobně lepší než PHP (které si z céček také vzalo své). Sáhneme-li do historie, je zřejmé že PHP nebylo pro účel srovnávání s C++ stavěno. Naopak, mělo se jednat o naprosto jednoduchý preprocesor, který se ale později patrně rozšířil.

  10. #10 Michal Tuláček

    [6] Tak takto se dá učit každý programovací jazyk a nic proti tomu. Ale človek pak nemá mandát o tom jazyku cokoliv říci nebo srovnávat (mimo opravdu záklandích věcí) - je to jak přijet do cizí země kde se mluví třeba arabsky, zkusit na ně posunky - dostanete od nich najíst, napít, asi vás i ubytují... ale není to dobrý výchozí stav na to přijet dom a říct - arabština je jazyk nanic, nepopovídal jsem si o kultuře a ani o ničem jiném a neumí souvětí.

    [7] Pokud už programovat umíte (tzn. víc než hello world, ale opravdu jste napsal něco netriviálního v jiném jazyce), měl by stačit nějaký tutoriál typu "c++ za 21 dní", nebrat to moc doslova, zkoušet a zkoušet. A mít k ruce referenční příručku (ať už živou v podobě člověk na telefonu/icq nebo knihu) - ideální je MSDN. Pokud jste neprogramoval nikdy, měl byste se nejprva (dle mého názoru) zaměřit na jiný jazyk... python nebo pascal bývají označovány jako dobrý start v učení se programovat (naučit se C++ je jako naučit se anglicky... ale ve chvíli kdy nedáte dohromady ani větu v češtině je to nanic, musíte umět vyjádřit CO chcete programovat, a až pak se hodí znalost jak [třeba v c++])

  11. #11 Radek Hulán autor webu ▲10 ▼0

    [10] vzhledem k tomu, že ostatní jazyky obsahují maximálně 10-60% vlastností C++, tak je to naprosto možné, člověk se jen musí naučit mírně jinou syntax, a některé věci nepoužívat, nelze to ale dělat naopak, tedy pokud někdo zná Visual Basic, C++ za 21 dní nemá šanci pochopit, a hlavně správně používat konstrukce a možnosti jazyka.

    Zjevně programovat (příliš dobře) neumíte. Je to jako s autem, pokud umím řídit supersport, či super-výkonnou motorku, zvládnu i Skodovku a moped, ale naopak to neplatí.

  12. #12 cezam

    Srovnávat C++ a PHP je nesmysl; oboje má svoje využití a účel. BlogCMS přece nebudeš psát v C++, stejně jako 3D engine nebudeš psát v PHP 🙂

  13. #13 Radek Hulán autor webu ▲10 ▼0

    [12] nikdo také nemluví o použití jazyka, ale o jeho "čistotě" a koncepci

  14. #14 pkm

    C++ je nejlepší jazyk pro lidi, co si jsou hrát 🙂. Pro lidi kteří chtějí psát dokonale nepřehledný kód šablonovým metaprogramovím, pro odvážné lidi co se nebojí vícenásobné a virtuální dědičnosti (POZN:virtuální je následek vícenásobné🙂. Pro lidi, co mají čas ladit utelké pointery a Access Violation (Segmentation Fault) je neděsí. Občas z toho leze rychlý kód.

    Ale stejná aplikace v C#/Javě je pětkrát rychleji hotová a obsahuje desetkrát méně chyb. Pomaleji startuje a žere trochu víc paměti. Jenže gigo paměti se dá koupit za X-denní plat programátora, kde X je hodně malé číslo.

    A co takhle psát v Adě? To je jazyk ze kterého jsou amatéři dokonale nešťastní (silná typová kontrola...), ale profíci na obrovitých projektech si ji nemůžou vynachválit.

  15. #15 Radek Hulán autor webu ▲10 ▼0

    [14] hezký komentář 🙂 Existují ale i projekty, kde záleží na milisekundách zpoždění (třeba obchodování s akciemi na burze, když těch CP je kolem 50.000 a každý má L1 a L2 hloubku trhu), a toto zpracovat jinak než v C++ prostě nelze, Java a podobné věcičky na to výkonově nestačí.. Takový program v C++ je pochopitelně těžší odladit, chce to top programátory, a když se do toho přimíchá ještě pár (desítek) konkurujících si threadů, a člověk něco zapomene zamčít, to je poté teprve paráda na ladění 😉

  16. #16 emilk

    java a realtime:
    to je tak, kup si dost paměti,
    udělej gc, když je burza zavřená a už nikdy se nemusíš podívat na to, co umí neplatnej pointer. Pokud si myslíš, že JIT je pomalejší nez cečkovej kód (počítám, že o grafiku ti moc nejde, spíš o db, transakce a bussiness logiku), tak na bytekod pusť gcc a zkompiluj si to předem.

    Že po c++ zvládneš do 24h cokoliv není pravda, u perlu budeš tápat stejně jako novic od VB.

    Na závěr řecnická: podíl c++ na sf.net projektech klesá, že by lidé nakonec našli lepší zábavu a využití času než hodiny honit memory-leaky?

  17. #17 Radek Hulán autor webu ▲10 ▼0

    [16] k té řečnické otázce: co je to memory-leak? 😉 C++ je pro top programátory, pokud někdo neumí pracovat s pamětí a pointery, budiž, potřebuje zjevně Javu či C#, ale jsou i lidé, kteří s C++, přes jeho mocnost (=složitost) problém nemají 🙂

  18. #18 rarous

    Srovnávat C++ s Javou nebo dokonce s C# je jako porovnávat gazika s linkolnem, oboje jsou taky auta a gáz má dokonce redukci a naviják, někdy taky kompresor 😉 Ovšem nemá synchronizovanou převodovku, ani nemá klimatizaci a navíc mu chybí ten skvělej CD přehrávač s měničem na 12CD ...

    Srovnáváte nesrovnatelné, protože Gáz je auto pro opravdový chlapi (😛) co uměj chtnout za řadící páku a maj bicáky ns kroucení volantem bez posilovače.

    S Javou nebo C# se vozíte na vymoženostech, které podporujou rapidní vývoj aplikací a nemusíte se šťourat v detailech které vás zrdžují od dosažení cíle... C++ je silně nízkoúrovňové s našroubovaným OOP, Java je o kus dál, C# je (dovolim si tvrdit, Javaři odpusťe) ještě o kousek napřed. Zkušenosti mám nejen s zmiňovanými jazyky, ale s mnohem víc a nejvíc mi vyhovuje C#, ale každému jeho Poděbrady.

  19. #19 Radek Hulán autor webu ▲10 ▼0

    [18] pokud tomu člověk rozumí, tak jej právě možnosti C++ přibližují dosažení cíle 🙂

  20. #20 JAkub

    IMHO by pro programátora měl být nejlepší ten jazyk, kterým zvládne daný problém vyřešit co nejefektivněji (tzn. za splnění všech požadavků, bez chyb a s minimem námahy). C++ je pravda asi nejuniverzálnější programovací jazyk, ale pro malý web proste použijes PHP nebo Javu (a nebo něco jiného), ne C++. Na real-time aplikaci zase pujdeš s C++.

    Taky bych si netroufl tvrdit, že když umíš programovat v C++ jsi lepší programátor. Pokuď budu šéf a budu chtít naprogramovat právě ten web, tak pro mě budeš stejně dobry programátor ty s C++ jako maník, co to naprogramuje v PHPku za stejnou dobu.