Stromové struktury a tridici algoritmy

Re:Stromové struktury a tridici algoritmy
« Odpověď #30 kdy: 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.


FS

Re:Stromové struktury a tridici algoritmy
« Odpověď #31 kdy: 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).

Lopata

Re:Stromové struktury a tridici algoritmy
« Odpověď #32 kdy: 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?

Lopata

Re:Stromové struktury a tridici algoritmy
« Odpověď #33 kdy: 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í.

Jerry

Re:Stromové struktury a tridici algoritmy
« Odpověď #34 kdy: 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 ...


Re:Stromové struktury a tridici algoritmy
« Odpověď #35 kdy: 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.

Re:Stromové struktury a tridici algoritmy
« Odpověď #36 kdy: 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í.

Kiwi

Re:Stromové struktury a tridici algoritmy
« Odpověď #37 kdy: 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ě...

atarist

Re:Stromové struktury a tridici algoritmy
« Odpověď #38 kdy: 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.

Kiwi

Re:Stromové struktury a tridici algoritmy
« Odpověď #39 kdy: 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.

Re:Stromové struktury a tridici algoritmy
« Odpověď #40 kdy: 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)…?

atarist

Re:Stromové struktury a tridici algoritmy
« Odpověď #41 kdy: 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]

Lopata

Re:Stromové struktury a tridici algoritmy
« Odpověď #42 kdy: 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.

Kiwi

Re:Stromové struktury a tridici algoritmy
« Odpověď #43 kdy: 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

anonym

Re:Stromové struktury a tridici algoritmy
« Odpověď #44 kdy: 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.