Stromové struktury a tridici algoritmy

anonym

Re:Stromové struktury a tridici algoritmy
« Odpověď #45 kdy: 17. 11. 2017, 16:38:16 »
Přičemž to Array.sort by mi IDE opravilo na Arrays.sort(). Nadhera. A uvařil bych si kafe.


Re:Stromové struktury a tridici algoritmy
« Odpověď #46 kdy: 17. 11. 2017, 17:07:06 »
Připadá mi opravdu tristní, že tak přirozené a jasné věci tu musím psát.
Mně připadá tristní, že tu neustále předvádíte, o jak úzkém výseku programování něco víte, a přesto si myslíte, jak dobře rozumíte celému oboru programování a chcete o tom poučovat ostatní.

A to víte, nebo jen podle sebe usuzujete o schopnostech ostatních?
Já, na rozdíl od vás, neposuzuju ostatní podle sebe. Posuzuju vás podle toho, co jste napsal.

A taky takový forman věděl, co dát tomu koňovi nažrat, jak v závislosti na nákladu a těch koních jet, aby to netrvalo věčnost a přitom ty koně neuštvat, jak poznat, jestli (a co) má s nohou, jestli má zdravé zuby, jestli není nadmutý, uměl rozeznat klisnu od valacha, vyznal se v různých typech sedel a chomoutů a dokázal posoudit jejich vhodnost pro konkrétního koně a účel, vyznal se v základech sedlařiny, když bylo nezbytné něco opravit atd. Podle vás to byly zbytečnosti - koně dostane přece už osedlaného a on je tu jen od toho, aby tahal za opratě, že... Přece není žádný zvěrolékař ani kovář. Problematika koňů je přece tak strašně široká...
Ne, podle mne by to nebyly zbytečnosti. Podle mne to jsou zbytečnosti, dnes, pro inženýra vyvíjejícího robotické auto. Protože vám unikla taková drobnost, že dnes už hlavním prostředkem pro dopravu osob nejsou koně. Robotické auto není založené na koňovi, ani v něm nikde žádný kůň není ukrytý.

To je právě ten chybějící všeobecný přehled, kdy sice detailně víte, jak se správně starat o koně, ale už vám unikla ta souvislost, že auto sice nahradilo koně, ale auto není vylepšený kůň.

Ale když už to tu tak řešíte a považujete to za tak zásadní, tak bych tedy řekl, že "třídění" je přeci jen obecnější pojem a že řazení je vlastně jenom určitá forma třídění podle velikosti.
Neřadí se jen podle velikosti, třeba slova ve slovníku jsou řazená abecedně. Jména lidí na seznamech také bývají řazena abecedně, ono se v tom pak lépe hledá, než kdyby tam byli lidé podle velikosti. Je pravda, že se dá řadit i tak, že položky nejprve roztřídíte a pak seřadíte třídy. Ale řazení rozhodně není jen třídění – u řazení je podstatné to, že jsou ty prvky nebo třídy v určitém pořadí, tj. že ty prvky jsou na nějaké ose nebo škále a je definováno nějaké pravidlo, podle kterého se určí, že nějaký prvek má být dřív než jiný, nebo více vlevo, vepředu, nahoře. Když řeknete houfu žáků na hřišti, ať se rozdělí do skupin po pěti, tak se vám sice žáci roztřídí, ale ty skupinky nebudou nijak seřazené, budete je mít po tom hřišti různě roztroušené, podle toho, kde se zrovna sešli. Seřadíte je teprve tím, když jim řeknete, aby z těch pětic udělali pětistup.

Lopata

Re:Stromové struktury a tridici algoritmy
« Odpověď #47 kdy: 17. 11. 2017, 17:47:54 »
A Bokr na FAV ZČU za podobné věci rovnou vyhazoval od zkoušky. To jen někteří mistři si myslí, že když to na MFF mají nějak, tak to tak zaručeně musí být správně, protože přece MFF.
Tak pokud od zkoušky z programování vyhazoval zrovna za toto, tak to měl asi nějaký psychický problém. Jinak vůbec netuším, o koho jde, a proč by mělo být důležité, že nějaká bezvýznamná figurka na nějaké místní sorbonně dělala něco jinak, než to dělají na Matfyzu, zvlášť pokud jde jen o pouhé označení nějaké kategorie.  :D

O tomhle přesně mluvím ;-)

gll

Re:Stromové struktury a tridici algoritmy
« Odpověď #48 kdy: 17. 11. 2017, 18:13:49 »
souhlasím s Filipem Jirsákem. Jedná se o javascript. Tam mikrooptimalizace nedávají smysl. Výkonostní problémy webových aplikací souvisí s nesprávnou DOM manipulací na straně frontendu a nesprávnou prací s databází na straně backendu.


Kiwi

Re:Stromové struktury a tridici algoritmy
« Odpověď #49 kdy: 17. 11. 2017, 18:29:18 »
Připadá mi opravdu tristní, že tak přirozené a jasné věci tu musím psát.
Mně připadá tristní, že tu neustále předvádíte, o jak úzkém výseku programování něco víte, a přesto si myslíte, jak dobře rozumíte celému oboru programování a chcete o tom poučovat ostatní.
To není úzký výsek, to je něco, čemu se říká základy. Na nich je vybudováno to ostatní. Jinak mým oborem je průmyslová automatizace. O jejích specialitách a konkrétních technologiích, které člověk musí znát, aby se v tom oboru uplatnil, tu nepíšu nic. Ale znovu opakuji, že i když toho je obrovské množství (ne toho, co umím, ale toho, co se v této oblasti vyskytuje), není to nic, co by člověk, který zvládl základy, nepochopil.

A taky takový forman věděl, co dát tomu koňovi nažrat, jak v závislosti na nákladu a těch koních jet, aby to netrvalo věčnost a přitom ty koně neuštvat, jak poznat, jestli (a co) má s nohou, jestli má zdravé zuby, jestli není nadmutý, uměl rozeznat klisnu od valacha, vyznal se v různých typech sedel a chomoutů a dokázal posoudit jejich vhodnost pro konkrétního koně a účel, vyznal se v základech sedlařiny, když bylo nezbytné něco opravit atd. Podle vás to byly zbytečnosti - koně dostane přece už osedlaného a on je tu jen od toho, aby tahal za opratě, že... Přece není žádný zvěrolékař ani kovář. Problematika koňů je přece tak strašně široká...
Ne, podle mne by to nebyly zbytečnosti. Podle mne to jsou zbytečnosti, dnes, pro inženýra vyvíjejícího robotické auto. Protože vám unikla taková drobnost, že dnes už hlavním prostředkem pro dopravu osob nejsou koně. Robotické auto není založené na koňovi, ani v něm nikde žádný kůň není ukrytý.
Ano. Dnešní automobily nejsou založeny na koních, proto není třeba, aby se automotive inženýři vyznali v koních.
A programátoři se nemusejí vyznat v základech programování, protože ... dnešní programování není založeno na algoritmech a datových strukturách? Tak jste to myslel?  :D

Ale když už to tu tak řešíte a považujete to za tak zásadní, tak bych tedy řekl, že "třídění" je přeci jen obecnější pojem a že řazení je vlastně jenom určitá forma třídění podle velikosti.
Neřadí se jen podle velikosti, třeba slova ve slovníku jsou řazená abecedně.
Já to tušil, hned jak jsem tu odpověď odeslal, že se najde někdo, kdo se bude šťourat v tomto. Děkuji za upozornění na tento Váš cenný postřeh - občas si tu připadám jako mezi frekventanty pomocné školy.
Jen doplním, že se dají seřadit i podle hmotnosti, průměru pasu, množství podkožního tuku, ba i podle odstínu barvy vlasů či podle místa bydliště - jen si to představte! A jak je to možné, ptáte se? To se zavede nějaká funkce (podle okolností bývá označována jako ohodnocovací funkce či metrika), která nám bodům v prostoru poměřovaných vlastností přiřadí nějaké číselné hodnoty a dané body potom srovnáme podle velikostí těchto hodnot. Ony nám ty číslicové počítače, potvory jedny, vůbec těžko pracují s informacemi, jež nejdou převést na číselné hodnoty.

Ale řazení rozhodně není jen třídění – u řazení je podstatné to, že jsou ty prvky nebo třídy v určitém pořadí, tj. že ty prvky jsou na nějaké ose nebo škále a je definováno nějaké pravidlo, podle kterého se určí, že nějaký prvek má být dřív než jiný, nebo více vlevo, vepředu, nahoře. Když řeknete houfu žáků na hřišti, ať se rozdělí do skupin po pěti, tak se vám sice žáci roztřídí, ale ty skupinky nebudou nijak seřazené, budete je mít po tom hřišti různě roztroušené, podle toho, kde se zrovna sešli. Seřadíte je teprve tím, když jim řeknete, aby z těch pětic udělali pětistup.
Jediný rozdíl vidím čistě jazykový - seřadit = postavit za (vedle) sebe do řady. Když řeknu žákům, aby se seřadili, rozhodně to nemusí znamenat, že se mají seřadit podle velikos... totiž, pardon, nějakého kritéria (věku, hmotnosti, hustoty ranní stolice, velikosti...), ale že mají stát v řadě za sebou (v jídelně) nebo vedle sebe (při nástupu). Žádné pravidlo, podle něhož má zrovna žák B stát za žákem A a před žákem C tu nepozoruji. Řazení nutně nevyžaduje přítomnost nějakého kritéria. Pokud však něco třídím, činím tak zásadně podle nějakého kritéria, což je i podstatou třídicích algoritmů.
Takže aspoň nějaký pozitivní výsledek tato absurdní debata pro mě měla - ve výše uvedeném odstavci jsem si aspoň ujasnil, že pojem "třídicí" algoritmy vůbec nebyl zvolen náhodně a že je rozhodně výstižnější než "řadicí".

...ale už vidím, jak tu někteří začnou kritizovat učitele za to, že používají slovo "seřadit" chybně.

souhlasím s Filipem Jirsákem. Jedná se o javascript. Tam mikrooptimalizace nedávají smysl. Výkonostní problémy webových aplikací souvisí s nesprávnou DOM manipulací na straně frontendu a nesprávnou prací s databází na straně backendu.
Jo. Rozdíl mezi exponenciální a logaritmickou složitostí je podle některých "mikrooptimalizace". Databáze sem raději netahej, protože by se hned vynořil tucet kverulantů, podle nichž přece programátor nemusí nic tušit o základech databází, relacích, normálních formách apod.  :D

Ale pořád jsem tu nebyl poučen, co tedy vlastně ten dnešní mladý, nadějný, úspěšný programátor tak cenného ovládá... (ne, Filipe Jirsáku, pochopení HTTP opravdu není nic, co by nezvládl běžný elektrikář během jednoho sezení v hospodě u píva; to opravdu nepatří mezi znalosti, které by zaměstnavatel musel vyvažovat zlatem)


Radovan.

Re:Stromové struktury a tridici algoritmy
« Odpověď #50 kdy: 17. 11. 2017, 18:50:07 »
Už je jasný rozdíl mezi řazením a tříděním? Právě jsem byl seřadit odpad do kontejnerů, a jak někdo předtím psal, vzpomněl jsem si u toho, jak jsme se kdysi na tělocviku třídili do fronty. Pěkná blbost, co?
Jasné je že ponožky třídím, a neřadím. Ale atarist tu nakousl radixsort, pocházející už z dob děrnoštítkových třídiček a tabelátorů, takže je to je asi tak že starší název se prostě drží jako židovská víra, i když se dnes zdá být nesprávný. Ono takových sporných a zvykových termínů je nejenom v IT strašně moc, a většina lidí to říká blbě. Třeba imbus.

Ale i ten quicksort je podle mě založený právě na třídění, kdy se pole opakovaně rozděluje kolem nějakého pivotu. Který je dobré určitým způsobem předem nalézt, podle ostatních dat... Nakonec se složí, takže je setříděné, nikoliv seřazené.

Ono by to nakonec mohlo být opravdu tak jak píše Kiwi, že "třídění" zahrnuje větší skupinu operací s daty, a "řazení" je jejich podmnožina.

gll

Re:Stromové struktury a tridici algoritmy
« Odpověď #51 kdy: 17. 11. 2017, 19:00:14 »
souhlasím s Filipem Jirsákem. Jedná se o javascript. Tam mikrooptimalizace nedávají smysl. Výkonostní problémy webových aplikací souvisí s nesprávnou DOM manipulací na straně frontendu a nesprávnou prací s databází na straně backendu.
Jo. Rozdíl mezi exponenciální a logaritmickou složitostí je podle některých "mikrooptimalizace". Databáze sem raději netahej, protože by se hned vynořil tucet kverulantů, podle nichž přece programátor nemusí nic tušit o základech databází, relacích, normálních formách apod.  :D

Ale pořád jsem tu nebyl poučen, co tedy vlastně ten dnešní mladý, nadějný, úspěšný programátor tak cenného ovládá... (ne, Filipe Jirsáku, pochopení HTTP opravdu není nic, co by nezvládl běžný elektrikář během jednoho sezení v hospodě u píva; to opravdu nepatří mezi znalosti, které by zaměstnavatel musel vyvažovat zlatem)

Měl by znát záludnosti javascriptové funkce sort. Nemusí znát konkrétní třídící algoritmy. Třídění velkých dat za něj vždy bude dělat databáze.

Různé vyvažované stromy určitě znát nemusí. S polem a hashmapou si při reprezentaci množin vystačí. Na moderních počítačích jsou většinou efektivnějěí. Asi by měl znát jen stromy se specálním využitém jako halda a trie. Jen vědět, že něco takového existuje. Implementovat je nemusí.

Re:Stromové struktury a tridici algoritmy
« Odpověď #52 kdy: 17. 11. 2017, 22:55:01 »
To není úzký výsek, to je něco, čemu se říká základy. Na nich je vybudováno to ostatní.
Ne, to nejsou základy, to je úzký výsek. Základy to nejsou v žádném případě, protože základy jsou část stavby, které je na stejné úrovni detailu, jako jiné části stavby (třeba střecha). Je to, jako kdybyste říkal, že základem stavby je písek, cement a voda. Jistě, jsou to suroviny pro výrobu betonu, ale stavba vzniká až z toho betonu – a stavitel potřebuje znát vlastnosti toho betonu, a jak se jich z toho písku, cementu, vody a dalších příměsí docílí, to je starostí někoho jiného.

Jinak mým oborem je průmyslová automatizace.
Děkuji za potvrzení.

O jejích specialitách a konkrétních technologiích, které člověk musí znát, aby se v tom oboru uplatnil, tu nepíšu nic.
Mýlíte se v tom, že tu o tom nepíšete nic. To, že píšete o programování jednočipů nebo oblasti, kde je v amatérské rovině třeba Arduino, přímo čiší z každého vašeho komentáře.

Ale znovu opakuji, že i když toho je obrovské množství (ne toho, co umím, ale toho, co se v této oblasti vyskytuje), není to nic, co by člověk, který zvládl základy, nepochopil.
Ano, ale ty základy jsou úplně jiné, než základy, které potřebuje znát někdo, kdo programuje GMail nebo Facebook.

A programátoři se nemusejí vyznat v základech programování, protože ... dnešní programování není založeno na algoritmech a datových strukturách? Tak jste to myslel?  :D
Když chcete dokazovat, že základy programování jsou algoritmy a datové struktury, nemůžete to zároveň použít jako předpoklad. Programování je stále založeno na algoritmech a datových strukturách, akorát ty algoritmy a datové struktury jsou podstatně odlišné od algoritmů a datových struktur, se kterými pracuje třeba quicksort. Datové struktury jsou třeba relační databáze, sloupcová databáze, key-value store, dokumentová databáze, grafová databáze, nebo dokonce REST API, a řešíte například to, jak data ukládat na více uzlů a jak zajistit konzistenci dat v případě, kdy se síť uzlů rozpadne na dva nebo více izolovaných ostrovů. Pořád jsou to datové struktury, ale dost jiného typu, než třeba nějaký spojový seznam. A při řešení těchhle datových struktur vyšší úrovně se někde vespod v implementaci určitě najde i ten spojový seznam – ale jsou to dvě dost odlišné úrovně řešení, a ten, kdo chce používat tu horní úroveň, nemusí vědět vůbec nic o té úrovni spodní. Stejně jako stavař potřebuje vědět, jaké vlastnosti má mít beton, který chce použít, ale neumí takový beton namíchat – a naopak ten, kdo umí ten beton namíchat, neumí postavit železobetonovou budovu.

Já to tušil, hned jak jsem tu odpověď odeslal, že se najde někdo, kdo se bude šťourat v tomto. Děkuji za upozornění na tento Váš cenný postřeh - občas si tu připadám jako mezi frekventanty pomocné školy.
Tak proč takové hlouposti píšete? Samozřejmě, že se vždy řadí podle nějakého kritéria, tak nechápu, proč jste místo toho napsal, že se řadí vždy podle velikosti. Jednodušší to není, srozumitelnější to není – prostě jste akorát napsal hloupost.

Z vašich komentářů je vidět, že máte pocit, že jsou tady jen samí hlupáci – no, jak je vidět, neznamená to, že byste si mohl dovolit psát hlouposti, protože i ti hlupáci na ně přijdou.

přiřadí nějaké číselné hodnoty a dané body potom srovnáme podle velikostí těchto hodnot
No to jistě. Co je to „velikost hodnoty“? Kolik bitů v binárním zápise je potřeba k zápisu té hodnoty? Nebo kolik číslic v dekadickém zápisu? Když už máte něco převedené na číselné hodnoty, porovnává se to v drtivé většině případů podle těch hodnot, ne podle jakýchsi „velikostí“ hodnot. A mimochodem, při řazení se nemusí řadit jen podle číselných hodnot. Text máte sice také zakódovaný do čísel, třeba podle ASCII nebo UTF-8, ale když se text řadí, neřadí se podle těchto číselných hodnot. Třeba už jen proto, že v UTF-8 můžete zapsat texty ve spoustě různých jazyků, ale pravidla pro řazení v těch jazycích jsou různá. Takže třeba znak „c“ má v Unicode hodnotu 99 (dekadicky), znak „d“ má hodnotu 100, ale mezi ně se v češtině řadí znak „č“, který má v Unicode dekadickou hodnotu 269.

Jediný rozdíl vidím čistě jazykový - seřadit = postavit za (vedle) sebe do řady. Když řeknu žákům, aby se seřadili, rozhodně to nemusí znamenat, že se mají seřadit podle velikos... totiž, pardon, nějakého kritéria (věku, hmotnosti, hustoty ranní stolice, velikosti...), ale že mají stát v řadě za sebou (v jídelně) nebo vedle sebe (při nástupu). Žádné pravidlo, podle něhož má zrovna žák B stát za žákem A a před žákem C tu nepozoruji. Řazení nutně nevyžaduje přítomnost nějakého kritéria. Pokud však něco třídím, činím tak zásadně podle nějakého kritéria, což je i podstatou třídicích algoritmů.
Ano, seřadit znamená uspořádat do řady, tedy u každých dvou prvků dokážete říci, jak jsou uspořádané – zda je jeden z nich víc vepředu nebo víc vzadu, než jiný prvek. Tady když budou žáci seřazení, dokážete říct, že např. žák A stojí před žákem B, nebo naopak, že stojí za ním. Mohou být seřazení podle nějakého kritéria, ale klidně mohou být seřazeni i náhodně. I pokud řadíte v počítači, vždy říkáte, podle jakého kritéria se má řadit – a nebo že má být řazení náhodné.

Naproti tomu třídění znamená (jak překvapivé) rozdělování do tříd. Nebo-li do skupin, které mají nějakou společnou vlastnost. Žáky můžete třeba roztřídit na chlapce a dívky. Nebo je můžete roztřídit podle známky z nějakého předmětu na vysvědčení. Ale chybí tam to pořadí – když máte žáky roztříděné, nemáte nijak určeno, zda je žák A před žákem B nebo až za ním.

Takže aspoň nějaký pozitivní výsledek tato absurdní debata pro mě měla - ve výše uvedeném odstavci jsem si aspoň ujasnil, že pojem "třídicí" algoritmy vůbec nebyl zvolen náhodně a že je rozhodně výstižnější než "řadicí".
Spíš jste si měl ujasnit, že „třídit“ znamená rozdělovat do tříd. Třídící algoritmy se tomu někdy chybně říká proto, že některé algoritmy používají pro řazení právě třídění. Například quicksort. Quicksort funguje tak, že prvky roztřídí na ty, které jsou menší než pivot, a na ty, které jsou větší. A rekurzivně pak stejným způsobem roztřídí každou z těch dvou tříd. Když pak seřadí každou tu dvojici skupin (což je triviální, protože ty skupiny se rovnou na začátku třídění vytvářejí tak, aby byly v té dvojici seřazené), máte ve výsledku seřazené všechny jednoprvkové skupiny a tudíž i prvky. Jde tedy o řazení tříděním, nebo-li quicksort je zároveň řadící algoritmus i algoritmus třídící. Akorát my ho používáme pro tu funkci řazení, takže je lepší ho pojmenovávat jako řadící algoritmus.

Nepsal jste tu, že znalost quicksortu je úplný základ? Já teda za znalost quicksortu považuju právě to, že quicksort řadí podle daného kritéria tím způsobem, že na základě pivotu a řadícího kritéria prvky roztřídí do dvou skupin, skupiny seřadí a rekurzivně pak pokračuje seřazením každé skupiny.

Jo. Rozdíl mezi exponenciální a logaritmickou složitostí je podle některých "mikrooptimalizace".
Ano, často to může být mikrooptimalizace. A někdy to dokonce může být antioptimalizace, protože u té logaritmické složitosti můžete mít nějakou vysokou konstantu, takže nakonec zjistíte, že pro typický počet prvků je ten exponenciální algoritmus rychlejší.

pochopení HTTP opravdu není nic, co by nezvládl běžný elektrikář během jednoho sezení v hospodě u píva; to opravdu nepatří mezi znalosti, které by zaměstnavatel musel vyvažovat zlatem
To samé ovšem platí i o quicksortu. I když, no – ale teď už snad po výkladu výše chápete, kde je v tom quicksortu schované to třídění, nebo ne?

x14

  • ***
  • 182
    • Zobrazit profil
    • E-mail
Re:Stromové struktury a tridici algoritmy
« Odpověď #53 kdy: 20. 11. 2017, 13:57:27 »
Pár programujících blbců za klávesnicí jsem už zblízka viděl, občas dokonce opravuji jejich zdrojáky. Marnost nad marnost >:(
A jak se to projevovalo?

Třeba tak, že si ten člověk v prostředí C++ založil třídu CDevice a hned vedle ní další dvě třídy CDeviceA a CDeviceB.
Ve všech těch třídách byly funkce se stejným jménem, parametry... Na takové trivialitě není co studovat.

ALE.
Když jsem tam opravoval nějakou chybu, tak jsem zjistil, že CDeviceA a CDeviceB nejsou potomci CDevice, ale že CDevice obsahuje statické instance CDeviceA a CDeviceB a jeden bool m_isAValid a ve všech funkcích CDevice je napsán kód stylu

Kód: [Vybrat]
bool CDevice::IsXXX()
{
if(m_isAValid)
return m_deviceA.IsXXX();
else
return m_deviceB.IsXXX();
}

void CDevice::SetABC(int abc)
{
if(m_isAValid)
m_deviceA.SetABC(abc);
else
m_deviceB.SetABC(abc);
}

Co k tomu dodat?

Kit

Re:Stromové struktury a tridici algoritmy
« Odpověď #54 kdy: 20. 11. 2017, 14:37:08 »
Pár programujících blbců za klávesnicí jsem už zblízka viděl, občas dokonce opravuji jejich zdrojáky. Marnost nad marnost >:(
A jak se to projevovalo?

Třeba tak, že si ten člověk v prostředí C++ založil třídu CDevice a hned vedle ní další dvě třídy CDeviceA a CDeviceB.
Ve všech těch třídách byly funkce se stejným jménem, parametry... Na takové trivialitě není co studovat.

ALE.
Když jsem tam opravoval nějakou chybu, tak jsem zjistil, že CDeviceA a CDeviceB nejsou potomci CDevice, ale že CDevice obsahuje statické instance CDeviceA a CDeviceB a jeden bool m_isAValid a ve všech funkcích CDevice je napsán kód stylu

Kód: [Vybrat]
...

Co k tomu dodat?

Dá se k tomu dodat, že se ten člověk učil programovat strukturovaně a o objektovém programování nemá ani páru. Dokonce se nenaučil pojmenovávat ani třídy, ani metody, což je nutný základ.

Kiwi

Re:Stromové struktury a tridici algoritmy
« Odpověď #55 kdy: 20. 11. 2017, 20:17:39 »
Pár programujících blbců za klávesnicí jsem už zblízka viděl, občas dokonce opravuji jejich zdrojáky. Marnost nad marnost >:(
A jak se to projevovalo?

Třeba tak, že si ten člověk v prostředí C++ založil třídu CDevice a hned vedle ní další dvě třídy CDeviceA a CDeviceB.
Ve všech těch třídách byly funkce se stejným jménem, parametry... Na takové trivialitě není co studovat.

ALE.
Když jsem tam opravoval nějakou chybu, tak jsem zjistil, že CDeviceA a CDeviceB nejsou potomci CDevice, ale že CDevice obsahuje statické instance CDeviceA a CDeviceB a jeden bool m_isAValid a ve všech funkcích CDevice je napsán kód stylu

Kód: [Vybrat]
...

Co k tomu dodat?

Dá se k tomu dodat, že se ten člověk učil programovat strukturovaně a o objektovém programování nemá ani páru. Dokonce se nenaučil pojmenovávat ani třídy, ani metody, což je nutný základ.
To sotva, tohle je blbě i z pohledu strukturovaného návrhu.

fdfs

Re:Stromové struktury a tridici algoritmy
« Odpověď #56 kdy: 21. 11. 2017, 09:25:42 »
Pár programujících blbců za klávesnicí jsem už zblízka viděl, občas dokonce opravuji jejich zdrojáky. Marnost nad marnost >:(
A jak se to projevovalo?

Třeba tak, že si ten člověk v prostředí C++ založil třídu CDevice a hned vedle ní další dvě třídy CDeviceA a CDeviceB.
Ve všech těch třídách byly funkce se stejným jménem, parametry... Na takové trivialitě není co studovat.

ALE.
Když jsem tam opravoval nějakou chybu, tak jsem zjistil, že CDeviceA a CDeviceB nejsou potomci CDevice, ale že CDevice obsahuje statické instance CDeviceA a CDeviceB a jeden bool m_isAValid a ve všech funkcích CDevice je napsán kód stylu

Kód: [Vybrat]
bool CDevice::IsXXX()
{
if(m_isAValid)
return m_deviceA.IsXXX();
else
return m_deviceB.IsXXX();
}

void CDevice::SetABC(int abc)
{
if(m_isAValid)
m_deviceA.SetABC(abc);
else
m_deviceB.SetABC(abc);
}

Co k tomu dodat?

Takovyhle kod pisou hodne Indove. Muzes to vlozit na hovnokod.cz
:)





PetrM

Re:Stromové struktury a tridici algoritmy
« Odpověď #57 kdy: 22. 11. 2017, 06:27:44 »
Pár programujících blbců za klávesnicí jsem už zblízka viděl, občas dokonce opravuji jejich zdrojáky. Marnost nad marnost >:(
A jak se to projevovalo?

Třeba tak, že si ten člověk v prostředí C++ založil třídu CDevice a hned vedle ní další dvě třídy CDeviceA a CDeviceB.
Ve všech těch třídách byly funkce se stejným jménem, parametry... Na takové trivialitě není co studovat.

ALE.
Když jsem tam opravoval nějakou chybu, tak jsem zjistil, že CDeviceA a CDeviceB nejsou potomci CDevice, ale že CDevice obsahuje statické instance CDeviceA a CDeviceB a jeden bool m_isAValid a ve všech funkcích CDevice je napsán kód stylu

Kód: [Vybrat]
...

Co k tomu dodat?

Dá se k tomu dodat, že se ten člověk učil programovat strukturovaně a o objektovém programování nemá ani páru. Dokonce se nenaučil pojmenovávat ani třídy, ani metody, což je nutný základ.
To sotva, tohle je blbě i z pohledu strukturovaného návrhu.

Tak tak, v C by to bylo lepší udělat jako dva sety funkcí, pointery na ně narvat do konstantní struktury a odkazovat se na korektní chování pointerem na příslušnou strukturu...

Ale měli jsme v práci exota, který měl řešit v C++ logování chyb. Chyba se hodila do logu a zobrazila, při tom zobrazení se chovalo různě (například nenastavený čas přidal tlačítko pro dialog s nastavením času). Takže udělal třídu pro chybu, která se házela do logu, ve zobrazení jeden SWITCH (450 větví) a pro výběr textu (někdy obsahovalo konkrétní data o chybě) rovněř 450 řádků switch... Když jsem to viděl, měl jsem rozglábenou hubu jak hangár na čmeláka...

Re:Stromové struktury a tridici algoritmy
« Odpověď #58 kdy: 22. 11. 2017, 18:30:41 »
Ja se pamatuju, jak se uz na zakladni skole deti skatulkovali (ne zamerne), ze nekomu jdou jazyky, nekomu matematika, nekomu kresleni. Ja uz jako malej jsem tohle nechapal (me slo teda vsechno vzdycky samo :-) ), kdyz jsem pak zacal vstrebavat i vyssi matematiku tak mi to hrozne prislo lito, ze je exprese toho jazyka takova nudna nudna, plus jsem si zacal uvedomovat  ze spousta lidi, kteri se primo napr. matematice nevenuji, jsou daleko lepsi matematici, nez ti, kteri se za ne oznacuji oznacuji. Rozdil je v tom, ze pro exprese vyuzivaji svuj vlastni jazyk, at uz ve forme hudby nebo kresleni, tance, apod. a vytvareji super komplexni a krasne algoritmy. Uvedomil jsem si, ze to neni matematikou samotnou, ale jeji nudnou reprezentaci, coz je bohuzel neco, co jsme uz v nasi dobe zdedili a nejsme dostatecne creativni na tom neco menit -> ale ne vsichni, hehe.

Chci tim rict, ze jsi jako organismus prirozeny super tridici system :-), kazdopadne urcite doporucuju se zaborit do vsech tridicich algoritmu, vsechny maji svoji vnitrni krasu, hehe. Ktera ale bez predstavivosti neni videt. Pokud ti takova predstavivost chybi, tak mrkni sem:
https://imgur.com/gallery/voutF

Ja jsem se k tomuhle vratil, protoze jsme ted zrovna resili, jakym zpusobem visualizovat proces uceni modelu neuronove site, a opet jsme stali pred tim, ze ukazovat nejake postupy z algebry a diskret managerum a businesakum je o hovne a prave tenhle link viz vyse byl takovou inspiraci, jak na to. Proste sice o tom nic zdanlive nevis, ale kouknes se na male video a je z tebe razem expert.

PS: Sort agoritmy jsou krasna hra, tak si s tim pohrej, je dobry vedet, jak to funguje pod kapotou ruznejch enginu, ktery zpracovavaj data