Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Anonym 16. 11. 2017, 09:00:25

Název: Stromové struktury a tridici algoritmy
Přispěvatel: Anonym 16. 11. 2017, 09:00:25
Byl jsem upozornen pri pohovoru do jedne firmy ve které se dělají inf. systémy v Node.js, že vstupní test je "těžký" a mám se podívat na stromové struktury, snad i třídící algoritmy tuším.

Dělám v Javě a přijde mi to trochu divné. Nikdy jsem nepotřeboval dávat cokoliv do stromů nebo používal special třídící algoritmy typu quicksort atp.

Důvod je ten, že když potřebuju něco třídit, tak prostě použiju hashset. V podstatě setřízené pole nějakých hodnot, nad kterým se provede vyhledávání typu rozděl a panuj, se chová úplně stejně, jako průchod vyváženým binárním stromem. Protojsem nemusel nikdy ani implementovat strom. Hashset prostě nahradí jak třídění, tak vyhledávání a proto jsem zřejmě v životě nikde quickosrt napsaný neviděl.

Jsou to pro mě prostě nějaké scifi věci, které jsem se sice učil v nějakých základech algoritmizace, ale nikdy jsem je nikde nepoužil. Proto mě překvapuje, že by to snad někde běžně implementovávali v Javascriptu.

Dokonce i snad nějaké struktury typu LinkedList jsou v 99% případů nanic, rychlejší je ArrayList.

Možná jsou vyjímky pro velké objemy dat, vím že DB používají třeba R-stromy, ale opět, implementovat takové věci při vývoji IS mi přijde teda dist scifi.

Tak co, pletu se? Nechám se překvapit.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kit 16. 11. 2017, 10:10:32
Node.js nemá s Javou nic společného.

Je to jen test na to, jak zvládáš algoritmizaci. V projektu to pak nenajdeš.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Whoever 16. 11. 2017, 10:23:40
Človeče sorry, ale ak chceš triediť HashSetom, tak zjavne by sa ti trocha vhľadu do tých štruktúr zišlo :) resp. dobre, povedzme že si sa pomýlil a chcel si TreeSet, ale ak stále nechápeš, prečo by niekedy nebolo výhodnejšie na to jednorázovo pustiť quicksort, tak ten test docela splnil účel.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Anonym 16. 11. 2017, 11:29:12
Node.js nemá s Javou nic společného.

Je to jen test na to, jak zvládáš algoritmizaci. V projektu to pak nenajdeš.

To bylo tak strasne poucne... Naco ten test na algoritmizaci teda je, kdyz to nikdo realne nepouziva?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 16. 11. 2017, 11:44:11
Přesně jak píše Whoever – máte v tom pěkný hokej. Pro začátek vůbec nemusíte studovat, jak které algoritmy fungují – bude stačit, když si zjistíte, k čemu slouží, co je to třídění, co je řazení, co je vyhledávání, co je metoda „rozděl a panuj“. HashSet sice interně používá třídění, ale je to třídění na základě hashe, takže je to jen interní implementace. Uživatel HashSet používá pro vyhledávání hodnot, řazení hodnot v HashSetu je „náhodné“. K vyhledávání v HashSetu ani ve vyváženém binárním stromu se nepoužívá metoda rozděl a panuj, poněkud tam schází ta fáze „rozděl“. Tvrzení, že LinkedList je rychlejší než ArrayList, také není pravdivé – ono těch několik implementací Listu v Javě není proto, že by jedna byla dobrá a ostatní špatné a neměly by se používat. Ty různé implementace jsou tam proto, že se v různých situacích chovají různě, takže pro některá využití je vhodnější LinkedList a pro některá zase ArrayList.

Nechápu, proč se zkoušení z algoritmů dává do vstupních pohovorů pro programátory, protože drtivá většina programátorů řeší jiné typy úloh a opravdu nepotřebují znát, jak je implementován quicksort nebo ArrayList – ale měli by vědět, jaké jejich charakteristiky jsou důležité a umět si je zjistit, když to budou potřebovat. Ale evidentně takový test odhalí aspoň případy, kdy někdo ani neví, k čemu které datové struktury slouží a jak se používají.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 16. 11. 2017, 13:07:55
Nechápu, proč se zkoušení z algoritmů dává do vstupních pohovorů pro programátory, protože drtivá většina programátorů řeší jiné typy úloh a opravdu nepotřebují znát, jak je implementován quicksort nebo ArrayList – ale měli by vědět, jaké jejich charakteristiky jsou důležité a umět si je zjistit, když to budou potřebovat. Ale evidentně takový test odhalí aspoň případy, kdy někdo ani neví, k čemu které datové struktury slouží a jak se používají.

Já zase nechápu uchazeče o místo, kteří mají potřebu potenciálního zaměstnavatele poučovat o tom, co vlastně potřebuje a co ne a na co se jich má ptát. Připadá mi to poněkud absurdní i u studentů, když tu žehrají na to, že po nich na školách chtějí, aby se učili "zbytečnosti", ale že už jim to vadí i u zaměstnavatelů, to je vážně vrchol. Existuje takové trefné české pořekadlo o kozlu zahradníkem.

Zaměstnavatel si ověřuje, zda uchazeč o místo programátora umí programovat - no co si to dovoluje! Hlavně po mně nechtějte nic, u čeho bych musel trochu potrápit hlavu, dejte mi přesnou specifikaci a k tomu knihovny, co už všechno řeší, já vám to v Javě polepím dohromady, za což budu chtít nejmíň tak 120 tisíc měsíčně, protože to je přece děsně mentálně náročná práce, a buďte rádi, že máte tu čest mě zaměstnávat. Je fakt, že takový dojem ve mně poslední léta, kdy jsem ještě vedl pohovory, z nových uchazečů stále více sílil.

Sakra! Když na to nemáte IQ, tak na ty školy nelezte a běžte se živit něčím, na co intelektuálně stačíte - třeba točením popelnic! Programátor, který neumí programovat, je totiž i zadarmo drahý. A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kit 16. 11. 2017, 13:20:58
A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

V těch lepších školách kromě třídicích algoritmů učí i řadicí algoritmy. Takové řazení tříděním, to je pecka!
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 16. 11. 2017, 13:55:43
A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

V těch lepších školách kromě třídicích algoritmů učí i řadicí algoritmy. Takové řazení tříděním, to je pecka!

A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kit 16. 11. 2017, 14:04:55
A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

V těch lepších školách kromě třídicích algoritmů učí i řadicí algoritmy. Takové řazení tříděním, to je pecka!

A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...

Kde vidíš nějaká synonyma? V tělocviku jste setřiďovali podle velikosti? My jsme se vždy museli seřadit. Jablka jsme také neřadili do bedýnek, ale třídili.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Whoever 16. 11. 2017, 14:33:32
A vôbec, netvárme sa že tie algoritmické testy sú nejaký IŤácky ekvivalent IQ testu, sú to normálne praktické veci, ktorých základy by schopný programátor mal vedieť "by heart", nie len podľa náhladu do Stack O. alebo API. OP pekne oddemonštroval k čomu je to dobré, nikto nikde po nikom nechce aby implementoval quicksort, RB strom alebo haldu, ale bez ich znalostí je človek odsúdený k produkovaniu úplne nezmyselných performance bottleneckov v štýle produkovania zosortených polí z HashSetu, lebo nemáš potuchy jak to funguje, či to nejde lepšie a že vôbec existuje niečo lepšie.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Ondra Satai Nekola 16. 11. 2017, 14:59:03
A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

V těch lepších školách kromě třídicích algoritmů učí i řadicí algoritmy. Takové řazení tříděním, to je pecka!

A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...

Kde vidíš nějaká synonyma? V tělocviku jste setřiďovali podle velikosti? My jsme se vždy museli seřadit. Jablka jsme také neřadili do bedýnek, ale třídili.

Ceska terminologie neni stastne zvolena, ale je takova, jaka je. Se s tim smir.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: x14 16. 11. 2017, 15:15:44
A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...
Tak pro absolventa základní školy by se to za synonyma považovat dalo. Ale programátor by v tom rozdílu měl mít jasno.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kit 16. 11. 2017, 15:20:40
Kde vidíš nějaká synonyma? V tělocviku jste setřiďovali podle velikosti? My jsme se vždy museli seřadit. Jablka jsme také neřadili do bedýnek, ale třídili.

Ceska terminologie neni stastne zvolena, ale je takova, jaka je. Se s tim smir.

Česká terminologie je zvolena v daném případě správně, rozděluje anglické homonymum sort podle sémantiky na slova třídit a řadit. Mimo programování si to lidé nepletou.

Naopak my máme jako homonymum například pole. Anglicky se to rozlišuje na field, array, ... Hromada vývojářů označuje slovem pole i většinu kolekcí, čímž do toho vnáší slušný chaos.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 16. 11. 2017, 15:30:50
Já zase nechápu uchazeče o místo, kteří mají potřebu potenciálního zaměstnavatele poučovat o tom, co vlastně potřebuje a co ne a na co se jich má ptát.
Já nejsem uchazeč o místo. A zaměstnavatele nepoučuju, jenom jsem podotkl, že tenhle typ testu zpravidla zjišťuje něco jiného, než zaměstnavatel od programátora potřebuje.

Zaměstnavatel si ověřuje, zda uchazeč o místo programátora umí programovat - no co si to dovoluje!
Právě že tak to není. „Umět programovat“ může znamenat spoustu různých věcí, a ve většině případů to není „umět z paměti napsat quicksort“. Naopak pro většinu programátorů dnes platí, že „umět programovat“ mimo jiné znamená vědět, že quicksort nebudu implementovat sám, protože existuje spousta implementací, které jsou lepší než to, co bych naimplementoval sám. V lepším případě pak platí také to, že „umět programovat“ znamená vědět, že dnešní počítače jsou mnohem složitější, než byly počítače v šedesátých letech minulého století, takže naivní implementace quicksortu může být velmi pomalá v porovnání s jinými implementacemi, pokud nebude brát v úvahu třeba různě rychlý přístup k různým keším RAM, zamykání paměti, vícevláknové procesory, více pipline v jednom vlákně procesoru, predikci skoků apod.

Mimochodem, je hezké, jak akademici pořád uvádějí quicksort, i když v reálném světě jsou někdy efektivnější jiné algoritmy. Což je mimochodem další z dovedností, které by měla mít většina programátorů – nespoléhat na to, že nejrychlejší je přece quicksort, protože se to tak učí ve škole – ale umět posoudit, jaké vlastnosti mají data, která chci řadit, a podle toho vybrat vhodný řadicí algoritmus. A také posoudit, zda vůbec je nutné ta data řadit…

Programátor, který neumí programovat, je totiž i zadarmo drahý.
Akorát že programátor, který neumí programovat, klidně může z paměti vystřihnout quicksort. Protože „umět programovat“ právě znamená něco jiného.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Jenda 16. 11. 2017, 18:37:33
Hm, proto je možná poslední dobou různý software tak záhadně pomalý  ::)

V podstatě setřízené pole nějakých hodnot, nad kterým se provede vyhledávání typu rozděl a panuj, se chová úplně stejně, jako průchod vyváženým binárním stromem. Protojsem nemusel nikdy ani implementovat strom.

A co třeba insert do takové struktury? (pro rýpaly: ano, znám děravé setříděné takypole, které má find, insert i delete amortizovaně n*logn)

Ceska terminologie neni stastne zvolena, ale je takova, jaka je. Se s tim smir.

Jedno je normální porovnávací sort a druhé neporovnávací (např. radix sort nebo counting sort).
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: x14 16. 11. 2017, 19:35:37
Mimochodem, je hezké, jak akademici pořád uvádějí quicksort, i když v reálném světě jsou někdy efektivnější jiné algoritmy.
To je snad přirozené, že se na školách učí principy a v praxi se používá něco praktického, ne?

Pokud jde o obecná data, tak si troufám tvrdit, že v reálném světě o moc lepší algoritmus než quicksort zatím nalezen nebyl. Třeba takový std::sort je intrasort, což je hybridní řadicí algoritmus založený na quicksortu, který "akorát" předchází vzniku nejblbějších situací tím, že při hlubokém zanoření přepíná na heapsort a při mrňavých sekvencích na insertionsort. Ať zkusí někdo napsat něco výrazně rychlejšího. Nemá žádnou šanci. A proto dnes taky nikdo normální žádné řadicí algoritmy nepíše.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Werner 16. 11. 2017, 20:01:12
Zkouset tyhle veci na pohovoru je blbost, zvlast pokud uchazec ma VS v oboru. To je snad dukaz ze se to na skole ucil, delal z toho zkousky, statnice. Takze pokud to bude potrebovat, zagoogli a osvezi si to. Nikdo nebude nosit v hlave neco co bezne nepouziva, zvlast v IT kde jde vyvoj rychle dopredu a clovek se musi ucit jine veci aby nezustal pozadu.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: x14 16. 11. 2017, 20:11:16
Zkouset tyhle veci na pohovoru je blbost, zvlast pokud uchazec ma VS v oboru.
Zkus na se na věc podívat z druhé strany. Máš 10 uchazečů na jedno místo a všichni jsou mistři světa.
Máš na každého pár minut. Co se jich chceš ptát, abys do dalšího kola nepustil vyložené podvodníky?
Já myslím, že zeptat se, co vědí o řadicích algoritmech, je dobrá metoda jak to pročistit :)
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: atarist 16. 11. 2017, 20:22:53
Zkouset tyhle veci na pohovoru je blbost, zvlast pokud uchazec ma VS v oboru. To je snad dukaz ze se to na skole ucil, delal z toho zkousky, statnice. Takze pokud to bude potrebovat, zagoogli a osvezi si to. Nikdo nebude nosit v hlave neco co bezne nepouziva, zvlast v IT kde jde vyvoj rychle dopredu a clovek se musi ucit jine veci aby nezustal pozadu.

Tak zakladni vlastnosti aspon nekolika radicich algoritmu by z hlavy dat mohl ne? Treba ktery radi prirozene, ktery in-situ a tak. Od toho se potom muze odvinout dalsi debata o souvisejicich vecech. Mj. muze dojit na slozitost, a to je dost dulezita vec obecne.

Nebo naopak: kdyz uz ma tu VS, co by tedy mel znat jako uplny zaklad?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: gll 16. 11. 2017, 20:41:38
Zkouset tyhle veci na pohovoru je blbost, zvlast pokud uchazec ma VS v oboru. To je snad dukaz ze se to na skole ucil, delal z toho zkousky, statnice. Takze pokud to bude potrebovat, zagoogli a osvezi si to. Nikdo nebude nosit v hlave neco co bezne nepouziva, zvlast v IT kde jde vyvoj rychle dopredu a clovek se musi ucit jine veci aby nezustal pozadu.

Když nevíš, co máš googlit, google moc nepomůže.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: zsdfaefasdfa 16. 11. 2017, 20:55:40
je to jednoduchy filtr.
vis neco o trideni ok, muzes pokracovat, nevis lautr nic, otazka zni co mas v hlave?!?!

vis jak urezat kus dreva, ok muzes studovat na truhlare, ne tak jdi na popelare.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: angular 16. 11. 2017, 21:19:53
Akorát že programátor, který neumí programovat, klidně může z paměti vystřihnout quicksort. Protože „umět programovat“ právě znamená něco jiného.

+1

Zkouset tyhle veci na pohovoru je blbost, zvlast pokud uchazec ma VS v oboru.
Zkus na se na věc podívat z druhé strany. Máš 10 uchazečů na jedno místo a všichni jsou mistři světa.
Máš na každého pár minut. Co se jich chceš ptát, abys do dalšího kola nepustil vyložené podvodníky?
Já myslím, že zeptat se, co vědí o řadicích algoritmech, je dobrá metoda jak to pročistit :)

Spíše to ukazuje, že je na pohovoru s retardem, tak to asi ve zbytku firmy lepší nebude. Ale proč ne...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: angular 16. 11. 2017, 21:21:10
A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

Tak alespoň vidíš, proč musí učit. S tímhle by v reálném životě moc neuspěl.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 16. 11. 2017, 21:33:35
To je snad přirozené, že se na školách učí principy a v praxi se používá něco praktického, ne?
To ale není podstata toho, o čem jsem psal. Problém je v tom, že ve školách se jako „programování“ učí principy algoritmů jako quicksort, ale v praxi pak dotyčný bude řešit, jak data uspořádat tak, aby je mohl zpracovávat paralelně (a to ne na úrovni datových struktur v paměti, ale na úrovni datových struktur v databázi); nebo jak navrhnout architekturu aplikace tak, aby horizontálně škálovala přidáváním dalších serverů; nebo aby tušil něco o UX; a nebo, pokud už se bude zabývat quicksortem, tak bude řešit to, že O(n log n) je sice hezká věc, ale v praxi bude propastný rozdíl v tom, když se bude pohybovat v jednom řádku cache RAM, nebo když přístup ke každému prvku bude znamenat výpadek stránky a čekání na nahrání z hlavní paměti.

Pokud jde o obecná data, tak si troufám tvrdit, že v reálném světě o moc lepší algoritmus než quicksort zatím nalezen nebyl. Třeba takový std::sort je intrasort
Takže jste si na tohle odpověděl sám.

A proto dnes taky nikdo normální žádné řadicí algoritmy nepíše.
A proto dnes taky nedává smysl zkoušet z nich nastupující programátory. Jistě, když to bude vypadat, že nízkoúrovňové algoritmy jsou silná stránka dotyčného, zeptám se ho na to – ale pak bych stejně nechtěl, aby mi na papíře implementoval quicksort, ale zajímalo by mne právě to, co ví o těch novějších upravených algoritmech. Protože z toho poznám právě to, jestli o tom jenom slyšel ve škole, nebo o tom opravdu ví něco víc.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 16. 11. 2017, 21:58:42
vis jak urezat kus dreva, ok muzes studovat na truhlare, ne tak jdi na popelare.
Ono je to spíš: „Víš, jak uříznout kus dřeva? OK, můžeš jít dělat zedníka.“ Vždyť přece domy se dříve dělaly ze dřeva, a postupným vývojem se výstavba domů dostala do dnešního stavu. Tak přijmeme někoho, kdo umí se dřevem, a taky se asi postupným vývojem dostane od dřeva k dnešním železobetonovým stavbám…

Zkus na se na věc podívat z druhé strany. Máš 10 uchazečů na jedno místo a všichni jsou mistři světa.
Máš na každého pár minut. Co se jich chceš ptát, abys do dalšího kola nepustil vyložené podvodníky?
Já myslím, že zeptat se, co vědí o řadicích algoritmech, je dobrá metoda jak to pročistit :)
Jako metoda jak rychle zmenšit počet uchazečů je to jistě skvělé. Nicméně já, když budu investovat několik měsíců nebo let do toho, abych si vychoval nějakého junior programátora, se nechci co nejrychleji zbavit co největšího počtu uchazečů, ale chci si vybrat toho nejlepšího, který zapadne do týmu.

A upřímně řečeno, dneska mne u juniora zajímá hlavně to, jestli už má s programováním nějaké zkušenosti, aby věděl, do čeho jde – aby po půl roce nezjistil, že ho to vlastně nebaví. Když ho to bude bavit, tak se to naučí – a vlastně jsem na pohovoru nikdy neměl absolventa, který by ze školy uměl programovat. Buď se to naučil ještě někde jinde, a nebo ze školy uměl napsat kód, který šel přeložit, ale o moc dál nebyl. Dál se s ním radši bavím o tom, co zná, a zajímají mne jeho názory – proč si to vybral, co mu na tom vyhovovalo, co se mu nelíbilo. Podle toho poznám, jaký má přístup a jestli má pro programování nějaký cit.

Ale je pravda, že někteří kolegové uchazeče zkouší třeba ze standardní knihovny, to si vždycky říkám, že bych u nich nejspíš neprošel :-) Mně ale nikdy nezajímalo, co dotyčný neví, naopak mne zajímá, co ví.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: x14 16. 11. 2017, 22:39:27
v praxi pak dotyčný bude řešit, jak data uspořádat tak, aby je mohl zpracovávat paralelně (a to ne na úrovni datových struktur v paměti, ale na úrovni datových struktur v databázi); nebo jak navrhnout architekturu aplikace tak, aby horizontálně škálovala přidáváním dalších serverů; nebo aby tušil něco o UX;
Wow, to jsem se v dotazu ani náhodou nedočetl :)

A proto dnes taky nedává smysl zkoušet z nich nastupující programátory.

Jak píšu výše. Předpokládám, že jde o pohovor, ve kterém se zjistí jestli uchazeč není podvodník. Psát algoritmus na papír považuji za  tragédii – u Honzíka jsme dostávali minusy za chybějící středníky na papíře! Pro mě je ten dotaz na řazení jen jeden bod pohovoru. Je věcí uchazeče, jak to rozjede. Měl by mluvit hlavně on. Pokud mi bude vyprávět o problematice volby pivota, má bod, pokud bude vědět jména funkcí v použitém prostředí, má bod, stabilní řazení, paralelizace... Ale stejně tak si myslím, že by byl dobrý i třeba dotaz typu, jaké jsou rozdíly mezi SSD - HDD, BTRFS - FAT, GIF - JPEG - RAW, vektor - bitmapa, UTF8 - UTF16LE, cokoliv, co je poblíž budoucí práci... Mě osobně až tak úplně nezajímá, co umí (samozřejmě, že potřebné základy musí mít), ale spíš jestli uvažuje logicky a pracuje dobře s informacemi, které už má, a ví, jak se dostat k dalším... Jestli neblábolí a nebo dokonce nelže. I za upřímné "nevím" dávám bod.

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 >:(

Programátora si vychováme, ale nesmí to být blbec a šmejd.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: angular 16. 11. 2017, 22:51: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 >:(

Programátora si vychováme, ale nesmí to být blbec a šmejd.

A jak se to projevovalo?

Právě programátor se vychovat nenechá, protože není ovce bez vlastních nápadů. Hledáš vůbec programátory?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 17. 11. 2017, 02:37:11
A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...
Tak pro absolventa základní školy by se to za synonyma považovat dalo. Ale programátor by v tom rozdílu měl mít jasno.
Pouč mne, prosím.

Já zase nechápu uchazeče o místo, kteří mají potřebu potenciálního zaměstnavatele poučovat o tom, co vlastně potřebuje a co ne a na co se jich má ptát.
Já nejsem uchazeč o místo. A zaměstnavatele nepoučuju, jenom jsem podotkl, že tenhle typ testu zpravidla zjišťuje něco jiného, než zaměstnavatel od programátora potřebuje.
Několik let jsem tuto práci vykonával, tj. rozhodoval se podle životopisů a na pohovoru, koho si do oddělení vezmeme za spolupracovníka. Ale jak tak čtu, tak jsem se měl zeptat diskutérů na rootu, aby mi poradili, na co se těch uchazečů mám vlastně ptát. Patrně to tu víte lépe než já, který jsem jim zadával práci a na něhož se obraceli, pokud narazili na nějaký problém.
Problém pramenící z neznalosti nějakého protokolu nebo nějaké knihovny či nějakého standardu mi nikdy nedělal starosti, to jsem vždycky rád vysvětlil a vyšlo to rychleji, než nechat nebožáka vrtat se v dokumentaci. Ale když někomu řeknete, aby danou věc neřešil vnořeným voláním, ale pomocí stavové proměnné, protože jinak se nevejdeme do zásobníku, a on na vás čumí jak tele na nová vrata, tak je vám jasné, že zase v práci budete muset zůstat trčet do noci, ale mzdu za to dostane to jelito. To je přesně ten důvod, proč k sobě chcete lidi, kteří se ve svém oboru orientují a když náhodou něco nevědí, tak to alespoň rychle pochopí. A nějak na to holt musíte přijít pokud možno během pohovoru.

Zaměstnavatel si ověřuje, zda uchazeč o místo programátora umí programovat - no co si to dovoluje!
Právě že tak to není. „Umět programovat“ může znamenat spoustu různých věcí, a ve většině případů to není „umět z paměti napsat quicksort“.
O žádný quicksort mi nikdy nešlo a neznám nikoho, kdo by u pohovoru někoho zkoušel z quicksortu. Ale co mě zajímalo je např. to, zda tuší, co je backtracking, co je dynamické programování, jaký je rozdíl mezi prohledáváním do šířky a do hloubky, jestli tuší, jak se dají organizovat data a jaké má která organizace výhody a nevýhody, zda tuší, že existují algoritmy časově náročnější a méně náročné a že nejjednodušší řešení nemusí být to nejefektivnější apod. Ne teoreticky, ale na základě příkladu, který měl vyřešit. Ale spoustu uchazečů to vůbec netrklo, nač ten který příklad míří. Mimochodem, příklad na prohledávání do šířky a příklad na dynamické programování jsem dával spíš jako hozenou rukavici, zda se někdo třeba chytne, ale za ty 4 roky, kdy jsem ty pohovory dělal, je zvládlo přesně nula uchazečů.
Zajímavé bylo, že čím větší jelito, tím větší mzdu si představovalo. Vždyť to je podobné, jako by se na zubařské oddělení hlásilo deset lidí, z nichž dva aspoň dokážou poznat kazový zub a opravit ho, další čtyři sice kaz poznají, ale nevědí, co s ním, a zbytek nezvládá ani to. Na zánět kořenových kanálků a jeho řešení se ale raději neptejte nikoho z těch deseti. Tak jestli vám to připadá normální, tak mně to teda připadá šílené!

A jak nám jako studentům říkával na škole Virius - programátor, který nezná základní třídící algoritmy, to ani není programátor.

Tak alespoň vidíš, proč musí učit. S tímhle by v reálném životě moc neuspěl.
Mě spíš děsí, když v reálném životě uspěje člověk, který plácá pamětí v ASICu a nevejde se do časování protokolu kvůli tomu, že pomocí floating pointu na železe bez FPU počítá něco, na co stačí pár bitových manipulací, kdyby o nich něco tušil.

A proto dnes taky nedává smysl zkoušet z nich nastupující programátory.
myslím, že by byl dobrý i třeba dotaz typu, jaké jsou rozdíly mezi SSD - HDD, BTRFS - FAT, GIF - JPEG - RAW, vektor - bitmapa, UTF8 - UTF16LE, cokoliv, co je poblíž budoucí práci... Mě osobně až tak úplně nezajímá, co umí (samozřejmě, že potřebné základy musí mít), ale spíš jestli uvažuje logicky a pracuje dobře s informacemi, které už má, a ví, jak se dostat k dalším... Jestli neblábolí a nebo dokonce nelže. I za upřímné "nevím" dávám bod.
Tak přesně na takové blbiny jsem se teda nikdy neptal. Zvládnutí konkrétní technologie je z časového hlediska zanedbatelnou otázkou, ale učit někoho programovat během zkušební doby, když to nezvládl za předchozí roky studia, to teda good luck.
Řekl bych, že ptát se člověka, který se dokáže vypořádat s nějakým jednoduchým grafovým problémem, na rozdíly mezi vektorem a bitmapou, je poněkud zbytečné a na pochopení rozdílu mezi BTRFS a FAT mu bude stačit pár minut studia příslušných specifikací. Takže i kdyby to mělo být hlavní náplní jeho práce, tak by mi vadilo podstatně méně, kdyby o tom neměl žádné předchozí znalosti, než kdyby mi pak výpočet pozice nějakého bloku či bajtu mastil přes FP.

Pro zajímavost, zažil jsem i člověka, který ani po upozornění na konkrétní řádek nechápal, v čem má chybu ("nulovost" doublu testoval pomocí ==) a rozčiloval se, že máme asi nějakou chybu v překladači, protože v těch proměnných jsou nějaká trochu jiná čísla, než jaká do nich přiřazuje. Ale podle zdejších diskutérů programátor přece nemusí nic vědět o tom, jak jsou v počítači reprezentována čísla. To přece od něj nikdo nemůže chtít, když jeho náplní práce nebude implementace matematických simulací. Akorát mám obavu, že kdyby v popisu pozice byla, výsledek by byl stejný.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: FS 17. 11. 2017, 08:28:18
A na základních školách se za mých mladých let mimo jiné vysvětlovalo, co to jsou synonyma. Kde jsou ty časy...
Tak pro absolventa základní školy by se to za synonyma považovat dalo. Ale programátor by v tom rozdílu měl mít jasno.
Pouč mne, prosím.

Nebudu se vyjadřovat ke zbytku, na to nemám zkušenosti, ale řazení je podle mého sestavování skupin podle nějakého kritéria, např. od největšího po nejmenší.

Třídění je naopak do skupin, např. rozdělím objekty do skupin podle barev, vlastností nebo typu.

Vzhledem ke způsobu Vašeho vyjadřování a oblastech, o jakých hovoříte, jsem si to ale zkontroloval s pomocí Wikipedie a ejhle, dává mi za pravdu.
https://cs.wikipedia.org/wiki/%C5%98azen%C3%AD
https://cs.wikipedia.org/wiki/T%C5%99%C3%ADd%C4%9Bn%C3%AD

Takže za mě, s respektem k veškerým Vašim zkušenostem a s přihlédnutím k faktu, jak posuzujete oblasti, které by měl uchazeč znát a jak rychle by dokázal nastudovat některé problémy,

UTFG!!!!

Ale jinak obecně každý dělá chyby...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Radovan. 17. 11. 2017, 08:43:45
A teď tu vypukne dvoutisícpříspěvkový flame o slovíčkaření ;D

Takže pár dotazů do pranice:
1. Strom se řadí nebo třídí? Nějak mi není jasné jak budu řadit dva objekty v různých větvích.
2. Seřazení různých položek beru, ale co když se opakují? Budu je v poli řadit nebo třídit?

Ono možná to slovo "třídění" má svoje důvody, jaký je přesný významový ekvivalent anglického "sort"?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 17. 11. 2017, 09:55:38
Je věcí uchazeče, jak to rozjede. Měl by mluvit hlavně on. Pokud mi bude vyprávět o […] Mě osobně až tak úplně nezajímá, co umí (samozřejmě, že potřebné základy musí mít), ale spíš jestli uvažuje logicky a pracuje dobře s informacemi, které už má, a ví, jak se dostat k dalším... Jestli neblábolí a nebo dokonce nelže. I za upřímné "nevím" dávám bod.
Na tom se shodneme. Akorát mi připadá neefektivní, abych já střílel nejrůznější technologie tak dlouho, dokud se netrefím do něčeho, co uchazeč zná – zvlášť když takováhle přehlídka všeho, co dotyčný neví, povede akorát k tomu, že ho vystresuju a zapomene i to, jak se jmenuje. Proto se ho radši zeptám, co zná on nebo co zajímavého dělal, a pak se bavíme o tom. Pokud sám uvede quicksort a vybere si ho, OK, budeme se bavit o quicksortu – ale v žádném případě nemám quicksort jako požadavek a je mi jedno, zda ho dotyčný zná nebo nezná, protože to vůbec nevypovídá o tom,zda z něj bude dobrý programátor.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: FS 17. 11. 2017, 10:10:41
A teď tu vypukne dvoutisícpříspěvkový flame o slovíčkaření ;D

Takže pár dotazů do pranice:
1. Strom se řadí nebo třídí? Nějak mi není jasné jak budu řadit dva objekty v různých větvích.
2. Seřazení různých položek beru, ale co když se opakují? Budu je v poli řadit nebo třídit?

Ono možná to slovo "třídění" má svoje důvody, jaký je přesný významový ekvivalent anglického "sort"?

Tak ono obecně v češtině mi ten výraz přijde jasný. I kdyby se položky opakovaly, tak pokud je výsledkem jedna řada od největšího po nejmenší a obráceně, jde o řazení. Pokud ty položky rozdělím do dvaceti kategorií podle nějakých atributů, kde je nelze jasně seřadit, tak podle mého jde o třízení. Ostatně na té Wikipedii je to podle mě řečené naprosto jasně. Z hlediska češtiny nejde ani tak o algoritmus, který na něco konkrétního používám, ale o výsledek, kterého jsem na dané množině dosáhl, případně jestli jsem ji rozdělil na více disjunktních množin. A co se toho slovíčka sort týče, tak překlady bych do toho vůbec netahal, protože různá slova v různých jazycích zkrátka nemusejí mít v jazyku, do kterého se překládají přesný protivýznam.

Flame jsem tedy zakládat nechtěl :-\, proto jsem se k tomu nevyjadřoval tehdy, když to bylo na začátku napsáno, ale podle mého názoru je význam z pohledu češtiny jednoznačný. Chápu, že když se bude zabíhat do implementačních detailů, tak se ten význam může někdy komplikovat i s ohledem na překlad z angličtiny. To určitě uznávám. Ale to nemění nic na významu slov a na faktu, že to rozhodně nejsou synonyma. A to i kdybych vzal v úvahu hypotetický argument, že v IT mez řazením a třízením není rozdíl. V běžném životě a v češtině ten rozdíl je zkrátka jednoznačný. Záleží na tom, jestli jsem dané objekty, např. čísla, seřadil v jedné množině podle nějakého schématu nebo je vytřídil do více množin podle nějakých kategorií, tedy např. čísla (-nekonečno,5>, (5,8>, (8, nekonečno).
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Lopata 17. 11. 2017, 10:10:58
Takže pár dotazů do pranice:
1. Strom se řadí nebo třídí? Nějak mi není jasné jak budu řadit dva objekty v různých větvích.
2. Seřazení různých položek beru, ale co když se opakují? Budu je v poli řadit nebo třídit?

Úplně obecně (nejen ve vztahu ke stromu) – pokud se položky liší, tak je dle porovnávaných kritériích třídíme do různých tříd (odtud třídění). Pokud se položky opakují, spadnou do stejné třídy. Pokud se neopakují, pak je každá položka v právě jedné třídě. A pokud chceme, aby třídy zároveň měly určité pořadí, pak je řadíme. Mohli bychom je organizovat třeba do dvourozměrného (obdélník) nebo trojrozměrného (kvádr) pole, ale většinou chceme, aby byly v řadě za sebou (odtud řazení).

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?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Lopata 17. 11. 2017, 10:25:49
A to i kdybych vzal v úvahu hypotetický argument, že v IT mez řazením a třízením není rozdíl. V běžném životě a v češtině ten rozdíl je zkrátka jednoznačný. Záleží na tom, jestli jsem dané objekty, např. čísla, seřadil v jedné množině podle nějakého schématu nebo je vytřídil do více množin podle nějakých kategorií, tedy např. čísla (-nekonečno,5>, (5,8>, (8, nekonečno).
Jen bych upřesnil, že ten rozdíl tam je i v IT, ale asi není na první pohled tolik patrný, když ty dva termíny lidé neustále prohazují. Pokud jsou prvky seřazené, pak jsou zároveň setříděné, ale neplatí to naopak – jsou-li prvky setříděné, nemusí to nutně znamenat, že jsou seřazené (obrácená implikace neplatí).

Docela pěkný příklad je již dříve zmiňovaná hash mapa, ve které jsou prvky interně sice setříděné podle hash code, ale nemají definované pořadí.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Jerry 17. 11. 2017, 10:32:15
koukni ta situace je asi takováto. je tu několik možností. 1/ ty vstupní testy sou složitý proto aby měla personalstka co dělat protože jinak se fláká a firma stejně nikoho nepotřebuje, kdyby potřebovala tak by tě vzala i s polovičníma znalostma takže rozhodně nesmutni. Taky si timhle stylem dělaj firmy reklamu - metoda joooo tam maj krutý vstupní testy tak tam budou dělat samý esa a bude to nejlepší firma v oboru - opak ale bejvá pravdou pravdou. 2/ problém je v tom, že vyškolit schopnýho programátora trvá několik let a po celou tuto dobu musíš brát plat. Kdyby výuka a zaškolení programátora zabralo 2-3 měsíce tak je to každýmu fuk. 3/ Ve firmě je "Šéf" a panuje tam tzv.  schizofrenní stav - šéf vydá příkaz sežeňte mi programátora. Šéf možná ani neumí programovat a je to lempl. Personalistka dostane bopky, aby ji nevyhodili kdyby vzala dalšího lempla a tak de za tim kdo toho ve firmě ví nejvíc aby ji pomoh. Protože to je obvykle člověk co to dělá dlouho tak neni schopen si uvědomit, že toho samýho člověka firma nesežene a často je to taky lehce "asociální" stvoření neshcopný normálně komunikovat a naklepe personalistce nesmyslnej vstupní test. Všichni vědí že zakázek je relativně dost a ve firmě se všichni dobře uživěj a stejně zaškolovat někoho novýho je vopruz. 4/ sou firmy co nikoho nepřibíraj a výběrový řízení maj jako zábavu - baví se tim, že zadávaj úkoly na vypracování zájemcům o práci - říká se tomu sadismus. Obvykle na výběrovým řízení dostaneš domácí úkol a i když ho vypracuješ stejně tě nevemou. 5/ takhle bych mohl pokračovat do nekonečna .... 

pokud máš třeba vš (IT) a něco umíš, tak doučit se "něco" mužeš i externě na dohodu s nižší mzdou a firma tak získá dalšího člověka ... takže možností je mnoho .... ale demokracie je demokracie a každej si muže dělat co chce ...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 17. 11. 2017, 10:38:00
O žádný quicksort mi nikdy nešlo a neznám nikoho, kdo by u pohovoru někoho zkoušel z quicksortu.
Možná by bylo fajn, než se příště zapojíte do diskuse, zjistit si, o čem se diskutuje. Doporučoval bych začít třeba dotazem.

Ale spoustu uchazečů to vůbec netrklo, nač ten který příklad míří.
To jsem ve škole miloval, tyhle otázky „uhodněte, na co myslím“. Zejména v případě, kdy zkoušený odpověděl naprosto správně, ale zkoušený to nezaregistroval, protože to byla odpověď z jiného směru, než kam mířil on.

Mimochodem, příklad na prohledávání do šířky a příklad na dynamické programování jsem dával spíš jako hozenou rukavici, zda se někdo třeba chytne, ale za ty 4 roky, kdy jsem ty pohovory dělal, je zvládlo přesně nula uchazečů.
Hm, to je fakt prima kritérium pro výběr uchazečů, když to zvládnou všichni stejně. Já teda při pohovoru radši používám kritéria, která mi uchazeče rozdělí do dvou skupin – na ty, které nechci, a na ty, které chci pozvat do dalšího kola nebo přijmout.

Vždyť to je podobné, jako by se na zubařské oddělení hlásilo deset lidí, z nichž dva aspoň dokážou poznat kazový zub a opravit ho, další čtyři sice kaz poznají, ale nevědí, co s ním, a zbytek nezvládá ani to. Na zánět kořenových kanálků a jeho řešení se ale raději neptejte nikoho z těch deseti. Tak jestli vám to připadá normální, tak mně to teda připadá šílené!
Ne, není to podobné. Jak jsem psal, programování je dnes široký obor, od programování vypínače žárovky po programování cloudového chatu. Programátor toho vypínače žárovky nebude quicksort potřebovat, protože má k dispozici tak málo paměti, že s emu do ní žádný seznam nevejde, natož aby ho mohl řadit. Programátor cloudového chatu také nebude quicksort potřebovat, protože stáhnout všechny záznamy z distribuovaného úložiště do své aplikace a řadit je tam zkusí jenom jednou.

Takže je to spíš podobné, jako kdyby zubařské oddělení shánělo zubaře, poliklinika si dala inzerát na lékaře a adepty pak zkoušeli z operace slepého střeva.

Mě spíš děsí, když v reálném životě uspěje člověk, který plácá pamětí v ASICu a nevejde se do časování protokolu kvůli tomu, že pomocí floating pointu na železe bez FPU počítá něco, na co stačí pár bitových manipulací, kdyby o nich něco tušil.
Což ale asi nebude programátor Node.js nebo v Javě, o kterých je tu řeč. Programování je široký obor, někde mezi základní znalosti patří to, že je potřeba se vejít na zásobník, někde zase to, že data se třídí a řadí už v datovém úložišti a aplikace už je jenom vhodně prezentuje.

učit někoho programovat během zkušební doby, když to nezvládl za předchozí roky studia, to teda good luck.
Během zkušební doby se samozřejmě nikdo programovat nenaučí. Málokdo se to naučí během studia, protože tady školy zaměřené na programování nemáme (jeden semestr kódování nikoho nenaučí programovat, pár dalších semestrů zaměřených na jiný jazyk nebo nějakou technologii to moc nevylepší), a samostudium není cesta pro každého.

Pro zajímavost, zažil jsem i člověka, který ani po upozornění na konkrétní řádek nechápal, v čem má chybu ("nulovost" doublu testoval pomocí ==) a rozčiloval se, že máme asi nějakou chybu v překladači, protože v těch proměnných jsou nějaká trochu jiná čísla, než jaká do nich přiřazuje.
Je hezké, že nejprve odsoudíte to, když se někdo ptá na konkrétní implementace či specifikace, a následně se sám hrozně pohoršujete nad tím, že někdo nezná konkrétní specifikaci.

A to upozornění na konkrétní řádek je přesně to „uhodněte na co myslím“. Když dotyčný neví, jak fungují čísla s plovoucí řádovou čárkou, tak to samozřejmě nemůže vymyslet, v čem je ta chyba.

Ale podle zdejších diskutérů programátor přece nemusí nic vědět o tom, jak jsou v počítači reprezentována čísla.
Pro mne osobně je nezajímavý člověk, který bude znát reprezentaci čísel v jednom nebo několika jazycích nebo podle nějakého standardu, a bude o tom tvrdit, že je to jak „jsou v počítači reprezentována čísla“. Já raději takového programátora, který bude chápat, že čísla jsou v počítači reprezentována tak, jak se někdo rozhodne, že je bude reprezentovat – a že to vždy bude mít nějaké výhody a nevýhody. Takových špeků, jako že čísla s plovoucí řádovou čárkou nemůžu porovnávat na rovnost, jsou v programování miliony, a nemůžu po nikom chtít, aby je všechny znal. Já potřebuju, aby uměl přijít na to, že na takový problém narazil, aby si pak uměl nastudovat, jak to tedy funguje a jak to má použít – a ideálně aby měl cit pro to takováhle místa odhalit ještě před tím, než to začne používat a na chybu narazí.

Vám možná stačí, když programátor ovládá pár konkrétních technologií – OK, může být. Pak to ale nemůžete zevšeobecňovat, protože jiní programátoři potřebují úplně něco jiného.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 17. 11. 2017, 10:46:27
Pokud jsou prvky seřazené, pak jsou zároveň setříděné
V takovém případě je ale to setřídění dost umělé, protože každý prvek má svou vlastní třídu, a to jenom tak pro nic za nic, protože to jde. Takhle setříděné jsou ale i neseřazené prvky.

Mluvit o setřídění seřazených prvků má smysl tehdy, pokud se více prvků řadí na stejnou pozici, nebo-li jejich vzájemné pořadí bude po seřazení náhodné. Pak má smysl dívat se na to tak, že nejprve setřídím prvky do skupin se stejnou řadící platností, pak seřadím skupiny a pořadí prvků ve skupině už ponechám náhodné. Málokdy to ale má skutečný význam. Ale výjimky se najdou, třeba právě ty hashmapy – pokud se mi velké množství prvků setřídí do několika málo skupin, bude vyhledávání v hashmapě neefektivní.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 17. 11. 2017, 13:23:07
Nimráte se tu v blbostech! Tady nejde o slovíčkaření, co je v češtině "řazení" a co je "třídění", ale o zavedený terminus technicus "třídicí algoritmy". Tento termín se totiž u nás používá už od dob, kdy většina místních ekšpertů byla ještě na houbách v lese hlubokém. Programátor by mohl vědět, že "třídicí algoritmy" a "řadicí algoritmy" jsou v naší branži synonyma, podobně jako třeba v matematice "totální diferenciál" a "úplná diferenciální forma" nebo "sekunda" a vteřina". Pokud se v tom nimráte, akorát dokazujete, že trpíte fachidiotismem. Já ty termíny nezavedl, ale pod těmito termíny naleznete danou problematiku v české odborné literatuře. Považuji za součást odborného vzdělání, že se dotyčný orientuje i v terminologii svého oboru. Nebo to už se dnes taky nenosí?

O žádný quicksort mi nikdy nešlo a neznám nikoho, kdo by u pohovoru někoho zkoušel z quicksortu.
Možná by bylo fajn, než se příště zapojíte do diskuse, zjistit si, o čem se diskutuje. Doporučoval bych začít třeba dotazem.
"Podívat se na stromové struktury, snad i třídicí algoritmy" podle tebe znamená totéž, co "naučit se nazpaměť quicksort a být z něho zkoušen"? Teda ne že by to bylo něco světoborně náročného, co nejde pochopit, ale chápu, že pro místní by to bylo podobně urážlivé, jako ptát se toho hypotetického zubaře na nějaký anatomický pojem ležící mimo dutinu ústní.

Ale spoustu uchazečů to vůbec netrklo, nač ten který příklad míří.
To jsem ve škole miloval, tyhle otázky „uhodněte, na co myslím“. Zejména v případě, kdy zkoušený odpověděl naprosto správně, ale zkoušený to nezaregistroval, protože to byla odpověď z jiného směru, než kam mířil on.
Ano, když ti prográmek po zadání čísla vyhodí po několika vteřinách čekání segfault, tak je strašně těžké uhodnout, jak se asi čekalo, že to bude řešeno. To chápu. Proč by se měl programátor zamýšlet nad tím, jak asi vypadá stavový strom daného problému, než se do toho pustí. To je přece nad jeho schopnosti, od toho tu není. Programování je přece široký obor a zrovna on časovou a paměťovou náročnost nestudoval.

Mimochodem, příklad na prohledávání do šířky a příklad na dynamické programování jsem dával spíš jako hozenou rukavici, zda se někdo třeba chytne, ale za ty 4 roky, kdy jsem ty pohovory dělal, je zvládlo přesně nula uchazečů.
Hm, to je fakt prima kritérium pro výběr uchazečů, když to zvládnou všichni stejně. Já teda při pohovoru radši používám kritéria, která mi uchazeče rozdělí do dvou skupin – na ty, které nechci, a na ty, které chci pozvat do dalšího kola nebo přijmout.
Je to prima kritérium na zjištění, zda dnešní vysokoškolsky vzdělaní uchazeči zvládnou alespoň to, co kdysi zvládali středoškoláci, kteří se to učili na í kvé sto padesát jedničkách. Bohužel nikoli.

Vždyť to je podobné, jako by se na zubařské oddělení hlásilo deset lidí, z nichž dva aspoň dokážou poznat kazový zub a opravit ho, další čtyři sice kaz poznají, ale nevědí, co s ním, a zbytek nezvládá ani to. Na zánět kořenových kanálků a jeho řešení se ale raději neptejte nikoho z těch deseti. Tak jestli vám to připadá normální, tak mně to teda připadá šílené!
Ne, není to podobné. Jak jsem psal, programování je dnes široký obor, od programování vypínače žárovky po programování cloudového chatu. Programátor toho vypínače žárovky nebude quicksort potřebovat, protože má k dispozici tak málo paměti, že s emu do ní žádný seznam nevejde, natož aby ho mohl řadit. Programátor cloudového chatu také nebude quicksort potřebovat, protože stáhnout všechny záznamy z distribuovaného úložiště do své aplikace a řadit je tam zkusí jenom jednou.

Takže je to spíš podobné, jako kdyby zubařské oddělení shánělo zubaře, poliklinika si dala inzerát na lékaře a adepty pak zkoušeli z operace slepého střeva.
Programování není o nic širší obor, než kterýkoli jiný obor. Ať jde o medicínu, právničinu, matematiku nebo cokoli jiného. Medik taky musí zvládnout celou anatomii, přestože se pak třeba celý život bude vrtat jen v žaludku, právníci se taky učí celé právo, přestože se pak třeba dotyčný bude specializovat jen na daňové právo. Tady jde o všeobecný přehled po oboru, o chápání souvislostí, o znalost společných metodik a principů.
Problém je v tom, že vidina vysokých příjmů (a to bohužel i na straně vzdělávacích institucí, vzhledem k systému jejich financování) do naší branže přivedla spoustu jedinců, kteří na to nemají schopnosti a měli by se raději živit něčím méně náročným. Tím neříkám, že by programování bylo nějak extra náročné oproti třeba té medicíně, ale pro tyto jedince to prostě náročné je, protože jejich hlava na to nestačí. Nestačila by ani na tu medicínu, ani na ta práva, ani na tu matematiku. Stačila by na nějaký učební obor s maturitou, dejme tomu.

Mě spíš děsí, když v reálném životě uspěje člověk, který plácá pamětí v ASICu a nevejde se do časování protokolu kvůli tomu, že pomocí floating pointu na železe bez FPU počítá něco, na co stačí pár bitových manipulací, kdyby o nich něco tušil.
Což ale asi nebude programátor Node.js nebo v Javě, o kterých je tu řeč. Programování je široký obor, někde mezi základní znalosti patří to, že je potřeba se vejít na zásobník, někde zase to, že data se třídí a řadí už v datovém úložišti a aplikace už je jenom vhodně prezentuje.
Ne! Jak pracuje uvnitř počítač, to je prostě základní znalost! To je jak kdyby zubař netušil, že v těle je i nějaké srdce a plíce jak ty orgány fungují!

Pro zajímavost, zažil jsem i člověka, který ani po upozornění na konkrétní řádek nechápal, v čem má chybu ("nulovost" doublu testoval pomocí ==) a rozčiloval se, že máme asi nějakou chybu v překladači, protože v těch proměnných jsou nějaká trochu jiná čísla, než jaká do nich přiřazuje.
Je hezké, že nejprve odsoudíte to, když se někdo ptá na konkrétní implementace či specifikace, a následně se sám hrozně pohoršujete nad tím, že někdo nezná konkrétní specifikaci.

A to upozornění na konkrétní řádek je přesně to „uhodněte na co myslím“. Když dotyčný neví, jak fungují čísla s plovoucí řádovou čárkou, tak to samozřejmě nemůže vymyslet, v čem je ta chyba.
Programátor netuší, jak v počítači fungují čísla s plovoucí čárkou?!? No to je docela fatální neznalost! Jestli někdo reprezentaci založenou na mantise a exponentu považuje za nějaký špek (tím vůbec neříkám, že musí znát konkrétně IEEE 754!), tak to by mě vážně zajímalo, na co bych se těch lidí měl vlastně ptát, abych zjistil, jestli vůbec někdy napsali alespoň jedinou řádku programu a ono to fungovalo. Protože to dnes při tom, jak si na školách stahují hotová řešení a vzájemně posílají úkoly, může být situace ne zcela z říše fantazie.

Ale podle zdejších diskutérů programátor přece nemusí nic vědět o tom, jak jsou v počítači reprezentována čísla.
Vám možná stačí, když programátor ovládá pár konkrétních technologií – OK, může být. Pak to ale nemůžete zevšeobecňovat, protože jiní programátoři potřebují úplně něco jiného.
Celou dobu tu vysvětluji, že mě konkrétní technologie nezajímají. Nikdy jsem se nikoho neptal, zda ví, jak vypadá zásobníkový rámec na ARMech, nikoho jsem nezkoušel ze znalosti STL a nikoho jsem se nikdy neptal na filesystem u paměťových karet, přestože se všemi těmito věcmi pak dotyčný musel pracovat.
Ale co je to pro boha za programátora, když netuší nic o paměťové a časové náročnosti algoritmů, když nezná základní techniky algoritmizace, když nikdy neslyšel o základních datových strukturách, když ani v hrubých rysech netuší, jak počítač vlastně funguje, nezná zdaleka nejběžnější způsob reprezentace čísel v něm (ať už jde o FP nebo o dvojkový doplněk)...?
Můžete mi teda někdo prozradit, co teda těch pět let na té vysoké dělal a co bych mohl asi tak očekávat, že bude umět? Jako čím si zaslouží ty peníze, které očekává, že bude dostávat, když vlastně dohromady vůbec nic neumí? Jakou práci očekává, že bude dostávat? Za těch 80 tisíc měsíčně...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: atarist 17. 11. 2017, 14:01:52
Tady nejde o slovíčkaření, co je v češtině "řazení" a co je "třídění", ale o zavedený terminus technicus "třídicí algoritmy". Tento termín se totiž u nás používá už od dob, kdy většina místních ekšpertů byla ještě na houbách v lese hlubokém.

Hele Kiwi, se zbytkem toho, co jsi napsal, souhlasím, ale v tomto ^^^ pravdu nemáš. I "kdysi dávno" se ty termíny rozlišovaly, typicky třeba u Honzíka (tedy nikdy bych neřekl, že zrovna jím budu někdy argumentovat). Jedním z mála algoritmů, kde se používají oba názvy, je radix sort, ve kterém se opravdu prvky napřed _roztřídí_ za účelem jejich pozdějšího _seřazení_. I angličtina tady rozlišuje mezi _to group_ a _to sort_.

Ale jak říkám, se zbytkem souhlasím. A dotazy na základní vlastnosti FP (ne nutně IEEE 754 s jeho specialitkami) dneska jen vyvolají otevření pusy, co to jako řeším :-). Dtto i pitomej dvojkovej doplněk, ostatně zrovna nedávno se tady někdo divil, jak je ..... možné, že v Javě Math.abs() vrací "divný" výsledek pro MIN_INT.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 17. 11. 2017, 14:29:36
Tady nejde o slovíčkaření, co je v češtině "řazení" a co je "třídění", ale o zavedený terminus technicus "třídicí algoritmy". Tento termín se totiž u nás používá už od dob, kdy většina místních ekšpertů byla ještě na houbách v lese hlubokém.

Hele Kiwi, se zbytkem toho, co jsi napsal, souhlasím, ale v tomto ^^^ pravdu nemáš. I "kdysi dávno" se ty termíny rozlišovaly
Tak v literatuře, co znám já, a na MFF a na FJFI se tedy používaly záměnně, přičemž "třídění" převažovalo - "setřiďte pole podle velikosti"... Nikdy při tom nevznikl žádný problém s nedorozuměním, že by snad třídicí algoritmy fungovaly nějak jinak než řadicí. Viz Töpfer, Kryl, Virius apod. Podobné slovíčkaření kdysi předváděl Ondřej Čada, když mu vadil český termín "přetěžování" pro anglický "overloading". Ale mám pocit, že už ho to přešlo a že se smířil s tím, že když každý ví, oč jde, tak nejsou nějaké jazykové nuance až tak zásadní. Nicméně připadá mi dost legrační, když se tu někdo pře, zda-li je správnější "třídicí" nebo "řadicí algoritmy", a zároveň se pohoršuje nad tím, když by někdo po něm chtěl, aby se v nich orientoval. No hlavně že se bude nimrat v názvu.
Mimochodem, když už se tu argumentovalo wikipédií:
https://cs.wikipedia.org/wiki/%C5%98adic%C3%AD_algoritmus

P.S.: Nitroglycerin je taky "nepřesný" název pro glyceroltrinitrát, ale každý chemik nejspíš bude vědět v obou případech, o co jde, a nebude rozvíjet teorie o tom, že je to nějaká úplně jiná substance, aniž by věděl jak u jedné, tak u druhé, jaká, tak jako místní mudrlanti.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 17. 11. 2017, 14:40:27
Myslím, že pokračování diskuse je zbytečné. Vy si prostě myslíte, že programování je velice úzký obor, že nejnovější výkřik techniky, se kterým se programátor může setkat, je Pentium, a když bude takový programátor řešit výkon nějakého programu, bude řešit, jak se mu v tom Pentiu ty instrukce poskládají za sebou. Já si zase s dovolením budu dál myslet, že  takové věci jako GMail, Facebook, Google nebo WhatsApp vytvářejí také programátoři, pro které například tou základní znalostí není to, jak pracuje uvnitř počítač, ale jak „uvnitř“ pracuje cloud.

Programování není o nic širší obor, než kterýkoli jiný obor. Ať jde o medicínu, právničinu, matematiku nebo cokoli jiného. Medik taky musí zvládnout celou anatomii, přestože se pak třeba celý život bude vrtat jen v žaludku, právníci se taky učí celé právo, přestože se pak třeba dotyčný bude specializovat jen na daňové právo. Tady jde o všeobecný přehled po oboru, o chápání souvislostí, o znalost společných metodik a principů.
To je právě ten problém, že místo všeobecného přehledu a chápání souvislostí se ten zubař detailně učí celou anatomii. Takže když ukončí školu, neumí ani tu anatomii, souvislosti nechápe vůbec, a tu zubařinu se teprve začíná učit.

K všeobecnému přehledu a chápání souvislostí by mělo patřit i to, že všeobecný přehled a schopnost chápat souvislosti člověk nezíská tím, že se bude učit spoustu detailů – a ten všeobecný přehled a chápání souvislostí z toho už nějak sám vyplyne. Tak to bohužel nefunguje.

Je to prima kritérium na zjištění, zda dnešní vysokoškolsky vzdělaní uchazeči zvládnou alespoň to, co kdysi zvládali středoškoláci, kteří se to učili na í kvé sto padesát jedničkách. Bohužel nikoli.
Představte si, že dnešní vysokoškolsky vzdělaní inženýři, kteří vyvíjejí robotická auta, nezvládnou ani to, co kdysi uměl každej retardovanej sluha – osedlat koně. Cha, chtějí vozit lidi, a neumí osedlat koně, dovedete si to představit?

Ale co je to pro boha za programátora, když netuší nic o paměťové a časové náročnosti algoritmů, když nezná základní techniky algoritmizace, když nikdy neslyšel o základních datových strukturách, když ani v hrubých rysech netuší, jak počítač vlastně funguje, nezná zdaleka nejběžnější způsob reprezentace čísel v něm (ať už jde o FP nebo o dvojkový doplněk)...?
Co jste proboha za programátora, když netušíte nic o tom, jak je algoritmus ovlivněn síťovou latencí? Když neznáte základní síťové protokoly, neznáte základní formáty pro přenos dat, jako XML, JSON, ASN.1? Když ani v hrubých rysech netušíte, jak vlastně funguje cloud, neznáte zdaleka nejběžnější komunikační protokol (HTTP)…?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: atarist 17. 11. 2017, 14:59:49
Tady nejde o slovíčkaření, co je v češtině "řazení" a co je "třídění", ale o zavedený terminus technicus "třídicí algoritmy". Tento termín se totiž u nás používá už od dob, kdy většina místních ekšpertů byla ještě na houbách v lese hlubokém.

Hele Kiwi, se zbytkem toho, co jsi napsal, souhlasím, ale v tomto ^^^ pravdu nemáš. I "kdysi dávno" se ty termíny rozlišovaly
Tak v literatuře, co znám já, a na MFF a na FJFI se tedy používaly záměnně, přičemž "třídění" převažovalo - "setřiďte pole podle velikosti"...

Ok dobře, je krásně vidět, že anii jim to neštymovalo, když použili "setřiďte pole" a ne "roztřiďte pole".

Ale začínám mít pocit, že to bude co VŠ to trošku jiná terminologie, a těch VŠ s informatikou bylo pár, takže je jen pár rozporů. Z "Honzíka" na VUT si pamatuju hlavně to, jak nás drbal na "třídit"/"seřadit" právě na tom příkladu s tělocvikem, v Praze se na to asi kašlalo, možná tam měli menší rozhled? :-) [Virius asi trošku jo, ale to je na jinou debatu, kdysi část proběhla na Chipu]
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Lopata 17. 11. 2017, 15:53:57
Tady nejde o slovíčkaření, co je v češtině "řazení" a co je "třídění", ale o zavedený terminus technicus "třídicí algoritmy". Tento termín se totiž u nás používá už od dob, kdy většina místních ekšpertů byla ještě na houbách v lese hlubokém.

Hele Kiwi, se zbytkem toho, co jsi napsal, souhlasím, ale v tomto ^^^ pravdu nemáš. I "kdysi dávno" se ty termíny rozlišovaly
Tak v literatuře, co znám já, a na MFF a na FJFI se tedy používaly záměnně, přičemž "třídění" převažovalo - "setřiďte pole podle velikosti"...

Ok dobře, je krásně vidět, že anii jim to neštymovalo, když použili "setřiďte pole" a ne "roztřiďte pole".

Ale začínám mít pocit, že to bude co VŠ to trošku jiná terminologie, a těch VŠ s informatikou bylo pár, takže je jen pár rozporů. Z "Honzíka" na VUT si pamatuju hlavně to, jak nás drbal na "třídit"/"seřadit" právě na tom příkladu s tělocvikem, v Praze se na to asi kašlalo, možná tam měli menší rozhled? :-) [Virius asi trošku jo, ale to je na jinou debatu, kdysi část proběhla na Chipu]
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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 17. 11. 2017, 16:23:17
Věru nevím, jestli svou nechápavost jen hrajete, nebo takový opravdu jste.

Na Vaše otázky bych odpověděl asi tak, že vývojář parseru XML musí něco vědět o rekurzi a automatech, že autor síťového stacku (tedy pokud to nemá být nějaký nenažraný, pomalý, nespolehlivý šmejd) musí něco vědět o datových strukturách a práci s nimi, ale k pochopení syntaktického analyzátoru nemusí vědět nic o XML, k pochopení vlastností základních datových struktur a algoritmů s nimi se pojícími nemusí vědět nic o TCP/IP.
Když chápe podstatu parserů a zná základní techniky algoritmizace, nebude pro dotyčného problém implementovat XML parser nebo nějaký síťový stack (např. v automatizaci se používá i hromada jiných protokolů než TCP/IP, takže by se lehce mohlo stát, že jeho znalost bude dotyčnému naprosto k ničemu). Ale cesta od znalosti XML k tomu, jak napsat jeho parser, je řádově trnitější, než cesta opačným směrem. Připadá mi opravdu tristní, že tak přirozené a jasné věci tu musím psát.

věci jako GMail, Facebook, Google nebo WhatsApp vytvářejí také programátoři, pro které například tou základní znalostí není to, jak pracuje uvnitř počítač
A to víte, nebo jen podle sebe usuzujete o schopnostech ostatních?

Představte si, že dnešní vysokoškolsky vzdělaní inženýři, kteří vyvíjejí robotická auta, nezvládnou ani to, co kdysi uměl každej retardovanej sluha – osedlat koně. Cha, chtějí vozit lidi, a neumí osedlat koně, dovedete si to představit?
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á...

No řekl bych, že je důležitější, když člověk chápe podstatu quicksortu, než když se umí dohadovat o tom, jestli quicksort třídí nebo řadí. Podobná ekvilibristika vždycky bývala spíš součástí ukecaných humanitních věd, ale rozhodně ne věd exaktních (jejich exaktnost spočívá v předmětu jejich studia, nikoli v tom, jestli "třídění" je správný ekvivalent anglického "sortingu" nebo třeba v algebře "svaz" anglického "lattice").
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. Rozlišovat kategorii "třídicích" algoritmů a "řadicích" algoritmů jen kvůli nějakému přihlouplému příměru z tělocviku, když principiálně - z algoritmického hlediska - patří do jedné kategorie, mi připadá padlé na hlavu.

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
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: anonym 17. 11. 2017, 16:37:07
Já jsem vystudoval béčkovou vysokou školu a myslím si, že nemám tolik znalostí a ani nejsem tak inteligentní, jako tady kiwi. Ale zato si myslím, že budu jednou stejně brát podobné peníze a budu dělat stejné sračky jako on ;D

quicksort bych naimplementovat neuměl, a kdybych ho někde viděl napsaný, smazal bych to a dal tam Array.sort()  ;D a zapálil si cigáro.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: anonym 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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Lopata 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 ;-)
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: gll 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.

Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 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)
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Radovan. 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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: gll 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í.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Filip Jirsák 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?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: x14 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?
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kit 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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Kiwi 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.
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: fdfs 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
:)




Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: PetrM 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...
Název: Re:Stromové struktury a tridici algoritmy
Přispěvatel: Ladislav Zitka 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