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ě...