Nejlepší programovací jazyk je C++

MyEgo.cz

home foto blogy mywindows.cz kontakt

Nejlepší programovací jazyk je C++

Technologie 05.08.05

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

  1. 1 nadko 05.08.05, 04:08:21
    FB

    "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 05.08.05, 04:08:23
    FB

    [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 05.08.05, 05:08:26
    FB

    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 05.08.05, 05:08:40
    FB

    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 05.08.05, 05:08:56
    FB

    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 05.08.05, 06:08:12
    FB

    [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 05.08.05, 06:08:16
    FB

    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 05.08.05, 06:08:22
    FB

    [7] http://myego.cz/item/jak-se-naucit-profesionalne-programovat...

  9. 9 Memphis 05.08.05, 06:08:22
    FB

    [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 05.08.05, 06:08:26
    FB

    [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 05.08.05, 06:08:32
    FB

    [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 05.08.05, 06:08:58
    FB

    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 05.08.05, 07:08:01
    FB

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

  14. 14 pkm 05.08.05, 07:08:10
    FB

    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 05.08.05, 07:08:15
    FB

    [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 05.08.05, 07:08:58
    FB

    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 05.08.05, 08:08:07
    FB

    [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 05.08.05, 08:08:46
    FB

    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 (:P) 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 05.08.05, 09:08:18
    FB

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

  20. 20 JAkub 05.08.05, 09:08:56
    FB

    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.

  21. 21 Dorian 06.08.05, 06:08:49
    FB

    Život neni tak dlouhy abychom mohli vsechno programovat v C++ :-). Ja jsem presel na Delphi z Cecka a prestoze jsem se musel ucit Object Pascal, jde tam vsechno o dost rychleji.

  22. 22 Peter Lachký 07.08.05, 12:08:32
    FB

    IMHO pracovať minimálne 10 hodín denne je znak neefektivity. ináč c++ pohoda - prelúskal som celého Pratu, nepotreboval, nepoužíval, zabudol. škoda. ;-)

  23. 23 cezam 07.08.05, 02:08:57
    FB

    Jo, tak v tom případě samozřejmě souhlas. Ale to o "skutečných programátorech" jsi teda mohl spolknout :)))

  24. 24 Ladislav Thon 08.08.05, 08:08:33
    FB

    [13] Kdybys argumentoval svobodou, možností programovat tak, jak se ti zrovna chce a jak je v danou chvíli a pro daný projekt nejlepší, tak ani neceknu. Ale mluvit o čistotě a koncepci? To je v souvislosti s C++ jenom hodně špatný vtip, ne? Je to šílený bastl a od první chvíle, co jsem se mu (velice krátce) věnoval, jsem litoval všechny autory překladačů C++, jejich noční můry bych nepřál ani nejhoršímu nepříteli :)

    Uznávám, že C++ je z jistého úhlu pohledu nejlepší programovací jazyk ever. A z jiného zas ten nejhorší :)

    Mimochodem, zmiňované properties jsou výsadou Borlandího C++ (převzali je nejspíš z Object Pascalu, který je dle mého názoru tím nejlepším z C++ s rozumnou syntaxí) a ve standardu nejsou (ta dvě podtržítka mluví za vše).

  25. 25 Jirka Hradil 11.08.05, 10:08:58
    FB

    [16] Jen pro info-nikdy nemáte jistotu, že se GC spustí/nespustí a žádným příkazem ho nemůžete ke spuštění přinutit. Jen doporučit spuštění.

  26. 26 Jirka Hradil 11.08.05, 11:08:02
    FB

    [2] Radku, ve vší úctě, naučte se Javu a pochopíte. Nemá tady smysl po tomto článku cokoli obhajovat a přít se o maličkostech, když neznáte základní podstatu Javy. Ale chápu, že nejlepší používaný jazyk je ten, který má programátor doma :)

  27. 27 Radek Hulán 11.08.05, 11:08:15
    FB

    [26] Jirko, při vší úctě, naučte se C++ (je poněkud složitější než Java), a pochopíte :-))

  28. 28 Jirka Hradil 13.08.05, 04:08:19
    FB

    [27] Dovolím si několik otázek:

    1. V čem přesně je C++ složitější než Java? Rád bych slyšel konkrétní příklady.

    2. Zastáváte názor, že složitější znamená lepší? V jaké úrovni abstrakce? Já tvrdím, že největší potenciál a cílem veškerého vzdělávání je jednoduchost. Co myslíte?

    3. Z čeho vychází tvrzení, že je Java a C# jazyk pro střední programátorskou třídu a C++ pro špičkové programátory? Z rychlosti vývoje, množství chyb vznikajících při psaní, množství knihoven, investiční náročnosti...? Snad víte, že pro konkrétní aplikaci je vždy vhodný úrčitý jazyk, nicméně z vašeho kategorického soudu to nepoznám.

    4. Výzvu "naučte se C++" musím bohužel odmítnout, mám co dělat, abych se naučil Javu na přijatelné úrovni vhodné pro mou konkrétní potřebu, nicméně už teď vím, že nelze zvládnout v jazyku vše-vždy je třeba určitá specializace.

    5. Pořád se nemůžu zbavit dojmu, že se snažíte dostat z PHP řešení někam výše (ale stále PHP používáte, což je OK, pokud vám vyhovuje). Proto chápu tyto a podobné články jako objevovací "hurá příspěvky" začátečníka. Možná vám křivdím (pak se omlouvám), ale vypadá to tak :).

    6. Berte prosím vše s rezervou a v klidu :).

  29. 29 krtek 19.08.05, 02:08:10
    FB

    [15]
    jen na okraj - realtime nemá nic společnýho s rychlostí.

    A Java realtime je - viz. http://java.sun.com/docs/books/realtime/...

  30. 30 honza 21.08.05, 10:08:38
    FB

    co na to rict? c++ se prestava pouzivat hlavne proto ze je desne roztristene. Co mate v Jave ve standardnich knihovnach v C++ nahanite nekde po netu a nebo si to musite napsat.

    Je pekne ze C++ ma nepropracovanejsi model objektove orientovaneho programovani, ale nerekl bych ze je to vsechno. Jak nekdo rekl, v Jave se vyviji neskutecne rychleji. A to rozhoduje. Proto C++ pomalu ale jiste miri na smetiste dejin.

    Ano a typicka zabava honit memory leaky - a jestli pane Hulan rikate, ze pro Vas to neni problem tak drobatko kecate. Nejste robot a chybu tohoto stylu udelate i Vy. Ale kdyz Vas to bavi, tak proc ne.

  31. 31 miso 25.08.05, 12:08:47
    FB

    Chcel by som sa spytat,kde sa da volne stiahnut jazyk c++?
    Prosim odpiste mi na mapjar@centrum.sk
    Dakujem

  32. 32 Pepa 26.08.05, 05:08:21
    FB

    Dle mého názoru je nejlepší jazyk ten který programátor dobře umí.V C++ lze sice asi napsat všechno ale z jakou efektivitou. V dnešní době nikomu nejde o to v čem to je napsané ale o to jak to šlape, za kolik to je a za jakou dobu se to dá napsat.Každý jazyk má v dnešní době svůj účel i C++ .V každém jazyce jde napsat všechno co si člověk přeje.Ale jestli v C++ budete psát aplikace pro mobily tak to sice půjde ale dobrý programátor to raději udělá v jave.Naopak kdyz v jave budete dělat (výše zmíněný) obchod s akciemi na burze dopadnete stejně jak s C++ na mobilu.

  33. 33 luky 27.08.05, 11:08:19
    FB

    [28]
    Tento názor je pěkný. Asi 4 roky se intenzivně věnuju psaní v C++. Teoreticky, pokud by člověk pouzival knihovny nebo psal knihovny podle coding standards pro C++, tak by nemusel jejich uzivatel potkat pointer. Vemte si, ze v komisi pro C++ jsou i lidi ze Sunu. Co se mi na C++ libi je ze je to silne komunitni produkt, ac taky placenej firmama, tak je tam obrovska diverzita v nazorech, coz v dusledku je jednak dobry pro kvalitu, a jednak spatny casove - vubec stihnout tu kvalitu ukazat (releasovat standard) a hlavne dostat standard do povedomi, to bez marketingu jde dost pomalu.
    Co se tyce GC, tak to povazuju od zacatku za marketingovej krok Sunu. Okamzite celej svet musel vedet ze vozitka na Marsu si vzala ke cteni oblibenou knizku "Java-We Are the Best", ackoliv tam nechybely ani jine jazyky, napr. C++. V C++ jsem spokojenej s RAII, smart pointerama a vim, co delam, a kdy to delam. A neverim proklamovanym schopnostem GC v Jave kvuli tomu, ze v komunite std C++ se vedou thready se stovkama zaznamu. A BTW proc nepouzit nejakou knihovnu. Ani se nikdo tady nezminil o Boost.org, coz je docela smutne, protoze je to ta asi nejsledovanejsi knihovna kompatibilni se standardem a pro vice platforem.
    Hlavni je umet ten svuj vychvalovanej jazyk QXY poradne, fakt dobre, aby clovek pak mohl rict - hele to jsem udelal s QXY.
    Jinak clanek se mi vubec nelibi, s takovym myslenim nekritickym by to C++ daleko nedotahnul. To co se programuje v nekterych firmach a rikaji tomu C++ je bastl mezi C/C++. Dusledkem jsou desivy spatne udrzovatelny navrhy. Ikdyz je to dokonalost sama, tak je to dokonale jen v ocich toho, kdo to pise.
    Co C++ chybi je GUI a bitka jaky bude standrdni GUI - bude dlouha, kde padne za obet mnoho projetku. GUI je treba a bude to bolet. Nastesti uz existuje iniciativa boost.org - no spis akce typu "nehlaste se vsichni!", protoze se nikomu do toho nechce.

  34. 34 Tomáš Herceg 20.12.05, 09:12:33
    FB

    Nevím, proč se zde řeší problém, který programovací jazyk je nejlepší. Pokud člověk programuje pro zábavu, tak si přirozeně vybere jazyk, ve kterém se mu pohodlně píše. Já třeba píšu hlavně ve Visual Basic .NET. Někdo to možná nechápe, ale mě vyhovuje syntaxe - žádné středníky. Nemusím se starat o tolik věcí a výsledný kód má daleko méně potencionálních chyb. Můžu se soustředit na to, co opravdu programuji. Samozřejmě pokud si budu chtít napsat ovladač, musím sáhnout po C++. Ale rozhodně se nedá říct, že C++ je nejlepší jazyk, protože se v něm dají psát i ovladače. Visual Basic .NET prostě není určen k psaní ovladačů. To samé platí pro Javu, C# i Object Pascal. Každý programuje v jazyce, který je mu nejpohodlnější.
    PHP je interpretovaný skriptovací jazyk, nepotřbuje žádné objekty a třídy, který je určen k úplně jiným účelům než C++, proto ho nemůžeme srovnávat. I když osobně mám radši JSP a servlety, které jsou daleko lépe "vychytané".
    Pokud programujete nějakou zakázku, tak stejně musíte psát v tom, za co dostanete zaplaceno. Pokud potřebují aplikaci na linux, tak asi opravdu sáhneme po C++, ale pokud je to pro Windows, je .NET tím nejlepším řešením (pokud nepíšeme ovladače). Ne, že by se v C++ nedala napsat databázová aplikace. Ale v .NET máme vše rychleji a pohodlněji. A hlavně je daleko jednodušší ošetřit chyby. Takže nemá smysl říkat, že C++ je absolutně nejlepší. Jak na co. Na ovladače jinou možnost nemáme a na rozsáhlé projekty máme pohodlnější a schůdnější řešení. C++ je ideální třeba na hry.

  35. 35 Techi 11.08.06, 04:08:58
    FB

    Jsem nějak nepochopil, že C++ je realtime a na obrázku máš Builder. Nakonec je z toho splácanina jako v Javě. Kdybys tam měl Visual C++ nebo líp GCC tak mlčim :)
    Jinak zajímavej link o tendencích programovacích jazyků, který snad umlčí ty můj-jazyk-je-ten-co-je-ze-všech-nejlepší http://www.tiobe.com/tpci.htm