Proč se jazyky C/C++ nezačaly po zavedení nových standartů (C++11) více prosazovat ? rubrika: Programování: C/C++

4 gaspoda
položil/-a 1.4.2015

Čekal jsem že po zavedení nových standartů se stane z C moderní jazyk s větší produktivitou práce a začne se více prosazovat.
Proč se to nestalo ?

odkaz
9 pavel.stehule
odpověděl/-a 2.4.2015

Proč by se měly začít prosazovat? Změny v jsou takové, že některé specifické věci se budou dělat standardnějším způsobem, C++ zůstává extrémně komplikovaným jazkykem. Jen některé dost komplikované věci se budou řešit o něco čistěji, jednodušeji - ale stále zůstanou dost komplikované. Nezměnil se charakter jazyků, nezměnila se ani cílová skupina. A i kdyby k nějaké změně došlo (což nečekám) - je ještě brzo na to, aby jakékoliv změny byly vidět - změny v standardech se v produkčních kódech projevují se zpožděním deseti a více let (když se projeví).

Navíc, mám takový pocit, že karty už jsou rozdány. Pokud nedojde ke změně paradigmatu nebo k nějaké významnější technologické změně, tak není důvod měnit svoje preference ohledně programovacího jazyka a vývojového prostředí. Žádný z etablovaných jazyků není natolik špatný, aby jej bylo nutné opustit, a žádný není natolik lepší, aby se na něj vyplatilo migrovat.

Komentáře

  • xxar3s : Vsetko comu clovek nerozumie, zvykne vyzerat komplikovane. Na c++ neni nic komplikovane, len mu treba porozumiet a naucit sa ho. C++ dava programatorovi slobodu volby medzi low level a hi level, neni to jazyk ktory by vodil programatora za rucicku. Na kriticke casti kde zalezi na vykone mozem optimalizovat tie ostatne mozem napisat ako v standartnom jazyku, ale neustale mam vsetko pod kontrolou. Tam kde ostatne jazyky koncia a despoticky vnucuju programatorovi svoju ideu spravneho pristupu (velakrat na ukor vykonu alebo pracnosti), tam c++ dava programatorovi slobodu volby. 3.4.2015
  • error414_1 : Moznost volby jen komplikuje lidem zivot :) 3.4.2015
  • dzejkob : Je otázka jakou cenu má programátor, kterému možnost volby komplikuje práci. 3.4.2015
  • Taco : @xxar3s: Všimni si, jak zněla otázka. V tom kontextu je tvůj komentář sice zajímavý, ale přesto mimo. 3.4.2015
  • Taco : @xxar3s: Já třeba se svobodou volby (v tomto kontextu) nesouhlasím. Ideální stav si představuji, že programátor napíše logiku věci, a kompilátor to zoptimalizuje (to tvoje low-level). Vůbec se mi nechce pouštět programátra do toho, aby tam něco optimalizoval. Od toho tu máme stroje, a měli by to dělat lépe. Stejně jako dnes už málokdo optimalizuje asembler, protože to ten kompilátor prostě udělá lépe. 3.4.2015
  • dzejkob : To by mě fakt zajímalo - zda už jsou nástroje, kde se jenom nakliká sebevětší prasárna, která neřeší, že se budu na některých místech dolovat informace v nějakém exponenciálním čase - pak se v kompilátoru nastaví "optimalization level" - ono to chvíli zachrousá a pak to zajístí, že se informace dostane přesně tam, kde má být a co nejrychleji. Ba co více, třeba to bude umět adaptovat - a jakmile vyhodíte 10 účetních a naberete 20 analytiků, tak to pozná, že o trochu delší čas fakturace není problém. "A skláři nebudou mít co žrat" 3.4.2015
  • Taco : @dzejkob: Možá se to nezdá, ale třeba taková Java něco takového je. Ty to musíš zakomponovat do objektů, a o zbytek se stará runtime. (Přirozeně je to ještě málo.) Nebo to lze pozorovat na Haskellu, kde modeluješ data a funkce, a on tě strašně moc nutí k tomu, aby si to formálně specifikoval, a pak se to přeloží do strojáku. Obecně vnímám tendenci ke stále vyžším a vyžším jazykům, kde se musíš méně a méně starat o low-level věci. 3.4.2015
  • dzejkob : No nějaký formální specifikace - ať už jakýkoliv - člověk dodržovat musí, aby jednoho dne projekt neexplodoval neudržitelností. Furt ale hodně času věnuje tomu, že řeší atomicitu, sdílený přístupy, fronty, agregace a zjednodušeně řečeno "cache" + musí si být nějak jistý, aby to všechno hrálo dohromady a nedělalo chyby. Že za mě kompilátor řeší banality v ifech a cyklech je hezký. Ale který konkrétně formální specifikace mi ušetřej práci v rovině optimalizací by mě zajímalo. Že někde začnu psát něco podle příručky "the true oop design patterns" je taky hezký, ale dřív či později budu opět řešit optimalizace, zatěžovat vstupy, měřit apod. Pokud to teda není projekt pro 2 lidi. Neříkám, že si nedovedu představit formální specifikace, který člověka od spousta prací ušetřej - ovšem něco takovýho by muselo být mnohem složitější než celý oop a nezdá se mi, že by do toho někdo investoval čas. Prostě vždycky se naženou někam programátoři a oni to už "nějak" vyřešej a poskládaj z dost pořád docela malejch stavebních bloků. 3.4.2015
  • Taco : Pro mne byl ten Haskell velkým objevem, co všechno a jak se dá formálně specifikovat. 3.4.2015
  • siq : Nie vzdy tu optimalizaciu spravi stroj lepsie. Potom sa bavme o tom, ci chceme pustit programatora k low level a optimalizacii. Ja programatora k tomu rad pustim, nepustal by som k tomu bastlica. Navyse manazovane jazyky ako Java maju obrovsky overhead, hlavne pri volani nativnych kniznic. Stale su pripady, kde C++ ma svoje miesto a este dlho ho mat bude. 3.4.2015
  • Taco : @siq: Všechno je to otázka času, kdy budou stroje lepší, než programátor. Javu jsem bral jako jazyk, nikoliv jako platformu. S managovaností to nesouvisí. 3.4.2015
  • dzejkob : Pokud P != NP, jak se to doposud jeví, tak to s tím překonáním programátora strojem zase tak vesele nevypadá. 3.4.2015
  • siq : Tak ale ked z Javy vezmes platformu, tak je to horsi jazyk nez C++. Suhlasim, ze v idealnom svete by programator napisal logiku, a nestaral sa, ale este tam celkom niesme a posledna mila bude asi najtazsia. 3.4.2015
  • Taco : @siq: Tak já jsem netvrdil, že tam jsme, nebo dokonce, že toho nastoprocent dosáhnem. Jde o vizi a směr. Zda je Java horší jak C++ asi hodně záleží na účelu i osobních preferencí. Mě přijde Java v mnoha ohledech lepší a čistější. 3.4.2015
  • gaspoda : OMG, radsi tuhle diskuzi ukoncete. 3.4.2015
  • Taco : @gaspoda: Zatraceně, co bychom si bez této tvé rady počali. 3.4.2015
  • pavel.stehule : Nemá cenu otevírat otázku Java versus C++. Aplikační server nebudu psát v C++ - nikoliv kvůli jazyku, ale kvůli etablovaným frameworkům, které už jsou napsané v Javě. Naopak databázový server bych napsal v C nebo v C++ - odpadnou mi problémy s pamětí, lze koncepčně řešit výkonnostní problémy - celá aplikace je homogenní a jednoduše nasaditelná. Navíc běžné enterprise aplikace se vycukají na databázi, na designu - C, C++ by při stejném designu měl více/méně podobné problémy. 4.4.2015
  • Taco : Já jsem psal o strojové optimalizaci versus ruční optimalizaci. O vyšším jazyku, versus low-level jazyku. 14.11.2015
  • janmkubalek : @taco to co jsi napsal výše je v celku nepravda. Pokud programuješ v C/C++ musís alespoň v základu vědět, jak se zdrojový kód přeloží, jak vypadá dynamický linker (a co to vůbec je). Jak funguje architektura, pro kterou budeš program překládat atd. Pokud nebudeš obeznámen s základy, nebudeš nikdy schopný napsat efektivní kód v C/C++... 13.11.2015

Pro zobrazení všech 13 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.