Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: without_faith 12. 06. 2019, 03:00:22
-
Ahoj ahoj,
jsem čerstvý učenec jazyka c++ a veru, baví mě to. Lepší, než kuchař-číšník ... nebo ne?:)
Mám na Vaše zkušené programátorské mozky jistý dotaz za který mě určitě sežerete, ale chci být v obraze!
K meritu věci:
Za jak dlouho je člověk schopný se naučit programovat, je-li šikovný a učí se každým den. Např. Já se učím druhý týden z e-knihy:"Programování c++ bez předchozích znalostí" a prošel jsem 8 kapitol, čili 120 stran cca. Obsah jsem pochopil a psaní jazyka mě baví. Nedokážu ovšem zatím napsat nějakou jedinečnou myšlenku, čemuž se po 2 týdnech nedivím.
Děkuji za orientační odpovědi a skvělé tipy do začátků!!
P.S.: Mám na mysli, za jak dlouho je člověk schopný naučit se takovou úroveň, díky které si začne vydělávat!
-
Mám na mysli, za jak dlouho je člověk schopný naučit se takovou úroveň, díky které si začne vydělávat!
Znám lidi, co začali vydělávat po měsíci, ale je třeba být realista, půl roku je minimum. Záleží na předchozích znalostech (jiných jazyků).
-
Imho umět programovat a vydělávat programováním jsou dvě odlišné věci...
-
A učil ses opravdu C++ nebo C with classes? On je v tom totiž dost podstatný rozdíl.
-
P.S.: Mám na mysli, za jak dlouho je člověk schopný naučit se takovou úroveň, díky které si začne vydělávat!
Za 10 minut. Už jsem například dostal do situací, kdy bylo potřeba napsat skript v Lua, upravit program v Perlu nebo napsat jednoduchý program pro PLC v IEC 61131-3 ST, což jsou věci, které jsem nikdy před tím neviděl. No a prostě jsem to nějak zařídil (googlení, lepení examplů).
-
Idris: To zní dosti motivačně!
Cikáda: Asi chápu, jak to myslíš. Sehnat práci ve firmě, která je zaplacena tak, že odpovídá náročnosti studia je prý celkem těžké. Programátoři prý nejraději pracují na faktury jako živnost. Je to tak lepší? Já osobně bych preferoval programovat grafiku a hry.
pavels: Je to C++, na což odkazuje i ona kniha. Do budoucna bych se rád naučil i vícero programovacích jazyků
_jenda: 10 minut? To jsi asi špatně pochopil ;D
-
Idris: To zní dosti motivačně!
Cikáda: Asi chápu, jak to myslíš. Sehnat práci ve firmě, která je zaplacena tak, že odpovídá náročnosti studia je prý celkem těžké. Programátoři prý nejraději pracují na faktury jako živnost. Je to tak lepší? Já osobně bych preferoval programovat grafiku a hry.
pavels: Je to C++, na což odkazuje i ona kniha. Do budoucna bych se rád naučil i vícero programovacích jazyků
_jenda: 10 minut? To jsi asi špatně pochopil ;D
Na hry to chce spíše studium fyziky, na to jsou přímo knihy s názvy jako Physics for game developers.
-
"Za jak dlouho se naučím C++?"
Jak to mame vedet? My nejsme vestci.
A ted vazne. Je totiz otazkou, co povazujete za cil. Ze se nasprtate ucivo? To jde rychle, ale znamena to taky, ze zvladnete nejaky projekt? Na to samotny jazyk totiz nestaci. Spoustu zaku se nasprta ucivo, zvladnou priklady a v praxi to nedovedou pouzit, nebo jen stezi.
Taky je otazkou do jake hloubky Vami zminovana ucebnice jde. Jsou taci jedinci, kteri pokud nevidi v projektu jedinou sablonu, pomalu to nepovazuji za program v C++. A jsou taci, kteri si vystaci pouze pouze s funkcemi a strukturami (jako v C) a pouzivaji kompilator C++ kvuli silne typove kontrole. Oba pristupy jsou extremy (priznavam), ale oba prave C++ umoznuje.
Tak jako tak, ja osobne jsem presvedceny o platnosti, ze cviceni a praxe dela mistra (a to nejen v C++). I ja sam po tolika letech porad objevuji v C++ nove veci. Takze hlavne programujte. Pokud nemate dost vlastnich napadu, zkuste priklady treba na www.codewars.com.
PS. Jenda Vas asi pochopil spravne. A myslim, ze i spravne Vam odpovedel - pohledem evidentne zkuseneho programatora.
-
P.S.: Mám na mysli, za jak dlouho je člověk schopný naučit se takovou úroveň, díky které si začne vydělávat!
Definuj „začít vydělávat“. Pokud to myslíš jako freelancer, tak imho tak dva až pět let.
C++ není ostrov v moři, a přestože jako jazyk je relativně těžký, tak jím to teprve začíná. Potřebuješ toho znát kopec o toolingu kolem toho (kompilátory, linkery, makefiles, build systémy, způsoby interakce s knihovnami, operační systémy, sítě, endiany, ..). Musíš taky trochu rozumět hardware počítače, chápat jak asi funguje procesor, jak je organizovaná paměť. Hodí se mít nějaké základní zkušenosti s assemblerem, abys chápal kde se vůbec vzala půlka těch konceptů a nebyl ztracený s pointery a nepřímým adresováním a tak podobně.
Hodně záleží na tom jaké máš předchozí znalosti. Pokud jsi se vším tímhle dělal už někdy dřív třeba v nějakém jiném kompilovaném jazyce, tak to bude do velké míry jen otázka mapování jednoho konceptu do druhého a jsi schopný to udělat jak píše Jenda; během pár minut vygooglit a nějak si upravit ukázky. Pokud ne, tak ti vždycky bude trvat nějakou dobu než to pochopíš a ve skutečnosti věci často nechápeš, dokud si je nevyzkoušíš, což žere čas. Další věc je, že tohle můžeš dělat když se doma učíš, nebo když jednou za čas něco upravuješ, ale když tohle budeš praktikovat v práci, tak jednak nebudeš vůbec stíhat (potřebuješ to mít v hlavě, to lookup rychlejší o několik řádů než googlení a čtení článků) a druhak kolegové vážně nebudou nadšení ze špagety co jsi poslepoval z kousků kódu, kterým sám pořádně nerozumíš.
Vím že je to lehce irelevantní k dotazu na práci, ale uvádí se, že aby ses stal skutečným odborníkem, či mistrem (https://www.goodreads.com/book/show/13589182-mastery) v nějakém oboru, tak se říká, že tomu musíš věnovat minimálně deset tisíc hodin. Platí zde Parretovo pravidlo (https://cs.wikipedia.org/wiki/Paret%C5%AFv_princip), které říká, že prvních 80% se naučíš za 20% času. Zbylých 20% ti bude trvat 80% času. Takže za cca 20% z 10000 hodin, tj 2000 hodin, tj 250 dní, když tomu věnuješ 8 hodin denně.
Samozřejmě, spousta firem je v dnešní situaci, kdy lidi na trhu moc nejsou, ochotna nabrat juniora a zaučit si ho, i když neumí prakticky nic. Takže práci můžeš sehnat po pár měsících, a učit se průběžně u toho.
Jazyk a tooling a prostředí a knihovny a tak dál jsou navíc jen jedna věc, a to ta čistě technická. Pak tu máš různé sociální stránky, jako například jak psát čistý kód (viz kniha Čistý kód (https://www.databazeknih.cz/knihy/cisty-kod-navrhove-vzory-refaktorovani-testovani-a-dalsi-techniky-agilniho-programovani-71304)), jak správně dokumentovat, ať už interně formou komentářů a docstringů, tak externě, formou generované dokumentace a UML diagramů. Jak dělat dobrou a rozšiřitelnou architekturu, což se třeba já mám pořád ještě hodně co učit, přestože jsem začal programovat v roce 2004 a profesionálně to dělám už víc jak pět let. Jak spolupracovat s lidmi v týmu (slack, IRC, wiki, ..), dělat nějaký agile (standupy, issues, sprinty..) a verzovat kód, ať už jde o třeba o GIT (viz třeba kniha Pro Git (https://www.root.cz/knihy/pro-git/)), nebo mercurial, jaký branchovací model budete používat. Jak dělat code review, a naopak, jak přijmout code review. Jak si plánovat práci (mně třeba hodně pomáhají osobní kanbany), odhadovat a pak dodržovat termíny. Jak rozplánovat projekt. Pak tu mýš čistě psychologické stránky, jako kde třeba brát dlouhodobě motivaci, jak se vyrovnat s frustrací, s nedostatkem energie, s tím když se nedaří. Jak nevyhořet, čím se rechargnout a jak dlouhodobě a konzistentně nabírat energii, abys podával optimální výkon. Jak se sebevzdělávat a nepřestat v tom jakmile se dostaneš na nějakou dostatečně funkční úroveň. Jak snášet kritiku a oddělit se od své práce, abys mohl snášet kritiku svojí práce. Spousta věcí je navíc propojená, různá algoritmizace jde plynule do teorie grafů a her a matematiky. Debugování třeba dost souvisí s vědeckou metodou a formováním hypotéz. Naučit se jak v klidu mnoho hodin debugovat nějaký problém, systematicky procházet prostor možných chyb a dělat heuristiky, které ti usnadní hledání chyb, a to vše bez toho aniž bys z toho měl stres a frustraci, to je taky běh na dlouhou trať.
Co se samotného hledání práce týče, tak jsem to kdysi trochu nakousl tady: http://www.abclinuxu.cz/blog/bystroushaak/2017/7/jak-se-stat-programatorem (http://www.abclinuxu.cz/blog/bystroushaak/2017/7/jak-se-stat-programatorem)
Relevantní meme:
(https://i.imgur.com/2gOeWm1.png)
-
Kdyz znas prislusna paradigmata, jazyk nehraje roli. Po trose praxe muze clovek zacit v libovolnem jazyku programovat v podstate okamzite skoro bez uceni (snad s vyjimkou nejakych exotik), resp. nauci se to za pochodu. Samozrejme to zpocatku nepujde uplne efektivne a hodne toho prepise, ale pujde to.
Otazka, za jak dlouho si muzes s C++ vydelavat je IMO znacne naivni, neco jako by ses ptal, za jak dlouho si muzes vydelavat sroubovakem. Ve "vydelavani pomoci C++" hraje C++ uplne stejnou roli jako ve "vydelavani pomoci sroubovaku" hraje sroubovak.
Nevim kolik ti je, ale asi bys svuj postoj k programovani v C++ mel prehodnotit ze "chci si vydelavat programovanim v C++" na "chci se naucit programovat v C++".
-
Všem děkuji za komentáře. Některé z nich jsou pro mě přínosné, některé méně, ale od toho tu jsem. Abych si vyslechl názor od lidí, kteří jsou skutečně zasvěceni do svého oboru.
Idris: To ano, ale předpokládám, že bych měl nejprve porozumět jazyku čistě teoreticky. Přečíst nějaké čtivo a sesmolit pár kódů. Pak bych se rád specializoval konkrétněji.
D.A. Tiger: Nu dobrá. Rozklikl jsem stránku, na kterou jste mě odkázal a nestačím na složení toho kódu v c++.
Mám zadáno:
int multiply(int a, int b)
{
a * b;
}
-Nejsem schopný určit, co je multiply. Nehledal jsem to hned na internetu, chtěl bych to vyřešit sám, až dosahnu potřebných znalostí. Podle mě tam chybí:
1) příkaz return 0;
2) nevidím knihovnu neboli hlavičku
3) nevidím tělo funkce
4) proměnné nejsou deklarované
Nejprve bude ovšem třeba zjistit, co multiply. Podle mého čistě nezaujatého názoru, je to nějaká funkce ke které se teprve dopracuji v knize.
K tomu příspěvku od _jenda. Ano přesně tak, napsal to jako zkušený programátor člověku, který je ve vajíčků. Asi proto jsem ho z logického a lidského hlediska nepochopil:)
Bystroushaak: Díky za skvělé informace. Budu dělat, co mohu:)
smrt28: Dobře, děkuji ti. Mé dotazy jsou čistě hypotetické a amatérské. Mohou proto pro Vás programátory působit nerelevantně.
Úplně nejlepší by byla osoba s kterou bych mohl občas prohodit pár slovíček a zeptat se ho jako mistra na mé chyby. Asi by se zde někdo takový nenašel, že?
-
Mám zadáno:
int multiply(int a, int b)
{
a * b;
}
-Nejsem schopný určit, co je multiply. Nehledal jsem to hned na internetu, chtěl bych to vyřešit sám, až dosahnu potřebných znalostí. Podle mě tam chybí:
1) příkaz return 0;
2) nevidím knihovnu neboli hlavičku
3) nevidím tělo funkce
4) proměnné nejsou deklarované
1) O return tam opravdu jde.
2) Příklad je malá součást libovolného většího programu, nepotřebuješ celý kód.
3) Tohle je celá funkce, hlavička i tělo funkce!
4) Proměnné jsou deklarované zcela dostatečně v hlavičce.
5) Je vhodné funkce pojmenovat podle toho co dělají. Multiply anglicky znamená...
long long int multiply(int a, int b)
{
return a * b;
}
Jo, Jenda to napsal velmi přesně, tak jen pro úplnost: http://norvig.com/21-days.html (http://norvig.com/21-days.html) Nebo řeklad do lidského jazyka: http://www.efton.sk/sk/learn_programming_in_10_years.html (http://www.efton.sk/sk/learn_programming_in_10_years.html)
Mimochodem, C++ není vhodný jazyk pro učení se programování.
-
To je otazka co je vhodny jazyk na uceni.
Jako stary C a C++kar bych se dnes ucil GO.
Neco jsem si cetl o Rust, ze = je tam vlastne move z C++ a pro C++kare je move novinka.
C++ me zivi a musim to umet, ale je to verkill templates, polymorphism, lambda, smart pointers, boost, qt no proste halda veci.
Jak rad bych delal v Go nebo v C.
-
(https://media.discordapp.net/attachments/445576622687649794/582951681063518218/60540932_2211195845595948_7116676250155876352_n.png)
-
A učil ses opravdu C++ nebo C with classes? On je v tom totiž dost podstatný rozdíl.
pavels: Je to C++, na což odkazuje i ona kniha.
Že se ta kniha jmenuje C++ ještě neznamená, že ve skutečnosti není o C with classes. Tam je právě ten podstatný rozdíl, ke kterému mířím. Moderní, idiomatické C++ by vypadalo nějak takto:
// C++11
template<class A, class B>
auto multiply( A&& a, B&& b) -> decltype(a * b)
{
return a * b;
}
Nebo dokonce:
// C++14
const auto multiply = [](auto a, auto b)
{
return a * b;
};
-
A učil ses opravdu C++ nebo C with classes? On je v tom totiž dost podstatný rozdíl.
pavels: Je to C++, na což odkazuje i ona kniha.
Že se ta kniha jmenuje C++ ještě neznamená, že ve skutečnosti není o C with classes. Tam je právě ten podstatný rozdíl, ke kterému mířím. Moderní, idiomatické C++ by vypadalo nějak takto:
// C++11
template<class A, class B>
auto multiply( A&& a, B&& b) -> decltype(a * b)
{
return a * b;
}
Nebo dokonce:
// C++14
const auto multiply = [](auto a, auto b)
{
return a * b;
};
To je dost hnusný. A fakt nechápu, proč by to takhle někdo psal.
-
// C++11
template<class A, class B>
auto multiply( A&& a, B&& b) -> decltype(a * b)
{
return a * b;
}
Nebo dokonce:
// C++14
const auto multiply = [](auto a, auto b)
{
return a * b;
};
Skvele, ten clovek ma evidentne problem s prostymi funkcemi a vy do nej perte sablony, alternativni zapis funkci, decltype, genericke lambda funkce a dalsi libustky. Kdyz uz je zmateny jak Goro pred Tokyem, tak at v tom ma teda sakra gulas... :(
Moderní, idiomatické C++ by vypadalo nějak takto:
Nesouhlasim. C with Classes se ten jazyk jmenoval do roku 1985. Od te doby je prejmenovan na C++. To na co narazite jsou pouze standardy, ktere puvodni C++ rozsiruji a meli by jej obohatit. je to asi stejny pristup, jako rict, ze pokud na bote nejsou tri bile pruhy, tak to neni bota, ale podkova.... Takze by spis bylo vhodnejsi, rici, ze jej uci C++98.
-
Já myslím, že správná a upřímná odpověď na tu otázku "za jak dlouho" je, že nikdy.
Takze by spis bylo vhodnejsi, rici, ze jej uci C++98.
Tento úhel pohledu tady úplně chybí - nechtěl bych se učit programovací jazyk, kterému se neustále mění syntaxe. (A už vůbec ne, jako ten první).
A to ne proto, že se ten jazyk prostě vyvíjí, ale proto, že starší konstrukce začnou být brzy obsolete, nebo dokonce deprecated stejně tak jako programy v nich. Máte třeba 10 let praxe s C++98, ale to co norma přidala/odebrala v roce 2017 si musíte nastudovat znovu.
-
Nesouhlasim. C with Classes se ten jazyk jmenoval do roku 1985. Od te doby je prejmenovan na C++. To na co narazite jsou pouze standardy, ktere puvodni C++ rozsiruji a meli by jej obohatit. je to asi stejny pristup, jako rict, ze pokud na bote nejsou tri bile pruhy, tak to neni bota, ale podkova.... Takze by spis bylo vhodnejsi, rici, ze jej uci C++98.
Nesouhlasím. Není to vůbec o verzi jazyka, v C++98 by ta funkce vypadala prakticky stejně:
// C++98
template<class A> A multiply( A a, B b)
{
return a * b;
}
Dopoučuji shlédnout Stop Teaching C (https://www.youtube.com/watch?v=YnWhqhNdYyk).
-
Tak s tim nesouhlasim: stop teaching C.
kdyby si lidi trosku hlidali alokaci, dealokaci, nebo by byl garbage collector jako v Go, tak by C++ nemuselo existovat.
Mi se zas libil clanek myslim od autora ZMQ, ze to mel psat v C a ne v C++.
-
No chlapi, děkuji za komentáře a rady. Cením si Vašich názorů. Nejprve musím alespoň dočíst tu knihu, pak uvidíme dál. Já jako absolutní nováček nevím, jaké je C++ v porovnání s ostatními jazyky. Vím ale, že mi zdrojový kód logicky nedělá problém, aspoň zatím. Chápu jej a uvidíme, co z toho bude. Zvládnu to!:)
-
No chlapi, děkuji za komentáře a rady. Cením si Vašich názorů. Nejprve musím alespoň dočíst tu knihu, pak uvidíme dál. Já jako absolutní nováček nevím, jaké je C++ v porovnání s ostatními jazyky. Vím ale, že mi zdrojový kód logicky nedělá problém, aspoň zatím. Chápu jej a uvidíme, co z toho bude. Zvládnu to!:)
Pro nováčka je C++ asi nejtěžší z rozšířených jazyků.
-
kdyby si lidi trosku hlidali alokaci, dealokaci
To je pro většinu příliš intelektuálně náročné.
-
No chlapi, děkuji za komentáře a rady. Cením si Vašich názorů. Nejprve musím alespoň dočíst tu knihu, pak uvidíme dál. Já jako absolutní nováček nevím, jaké je C++ v porovnání s ostatními jazyky. Vím ale, že mi zdrojový kód logicky nedělá problém, aspoň zatím. Chápu jej a uvidíme, co z toho bude. Zvládnu to!:)
Pro nováčka je C++ asi nejtěžší z rozšířených jazyků.
není, nejtěžší je Java, až pak nasleduje C++
-
GO
-
Za jak dlouho je člověk schopný se naučit programovat
hned a nikdy.
-
GO
To je odpoveď k čomu?
-
Za jak dlouho je člověk schopný se naučit programovat
hned a nikdy.
Súhlas, programovanie nie je psanie kódu, ale predovšetkým schopnosť vymyslieť efektívne algoritmy riešiace určité problémy, vysporiadať sa s problémami a dopredu vedieť navrhnúť postup akým sa bude riešiť to čo je potrebné. A to je schopnosť ktorú niektorý vedia ešte než sa začnú učiť svoj prvý programovací jazyk, a niektorý nevedia ani když už niečo zozliepali v niekoľkých jazykoch.
-
Já myslím, že správná a upřímná odpověď na tu otázku "za jak dlouho" je, že nikdy.
Takze by spis bylo vhodnejsi, rici, ze jej uci C++98.
Tento úhel pohledu tady úplně chybí - nechtěl bych se učit programovací jazyk, kterému se neustále mění syntaxe. (A už vůbec ne, jako ten první).
A to ne proto, že se ten jazyk prostě vyvíjí, ale proto, že starší konstrukce začnou být brzy obsolete, nebo dokonce deprecated stejně tak jako programy v nich. Máte třeba 10 let praxe s C++98, ale to co norma přidala/odebrala v roce 2017 si musíte nastudovat znovu.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
-
jazyk, kterému se neustále mění syntaxe.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
Dobře, to beru, možná se syntaxe C++ v průběhu času změnila méně, než třeba v Javě (generika, anotace, ...). Jde spíš o to, že se vůbec mění, a také jak často. Když se mění jen trochu, ale často, tak to možná nikomu tak nepřijde...
-
No chlapi, děkuji za komentáře a rady. Cením si Vašich názorů. Nejprve musím alespoň dočíst tu knihu, pak uvidíme dál. Já jako absolutní nováček nevím, jaké je C++ v porovnání s ostatními jazyky. Vím ale, že mi zdrojový kód logicky nedělá problém, aspoň zatím. Chápu jej a uvidíme, co z toho bude. Zvládnu to!:)
Pro nováčka je C++ asi nejtěžší z rozšířených jazyků.
není, nejtěžší je Java, až pak nasleduje C++
Java je proti C++ triviální. Dá se naučit poměrně rychle - za měsíc až dva se ji naučíš tak, že si s ní můžeš začít vydělávat.
-
Pro nováčka je C++ asi nejtěžší z rozšířených jazyků.
není, nejtěžší je Java, až pak nasleduje C++
Java je proti C++ triviální. Dá se naučit poměrně rychle - za měsíc až dva se ji naučíš tak, že si s ní můžeš začít vydělávat.
nemyslím si, resp. abych to upresnil tak môžem to povedať tak že sa dá Java naučiť rýchlejšie tak abys dokázal niečo zozliepať a naprogramovať, ale rozhodne si myslím že je Javu omnoho ťažšie sa naučiť tak abys chápal kompletne a presne jak to funguje a vedel v ňom naprogramovať SW kvalitne. Totiž C++ je striktnejšie, a nepovolí ti to naprogramovať až tak moc "špatne" ako Java.
-
Pro nováčka je C++ asi nejtěžší z rozšířených jazyků.
není, nejtěžší je Java, až pak nasleduje C++
Java je proti C++ triviální. Dá se naučit poměrně rychle - za měsíc až dva se ji naučíš tak, že si s ní můžeš začít vydělávat.
nemyslím si, resp. abych to upresnil tak môžem to povedať tak že sa dá Java naučiť rýchlejšie tak abys dokázal niečo zozliepať a naprogramovať, ale rozhodne si myslím že je Javu omnoho ťažšie sa naučiť tak abys chápal kompletne a presne jak to funguje a vedel v ňom naprogramovať SW kvalitne. Totiž C++ je striktnejšie, a nepovolí ti to naprogramovať až tak moc "špatne" ako Java.
He?
Tak to je poprve co slysim, ze se v Jave daji napsat vetsi praseciny nez v C++
Realita je presne opacna, nic jako pointerova aritmentika, multiinheritance, prima sprava pameti apod v Jave neni.
Java vznikla prave jako bezpecne C++ s osmirglovanymi hranami...
-
He?
Tak to je poprve co slysim, ze se v Jave daji napsat vetsi praseciny nez v C++
Realita je presne opacna, nic jako pointerova aritmentika, multiinheritance, prima sprava pameti apod v Jave neni.
Java vznikla prave jako bezpecne C++ s osmirglovanymi hranami...
Ja hovorím všeobecne o kvalite riešenia, nie o bezpečnosti z pohľadu toho jak umožnuje jazyk manipulovať s pamäťou. V Jave síce pointerova aritmetika a prima sprava pameti sice neni (resp. všetko je pred programátorom skryté), no samo o sobe jde to čo programuješ napísať prasácky, a hlavne tak, že výkon takej aplikácie sakra pokulháva. V C++ když programujem a viem jak programovať v tomto jazyku, tak vo všeobecnosti ľachšie vytvorím kvalitnú aplikáciu, ktorá nebude pri výpočte koľko dní chýba do konca roku žrať pol giga RAMky... (ok to zveličujem, ale princíp je jasný) ale v C++ sú aplikácie určite výkonnejšie a kvalitnejšie v tom zmysle že máš istotu čo ten kód robí (ak tomu rozumieš) a nedochádza tak často k zvláštnym neželaným stavom. V Jave je veľa abstrakcie a docela ľachko sa programátor stratí že čo je na čom jak závislé, a potrebuješ poznať stovky design patternov abys mal istotu že to čo naprogramuješ tak když o pol roka sa k tomu vrátiť a niečo zmeníš, tak že sa celá aplikácia nezosere, a toto spôsobuje dôvod prečo sa vätšina programátorov v Jave snaží to zosratie vyriešiť rôznymi pofidérnymi trikmi (kde práva vzniká nekvalitný kód). C++ na to nieje až tak náchylné. To je prečo môžem povedať že C++ viac tlačí na kvalitné riešenie.
-
He?
Tak to je poprve co slysim, ze se v Jave daji napsat vetsi praseciny nez v C++
Realita je presne opacna, nic jako pointerova aritmentika, multiinheritance, prima sprava pameti apod v Jave neni.
Java vznikla prave jako bezpecne C++ s osmirglovanymi hranami...
Ja hovorím všeobecne o kvalite riešenia, nie o bezpečnosti z pohľadu toho jak umožnuje jazyk manipulovať s pamäťou. V Jave síce pointerova aritmetika a prima sprava pameti sice neni (resp. všetko je pred programátorom skryté), no samo o sobe jde to čo programuješ napísať prasácky, a hlavne tak, že výkon takej aplikácie sakra pokulháva. V C++ když programujem a viem jak programovať v tomto jazyku, tak vo všeobecnosti ľachšie vytvorím kvalitnú aplikáciu, ktorá nebude pri výpočte koľko dní chýba do konca roku žrať pol giga RAMky... (ok to zveličujem, ale princíp je jasný) ale v C++ sú aplikácie určite výkonnejšie a kvalitnejšie v tom zmysle že máš istotu čo ten kód robí (ak tomu rozumieš) a nedochádza tak často k zvláštnym neželaným stavom. V Jave je veľa abstrakcie a docela ľachko sa programátor stratí že čo je na čom jak závislé, a potrebuješ poznať stovky design patternov abys mal istotu že to čo naprogramuješ tak když o pol roka sa k tomu vrátiť a niečo zmeníš, tak že sa celá aplikácia nezosere, a toto spôsobuje dôvod prečo sa vätšina programátorov v Jave snaží to zosratie vyriešiť rôznymi pofidérnymi trikmi (kde práva vzniká nekvalitný kód). C++ na to nieje až tak náchylné. To je prečo môžem povedať že C++ viac tlačí na kvalitné riešenie.
Jenže spotřeba RAM nikoho nezajímá, většina javistů beztak ani pořádně netuší, jak se paměť používá. Čau lidi, giga sem, giga tam, nemáš paměť? Sorry jako, dej si koblihu. Tímhle stylem uvažuje i většina uživatelů ::)
-
Jenže spotřeba RAM nikoho nezajímá.
jo, i výkon všeobecne... a pritom stejnak každý deň desattisíce ak nie stotisíce uživateľov rozmlátia klávesnicu lebo im počítač alebo program "zamrzol".... všetci Java programátori si hovoria že pamäť riešiť netreba, že pri dnešných kapacitách RAMiek je to zbytočné riešiť, no ale koľký používatelia nadávajú že im niečo zaseklo? Asi to nebude úplná pravda že spotreba RAM nikoho nezajímá. Ja když porovnávam kvalitu programovacích jazykov, tak za lepší (a kvalitnejší) jazyk vždy považujem ten v ktorom jde urobiť to isté výkonnejšie, kvalitnejšie, i bezpečnejšie (ako program samotný)... To že jazyk obsahuje to, čo môže spôsobiť problémy ak to nevieš neznamená že je špatný, lebo ak to vieš, zistíš že ti to pomôže vytvoriť práve ešte rýchlejší program.
-
tak za lepší (a kvalitnejší) jazyk vždy považujem ten v ktorom jde urobiť to isté výkonnejšie, kvalitnejšie, i bezpečnejšie (ako program samotný)...
ešte dodám že ale zas to neberte tak že assembler považujem za najkvalitnejší. Ešte som zabudol jednú vec, podľa ktorej sa rozhodujem, a to ako rýchlo ide daný program v danom jazyku naprogramovať. Zároveň kvôli potrebe psát už totálne všetko je tu zas ešte problém že je dosť pravdepodobné že programátor (aj profesionálny) urobí veľa chýb v kóde. Osobne sa pohybujem medzi jazykmi C, C++, Golang, a pod. Dokonca aj JavaScript
-
tak za lepší (a kvalitnejší) jazyk vždy považujem ten v ktorom jde urobiť to isté výkonnejšie, kvalitnejšie, i bezpečnejšie (ako program samotný)...
ešte dodám že ale zas to neberte tak že assembler považujem za najkvalitnejší. Ešte som zabudol jednú vec, podľa ktorej sa rozhodujem, a to ako rýchlo ide daný program v danom jazyku naprogramovať. Zároveň kvôli potrebe psát už totálne všetko je tu zas ešte problém že je dosť pravdepodobné že programátor (aj profesionálny) urobí veľa chýb v kóde. Osobne sa pohybujem medzi jazykmi C, C++, Golang, a pod. Dokonca aj JavaScript
Rozumný kompromis je třeba to Go. Nevede to za ručičku retardy jako Java, ale ani si v tom člověk neustřelí nohu jako v C, když se někde sekne.
-
jazyk, kterému se neustále mění syntaxe.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
Dobře, to beru, možná se syntaxe C++ v průběhu času změnila méně, než třeba v Javě (generika, anotace, ...). Jde spíš o to, že se vůbec mění, a také jak často. Když se mění jen trochu, ale často, tak to možná nikomu tak nepřijde...
Kdy se měnila syntax tak, že stávající způsoby už nešly použít? Imho C++ odvádí dobrou práci ve zpětné kompatibilitě... bohužel taky ta syntax podle toho vypadá.
-
Ešte som zabudol jednú vec, podľa ktorej sa rozhodujem, a to ako rýchlo ide daný program v danom jazyku naprogramovať. Zároveň kvôli potrebe psát už totálne všetko je tu zas ešte problém že je dosť pravdepodobné že programátor (aj profesionálny) urobí veľa chýb v kóde. Osobne sa pohybujem medzi jazykmi C, C++, Golang, a pod. Dokonca aj JavaScript
Tak do toho svého portfolia zkus zahrnout i Lisp, ve kterém se dá programovat skutečně rychle a rychlý je i jeho běh při minimálních nárocích na prostředky.
-
Ešte som zabudol jednú vec, podľa ktorej sa rozhodujem, a to ako rýchlo ide daný program v danom jazyku naprogramovať. Zároveň kvôli potrebe psát už totálne všetko je tu zas ešte problém že je dosť pravdepodobné že programátor (aj profesionálny) urobí veľa chýb v kóde. Osobne sa pohybujem medzi jazykmi C, C++, Golang, a pod. Dokonca aj JavaScript
Tak do toho svého portfolia zkus zahrnout i Lisp, ve kterém se dá programovat skutečně rychle a rychlý je i jeho běh při minimálních nárocích na prostředky.
ten jazyk neznám, i když som o ňom počul, preto nemôžem hodnotiť.
-
Lisp, haskell jsou fajn na trenink premysleni.
da se to pouzit i prakticky, v kombinaci s C++ nebo Javou ve vetsim projektu??
-
Tak do toho svého portfolia zkus zahrnout i Lisp, ve kterém se dá programovat skutečně rychle a rychlý je i jeho běh při minimálních nárocích na prostředky.
ten jazyk neznám, i když som o ňom počul, preto nemôžem hodnotiť.
Určitě se vyplatí Lisp naučit, i kdybys v něm nenapsal žádnou aplikaci. Získáš nový náhled na programování, který uplatníš v ostatních jazycích. Syntakticky je Lisp velmi jednoduchý, základy zvládneš za několik minut. Používám ho i jako výkonnou kalkulačku pro práci s neomezenou přesností, s komplexními čísly a se zlomky.
-
Lisp, haskell jsou fajn na trenink premysleni.
da se to pouzit i prakticky, v kombinaci s C++ nebo Javou ve vetsim projektu??
Ano, spolupráce Lispu s C++ je možná. C++ se dává dolů a Lisp nahoru. Ovšem výkon se tím moc nezvýší, neboť efektivita Lispu je srovnatelná s C++. Rychlost vývoje je v Lispu vyšší. Na rozdíl od C++ je možné program v Lispu modifikovat za běhu, tedy zero downtime.
-
Dopoučuji shlédnout Stop Teaching C (https://www.youtube.com/watch?v=YnWhqhNdYyk).
Ano, to je přesné: http://programujte.com/clanek/2006030305-rozhovor-s-bjarne-stroustrupem/ (http://programujte.com/clanek/2006030305-rozhovor-s-bjarne-stroustrupem/)
Jenže spotřeba RAM nikoho nezajímá, většina javistů beztak ani pořádně netuší, jak se paměť používá.
Nalezeno kdysi před lety v jedné diskuzi:
"Sem-tam si vzpomenu a říkám si, že ten vývoj jde nějak divně, když na Indigo² s 256MiB RAM a starším software bylo možné spočítat věci, co na x86-64 s novějším software, nelze ani s 8GiB RAM (a s 24GiB to trvá přibližně stejně dlouho a kvalitativně velmi podobně)."
-
jazyk, kterému se neustále mění syntaxe.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
Dobře, to beru, možná se syntaxe C++ v průběhu času změnila méně, než třeba v Javě (generika, anotace, ...). Jde spíš o to, že se vůbec mění, a také jak často. Když se mění jen trochu, ale často, tak to možná nikomu tak nepřijde...
Kdy se měnila syntax tak, že stávající způsoby už nešly použít? Imho C++ odvádí dobrou práci ve zpětné kompatibilitě... bohužel taky ta syntax podle toho vypadá.
Ať se držíme tématu vlákna, nejde vůbec o kompatibilitu. Začátečník se učí C++, ale syntaxe jazyka se každý rok mění. Logicky se dostane i k aplikacím, které nenapsal, ale používají novou normu, i když ji sám nechce používat...
-
Malá ukázka jednoduchého webserveru napsaného v Lispu, resp. v jeho dialektu Racket:
#lang web-server
(require web-server/http)
(provide interface-version stuffer start)
(define interface-version 'stateless)
(define stuffer
(stuffer-chain
serialize-stuffer
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
(define (start req)
(response/xexpr
`(html (body (h2 "Look ma, no state!")))))
-
Malá ukázka jednoduchého webserveru napsaného v Lispu, resp. v jeho dialektu Racket:
#lang web-server
(require web-server/http)
(provide interface-version stuffer start)
(define interface-version 'stateless)
(define stuffer
(stuffer-chain
serialize-stuffer
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
(define (start req)
(response/xexpr
`(html (body (h2 "Look ma, no state!")))))
I am stuffed.
-
jazyk, kterému se neustále mění syntaxe.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
Dobře, to beru, možná se syntaxe C++ v průběhu času změnila méně, než třeba v Javě (generika, anotace, ...). Jde spíš o to, že se vůbec mění, a také jak často. Když se mění jen trochu, ale často, tak to možná nikomu tak nepřijde...
Kdy se měnila syntax tak, že stávající způsoby už nešly použít? Imho C++ odvádí dobrou práci ve zpětné kompatibilitě... bohužel taky ta syntax podle toho vypadá.
Ať se držíme tématu vlákna, nejde vůbec o kompatibilitu. Začátečník se učí C++, ale syntaxe jazyka se každý rok mění.
Ne, nemění se. Rozšiřuje (a někdy i zjednodušuje) se způsob, jakým se dají věci psát. A rozhodně ne každý rok.
Logicky se dostane i k aplikacím, které nenapsal, ale používají novou normu, i když ji sám nechce používat...
A úplně stejně to funguje opačně. Nikdo nikoho nenutí používat nové způsoby, stejně jako nenutí používat staré. Na rozdíl od jiných jazyků.
Malá ukázka jednoduchého webserveru napsaného v Lispu, resp. v jeho dialektu Racket:
#lang web-server
(require web-server/http)
(provide interface-version stuffer start)
(define interface-version 'stateless)
(define stuffer
(stuffer-chain
serialize-stuffer
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
(define (start req)
(response/xexpr
`(html (body (h2 "Look ma, no state!")))))
Lost In Stupid Parenthesis?
-
Malá ukázka jednoduchého webserveru napsaného v Lispu, resp. v jeho dialektu Racket:
#lang web-server
(require web-server/http)
(provide interface-version stuffer start)
(define interface-version 'stateless)
(define stuffer
(stuffer-chain
serialize-stuffer
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
(define (start req)
(response/xexpr
`(html (body (h2 "Look ma, no state!")))))
Lost In Stupid Parenthesis?
Není tam víc závorek než ve srovnatelném programu v C++ či Javě. Naopak je tam méně balastu.
-
Lisp, haskell jsou fajn na trenink premysleni.
da se to pouzit i prakticky, v kombinaci s C++ nebo Javou ve vetsim projektu??
Haskell se používá v praxi, stejně jako Lisp nebo třeba Prolog. IBM v tom má systémy pro HPC clustery (v kombinaci s OO jazyky).
-
Není tam víc závorek než ve srovnatelném programu v C++ či Javě. Naopak je tam méně balastu.
Haskell?
Jinak nejde o počet. Byť můj příspěvek byl hlavně vzpomenutí si na tento vtípek. Lisp ještě nevedu. :)
-
jazyk, kterému se neustále mění syntaxe.
Jenze ona se zas az tak zasadne nemeni, je pouze doplnovana, ci korigovana v ramci vyvoje jazyka samotneho. To se prece deje vetsine jazyku. Navic, nikde neni psano, ze zavedenim zkraceneho cyklu for prestal platit ten puvodni. Nebo ze nutne musite pouzivat automatickou typovou inferenci misto explicitni deklarace typu a pod.
Dobře, to beru, možná se syntaxe C++ v průběhu času změnila méně, než třeba v Javě (generika, anotace, ...). Jde spíš o to, že se vůbec mění, a také jak často. Když se mění jen trochu, ale často, tak to možná nikomu tak nepřijde...
Kdy se měnila syntax tak, že stávající způsoby už nešly použít? Imho C++ odvádí dobrou práci ve zpětné kompatibilitě... bohužel taky ta syntax podle toho vypadá.
Ať se držíme tématu vlákna, nejde vůbec o kompatibilitu. Začátečník se učí C++, ale syntaxe jazyka se každý rok mění.
Ne, nemění se. Rozšiřuje (a někdy i zjednodušuje) se způsob, jakým se dají věci psát. A rozhodně ne každý rok.
Logicky se dostane i k aplikacím, které nenapsal, ale používají novou normu, i když ji sám nechce používat...
A úplně stejně to funguje opačně. Nikdo nikoho nenutí používat nové způsoby, stejně jako nenutí používat staré. Na rozdíl od jiných jazyků.
Malá ukázka jednoduchého webserveru napsaného v Lispu, resp. v jeho dialektu Racket:
#lang web-server
(require web-server/http)
(provide interface-version stuffer start)
(define interface-version 'stateless)
(define stuffer
(stuffer-chain
serialize-stuffer
(md5-stuffer (build-path (find-system-path 'home-dir) ".urls"))))
(define (start req)
(response/xexpr
`(html (body (h2 "Look ma, no state!")))))
Lost In Stupid Parenthesis?
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
-
Lost In Stupid Parenthesis?
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A ty i časovat.
Nebuď úzkoprsý, Idrisi. :)
-
Není tam víc závorek než ve srovnatelném programu v C++ či Javě. Naopak je tam méně balastu.
Haskell?
Jinak nejde o počet. Byť můj příspěvek byl hlavně vzpomenutí si na tento vtípek. Lisp ještě nevedu. :)
Haskell má těch závorek méně, ale zatím ho neovládám. Lisp by však měl být o něco výkonnější.
-
Lost In Stupid Parenthesis?
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A ty i časovat.
Neumíš přiznat chybu a místo toho kolem sebe kopeš? Super přístup ???
-
Mnozí tu píší, že jsem si na začátek vybral poměrně komplexní a náročný jazyk. Padly zde zajímavé názory, stejně jako jejich výměny.
Uvědomuji si, že jsem teprve ve vajíčku a začínám objevovat nový svět. Díky Vám profesionálům a Vašim názorům si dokáži mnohé představit. Dovolte mi tudíž pár dotazů, pro mě momentálně dosti relevantních.
1)Kdybyste se mohli vrátit na počátek, udělali byste něco jinak? Jaký by byl Váš postup, když se na to podíváte s odstupem času?
2)Jaké nejčastější chyby jste dělali?
3)Kdybyste mohli nováčkovi poradit, jakou literaturu a jaký jazyk byste mu doporučili?
Ještě jednou děkuji za Váš čas :)
-
Lost In Stupid Parenthesis?
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A ty i časovat.
Neumíš přiznat chybu a místo toho kolem sebe kopeš? Super přístup ???
Ne, já to beru. Opravdu. Jen je to takové nedůstojné, když někdo kritizuje něco, co sám nezvládá a ještě i něco navíc. :)
-
2)Jaké nejčastější chyby jste dělali?
To by vydalo na knihu. Možná na celou sérii. ;D Navíc člověk chyby dělá stále, a také to je často i otázkou jazyka, tudíž se to asi nedá tak snadno říct.
3)Kdybyste mohli nováčkovi poradit, jakou literaturu a jaký jazyk byste mu doporučili?
Mno, já bych doporučil JavaScript, ale to mě tu někteří asi sežerou. K tomu se dá na webu najít i spousta kvalitní dokumentace (https://developer.mozilla.org/cs/), přednášek, knih (Ondřej Žára napsal jednu hezkou, byť by bylo fajn nejdřív vědět, co je to funkce a rekurze, dají se najít i jeho přednášky, ale opět jsou spíš pro trochu znalé) a tak dále. Navíc je asynchronní, což je něco, co mají někteří programátoři problém pochopit. Má C-like syntax. Je všude.
Zajímavý je i Haskell, ale tam je ta vstupní bariéra výš než u C++. Jsi samouk, takže si nejsem jist, nakolik je to takto proveditelné. (možná by tě ale mohlo zajímat toto https://www.edx.org/course/introduction-to-functional-programming-2 , nebo http://naucte-se.haskell.cz/).
Nejhorší volbou není ani ten Python. Když už nic jiného, tak aspoň naučí nějak strukturovat kód.
-
a jaký jazyk byste mu doporučili?
Rust. Pro začátečníka je náročný na učení, ale to C++ taky. Výkon srovnatelný s C++. Spousta chyb, které se v C++ projeví až za běhu, odchytí Rust už při překladu.
-
1)Kdybyste se mohli vrátit na počátek, udělali byste něco jinak? Jaký by byl Váš postup, když se na to podíváte s odstupem času?
2)Jaké nejčastější chyby jste dělali?
3)Kdybyste mohli nováčkovi poradit, jakou literaturu a jaký jazyk byste mu doporučili?
- Asi bych se víc věnoval Lispu
- Programování je hlavně o chybování
- Jazyk Python, knihu Clean Code
-
a jaký jazyk byste mu doporučili?
Rust. Pro začátečníka je náročný na učení, ale to C++ taky. Výkon srovnatelný s C++. Spousta chyb, které se v C++ projeví až za běhu, odchytí Rust už při překladu.
Souhlasím. Pokud mohu být trochu kategorický, tak věnovat se C++ má v dnešní době smysl v případě, kdy se chceš věnovat nějakým legaci věcem. Osobně jsem přesvědčen, že Rust je nástupce C, C++, a nemá smysl se učit pro danou niku něco jiného.
-
3)Kdybyste mohli nováčkovi poradit, jakou literaturu a jaký jazyk byste mu doporučili?
To docela záleží co chceš dělat (což z tebe ještě nevypadlo). Osobně bych pro obecné programování začal s Pythonem, a až ho trochu budeš umět, tak přidat C (obyčejné, ne C++) - jednak z praktického důvodu (výkon, lowlevel embedded platformy), jednak proto, že si člověk uvědomí, jak počítače fungují uvnitř. S tím se pak nějak domluvíš všude.
-
Lost In Stupid Parenthesis?
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A ty i časovat.
Neumíš přiznat chybu a místo toho kolem sebe kopeš? Super přístup ???
Ne, já to beru. Opravdu. Jen je to takové nedůstojné, když někdo kritizuje něco, co sám nezvládá a ještě i něco navíc. :)
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
-
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
Na úrovni se můžeme bavit, až nějakou získáš. Zatím místo k věci reaguješ na vtípky kritikou skloňování, které (vedle časování) sám nezvládáš.
Jinak tím "až něco dokážeš" se dost ohání lidé, se kterými nevím, jestli bys chtěl být spojován. Hlavně by mě zajímalo, co ty víš o tom, co kdo dokázal. ::)
-
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
které (vedle časování) sám nezvládáš.
Tohle je právě ten blábol, nemáš jediný příklad.
-
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
které (vedle časování) sám nezvládáš.
Tohle je právě ten blábol, nemáš jediný příklad.
:o :o :o :o :o :o :o
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A kdyby ti to nestačilo, tak ve vedlejším vlákně si můžeš opravit čárku. Ale chápu, že vlastní medicína nechutná.
-
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
které (vedle časování) sám nezvládáš.
Tohle je právě ten blábol, nemáš jediný příklad.
:o :o :o :o :o :o :o
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A kdyby ti to nestačilo, tak ve vedlejším vlákně si můžeš opravit čárku.
Meleš blbosti, tady ani vedle žádná chyba není. Ovčáčku ;)
-
Jen blábolíš. Možná až se dovzděláš a něco dokážeš, budeme se moci bavit na úrovni.
které (vedle časování) sám nezvládáš.
Tohle je právě ten blábol, nemáš jediný příklad.
:o :o :o :o :o :o :o
Když chceš bejt vtipnej, nauč se aspoň nejdřív skloňovat.
A kdyby ti to nestačilo, tak ve vedlejším vlákně si můžeš opravit čárku.
Meleš blbosti, tady ani vedle žádná chyba není. Ovčáčku ;)
Stačí jedna citace
Neumíš přiznat chybu a místo toho kolem sebe kopeš? Super přístup ???
:)
-
Souhlasím. Pokud mohu být trochu kategorický, tak věnovat se C++ má v dnešní době smysl v případě, kdy se chceš věnovat nějakým legaci věcem. Osobně jsem přesvědčen, že Rust je nástupce C, C++, a nemá smysl se učit pro danou niku něco jiného.
Pro osamoceného programátora ve vakuu by to možná platilo. :) Výběr jazyka není čistě technické rozhodnutí. Pro C++ mluví třeba to, že management daleko snáze sežene lidi kteří umí C++ než Rust. Taže i projekt na zelené louce je stále pravděpodobnější v C++ než v Rustu.
A ta zmínka o legacy věcech mě fakt pobavila. Třeba "legacy" state of the art herní enginy, co?
Rust je rozhodně zajímavý jazyk a krok správným směrem. Ale jestli se vůbec ujme je stále ve hvězdách.
-
a jaký jazyk byste mu doporučili?
Rust. Pro začátečníka je náročný na učení, ale to C++ taky. Výkon srovnatelný s C++. Spousta chyb, které se v C++ projeví až za běhu, odchytí Rust už při překladu.
Souhlasím. Pokud mohu být trochu kategorický, tak věnovat se C++ má v dnešní době smysl v případě, kdy se chceš věnovat nějakým legaci věcem. Osobně jsem přesvědčen, že Rust je nástupce C, C++, a nemá smysl se učit pro danou niku něco jiného.
Mnohem rozšířenějším "nástupcem" je spíš Go.
-
GO bych videl vic jak C potomka s vlivem dalsich jazyku.
Rust je zas vic potomek C++.
-
GO bych videl vic jak C potomka s vlivem dalsich jazyku.
Rust je zas vic potomek C++.
Ve smyslu, že Rust je složitější?
-
A ta zmínka o legacy věcech mě fakt pobavila. Třeba "legacy" state of the art herní enginy, co?
Proč by aplikace v Rustu nemohla využívat engine v C++? Na PHP se mi například líbí bezešvé napojení na hromadu dalších jazyků. Nemusím vše dělat v jednom monolitu, jako například v Javě, ale mohu určitou komponentu aplikace napsat v něčem vhodnějším. Taková vlastnost je významnou devizou každého jazyka, který to umí.
-
A ta zmínka o legacy věcech mě fakt pobavila. Třeba "legacy" state of the art herní enginy, co?
Proč by aplikace v Rustu nemohla využívat engine v C++? Na PHP se mi například líbí bezešvé napojení na hromadu dalších jazyků. Nemusím vše dělat v jednom monolitu, jako například v Javě, ale mohu určitou komponentu aplikace napsat v něčem vhodnějším. Taková vlastnost je významnou devizou každého jazyka, který to umí.
No samo že mohla. O tom žádná. Já to psal jako reakci na to, že C++ má být potřeba jen pokud se chce věnovat legacy věcem. Což mi přijde kapku mimo, pokud "legacy" není úplně prázdný pojem.
Ale teda jako vyšší vrstvu nad nějakým enginem si dokážu představit spoustu lepších jazyků, než zrovna Rust. Ten se hodí právě spíš do těch spodních vrstev, ale IMO bude problém ho tam dostat.
-
Ale teda jako vyšší vrstvu nad nějakým enginem si dokážu představit spoustu lepších jazyků, než zrovna Rust. Ten se hodí právě spíš do těch spodních vrstev, ale IMO bude problém ho tam dostat.
Tak s tím souhlasím. Dlouho nebylo pro spodní vrstvy nic vhodnějšího než Fortran, C nebo C++. Když se objevil Rust, tak jsem se na něj zpočátku koukal s despektem, ale zdá se, že se jeho pozice zlepšují.
-
GO bych videl vic jak C potomka s vlivem dalsich jazyku.
Rust je zas vic potomek C++.
Ve smyslu, že Rust je složitější?
Spis to mam tak, ze C mam rad, ale jsem nucen pracovat s C++, tak bych si vybral radsi Go.
Kdo ma radsi C++ by si spis asi vybral Rust.
-
GO bych videl vic jak C potomka s vlivem dalsich jazyku.
Rust je zas vic potomek C++.
Ve smyslu, že Rust je složitější?
Spíše, že Rust je mocnější.
Ale je možné, že ze mě mluví potřeba po statickém typování. Zatímco GO, je spíše takové poraď si sám (bez pejorativnosti).
-
Ja si pamatuju, ze kdyz jsem se jeste jako bazant nekdy v 1. rocniku na VS zacal ucit C++, tak poucen znalostmi pointru v C jsem mel dojem, ze je to vlastne strasne jedndocuhe, a citil jsem se jako na koni, ze ten jazyk uz vlastne umim - protoze slychaval jsem narky, ze C++ je strasne tezky.
C++ je hrozna multiparadigmaticka hydra a je slozity jako prase, je plny nastrah. Zbastlit se v tom neco samozrejme neco da hned, ale udelat neco dobre vyzaduje kopec znalosti. A to ani nemluvim o tom, ze na trhu prace to potom ani neni dostatecne zaplacene.
-
Takto polozena otazka je absurdni. Odpovida zhruba tomu: Zacal jsem se ucit nemcinu. Za jak dlouho budu psat nemecky romany tak, abych se tim uzivil?
Programovani i psani romanu vyzaduje "trochu" vic nez jen znalost jazyka.
-
A to ani nemluvim o tom, ze na trhu prace to potom ani neni dostatecne zaplacene.
Senior se hravě dostane na 150 tisíc Kč. To není zas tak málo.
-
A to ani nemluvim o tom, ze na trhu prace to potom ani neni dostatecne zaplacene.
Senior se hravě dostane na 150 tisíc Kč. To není zas tak málo.
Což mě přivádí k myšlence, vyplatí se ten jazyk?
-
Takto polozena otazka je absurdni. Odpovida zhruba tomu: Zacal jsem se ucit nemcinu. Za jak dlouho budu psat nemecky romany tak, abych se tim uzivil?
Aby se člověk uživil, nemusí mít programátorské schopnosti na úrovni psaní románů, jak dokazuji třeba já.
-
To C++ bych možná na chvíli odložil a začal bych s C. Jazyk C tě naučí základy procedurálního programování, tedy podmínky, cykly, funkce, struktury, ukazatele. Navíc C++ z C vychází, takže pochopíš, proč C++ vypadá, tak jak vypadá. Pokud se začneš učit C, mohu ti na začátek doporučit dvě kvalitní knihy, které jsou k dostání v českém jazyce, a sice Programovací jazyk C (Kernighan, Ritchie), tuto knihu zná každý pokročilejší programátor, a Učebnici jazyka C (Pavel Herout). Jazyk C je základ programování a měl by ho znát každý lepší programátor. C se používá hlavně k programování operačních systémů (linux), ovládačů, kompilátorů a interpretů. Například Python, Ruby nebo Perl jsou napsány v C. C se hodí i k učení algoritmů a datových struktur.
Až budeš mít nějaké základy céčka, tak se klidně můžeš vrátit k C++. Kvalitní knihy o C++ jsou třeba Programming: Principles and Practice Using C++ (Stroustrup), z této knihy se naučíš vážně hodně. Dále jako referenci můžeš použít The C++ Programming Language (Stroustrup) nebo C++ Primer (Lippman). Mimochodem Bjarne Stroustrup je tvůrce jazyka C++.
Docela elegatní kód pro tetris najdeš zde:
https://doc.qt.io/qt-5/qtwidgets-widgets-tetrix-example.html
Toto není čisté C++, ale jedná se o gui framework Qt.
Předtím než se začneš učit programovat, měl by sis ujasnit, co vlastně chceš programovat. Programování je hodně těžké a komplikované, existuje spousta jazyků a každý se hodí tak trochu na něco jiného. A skutečné programování často není tak krásné, elegantní a čisté, jak se zdá z některých knih.