Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Filip Jirsák

Stran: 1 ... 203 204 [205] 206 207 ... 375
3061
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 20:32:23 »
Len som nevedel, ze sa na root.cz jedna z najklasickejsich paradigiem povazuje za "blaboly".
Už jste s těmi manipulacemi otravný. Nikdo tu nepovažuje za bláboly jedno z nejklasičtějších paradigmat, za bláboly označuju pouze vaši velmi svéráznou interpretaci tohoto paradigmatu. Přičemž o její svéráznosti svědčí už jenom to, kolikrát jste musel svá tvrzení vzít zpět (ve vašem podání to tedy byly jen výmluvy, že jste to tak nemyslel) –  např. že break slouží k opuštění funkce, nebo break ve switchi.

3062
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 16:28:09 »
Takze prave ste napisali, ze su pripady, ked kompilator riadiace prikazy ako skoky neskompiluje. Mozete vratit diplom ak nejaky mate  :'(.  Argumentacia straw-manom ide aj mne.  Som z tohto roota celkom smutny. :'(
Ano, předvedl jste teď krásný příklad podsunutého argumentu – já jsem až do reakce na váš úhybný komentář o kompilátorech vůbec nic nepsal. Nicméně já jsem vám žádné argumenty nepodsouval – že break nebo continue jsou jenom skryté goto jste vy napsal, stejně jako jste napsal, že jakékoli goto je zlo. Byly to totiž jediné vaše „argumenty“ proti používání break, continue nebo vícenásobného return.

vodny "tazatel" zabezpeci nejake formalne vzdelanie ohladom algoritmizacie, moze si spravit nazor o "blabolech" sam. Pochybujem, ze by nieco taketo mohlo niekomu uskodit. Teda okrem mna, zbytoce prokrastinujem.
Vy zřejmě nějaké formální vzdělání ohledně algoritmizace máte, ale k rozpoznávání blábolů o programování vám to zjevně nepomohlo (pokud opravdu nejste troll, který bláboly píše záměrně).

3063
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 15:40:43 »
Vy mate trosku problem s rozlisenim vyssej a nizsej urovne programovania. Je mozne programovat aj priamo v assembleri, kde skoky su dost dolezite instrukcie, ale od toho je kompilator, aby taky kod vytvoril.  Uz kompilator rozhodne, ze ci nejaky for cyklus bude realizovany cez skok, alebo proste skonstatuje, ze vsetky opakovania zrealizuje sekvencne za sebou. (lebo je ich malo a vie konkretne povedat, co sa bude vykonavat). Alebo nejaky if proste vyhodi, lebo sa nikdy nevykona.
Přestaňte hledat problémy u jiných, sám jich máte s programováním dost a dost – takže začněte u sebe. Odrolování smyčky je optimalizace kompilátoru, je to speciální případ – a v tomto speciálním případě opravdu není pro implementaci cyklu potřeba skok. Vyhození ifu je opět optimalizace kompilátoru, navíc ještě v případě chybně napsaného programu, protože když se ten if nikdy nevykoná, neměl by vůbec ve zdrojáku být.

Ciste zlo vyzera inak, pouzitie break, continue, goto, viacej return-ov moze byt obcas "ciste dobro", ak nie je ine vychodisko z nudze.
Hlavně ale použití break, continue nebo více returnů může být úplně normální konstrukce – žádné východisko z nouze, ale prostě nejlepší možné řešení daného problému.

3064
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 14:42:43 »
taky chapu, ze neni svet cernobily a jsou konstrukce, jejich pouziti je vhodne, ktere nevhodne, a ktere vhodne v nekterych pripadech. Ale diskutovat s lidmi, kteri vidi svet tak, ze je neco "ciste zlo", nebo "ciste dobro" pro me prestava byt prinosne a zajimave.
Že vícenásobný return, break nebo continue jsou čisté zlo jste tu tvrdil vy a balki, ostatní vám to vyvraceli, že takhle černobílé to není. Je fajn, že ta diskuse k něčemu byla, když jste otočil o 180 stupňů.

3065
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 14:38:34 »
Ok, mate pravo na svoj nonkonfromny nazor, zijeme v demokracii.
Není nic nekonformního na tom, když o vašich bludech veřejně prohlásím, že jsou to bludy. Vaše snaha vytvářet dojem, že tu píšete všeobecně uznávané věci, je sice hezká, ale bohužel pro vás se nezakládá na pravdě. Jak jste nakonec ukázal i vy sám, když jste musel uznat, že vaše tvrzení „všechny skoky jsou špatné“ je nesmyslné, a snažil jste se to okecat, že jste samozřejmě myslel „všechny skoky jsou špatné, s výjimkou skoků, které jsou dobré“. Tohle upřesněné tvrzení už sice je pravdivé, akorát říká úplnou banalitu.

3066
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 14:17:00 »
Utocit zacal pan Jirsak a ten ma pomerne nonkonformne nazory, a nihilizuje pouzitie strukturovaneho programovania, lebo na nizkej urovni su riadiace prikazy aj tak skok.
To se pletete, já jsem akorát vyvracel vaše bludy, a odpovídal jsem vám stejným tónem, jakým jste začal vy. Strukturované programování jsem nikdy nepopíral, popíral jsem vaše bludy, které se skutečným strukturovaným programováním nemají nic společného. Když své argumenty postavíte na tvrzení, že každý skok v programu je špatný, nedivte se, že vám někdo připomene, že součástí podmínka je i skok. break, continue i return jsou úplně stejné řídící příkazy, jako if nebo while, a do strukturovaného programování patří úplně stejně.

3067
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 14:11:31 »
Na téhle diskusi je nejzajímavější to, že ještě stále existují fundamentalisté "strukturovaného kódu", kteří jsou ochotní bez jakéhokoliv kontextu popírat break nebo continue a trvat třeba na mnohonásobném zanoření nebo potřebě else, což je ve většině nových jazyků považováno za bad practice.
Pozoruhodné je, jak to mají nepromyšlené – ale to je pro fundamentalisty typické. Argumentují tím, že všechny skoky jsou škodlivé – ale bez skoků by nic nenaprogramovali, tak se tváří, že jeden return ve funkci není žádný skok, zatímco dva returny ve funkci najednou jsou skoky. if pro ně není skok, break ve switchi také ne, ale break v cyklu najednou skok je. Prostě si vymyslí své nesmyslné krabičky, a realita se jim pak musí přizpůsobit.

3068
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 14:04:40 »
To nekdo popira? Podminky a cykly jsou ale jasne definovane a citelne konstrukce. Kdyz do nich pridas break, continue nebo return, doplnis do nich jen jinak pojmenovane "goto", ktere uz pred padesati lety bylo "considered harmful".
Ano, popíráte to vy. Když tu chcete diskutovat o skocích v programu, a ještě prosazujete pravidla jako „žádný break“ a „return jedině na konci funkce“, měl byste si nejprve nastudovat základy. Podmínky a cykly jsou, vaší terminologií, „jen jinak pojmenované goto“ – při porovnávání s goto není vůbec žádný rozdíl mezi if, for, while, do/while a break, continue nebo return. Rozdíl mezi goto a uvedenými konstrukcemi je v tom, že goto může skákat odkudkoli kamkoli, zatímco uvedené konstrukce mají jasně definovaná pravidla, odkud kam se skáče. Tento rozdíl je zásadní, a pokud ho nevidíte nebo marginalizujete, nechápete podstatu toho, co je na goto špatně. „considered harmful“ se týká právě obecného goto, nevztahuje se na všechny skoky v programu, jak se tu mylně snažíte tvrdit. Jak už jsem psal, bez skoků byste toho moc nenaprogramoval – pokud takhle základní věc nevíte, tak se nepokoušejte v programování nikomu radit.

3069
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 11:53:47 »
Ale já stále nechápu, proč by "chybový stav" měl být nějak privilegovaný oproti jakémukoli jinému "normálnímu" stavu.
Protože se na něj reaguje úplně jinak, než na normální stav. Pokud je stav normální, pokračuje program normálně v běhu. Pokud je stav chybový, může se program pokusit z něj nějak zotavit a vrátit program do nějakého normálního (předchozího nebo základního) stavu.

Představte si to třeba na bezpečných systémech. Když zabezpečovací systém na soupravě metra detekuje, že došlo k překročení maximální povolené rychlosti, nemůže se to řešit jako ostatní stavy, kde se řeší optimalizace rychlosti vzhledem k profilu tratě, grafikonu, cílovému brzdění atd. – nemůže tam mezi tím vším být schovaná podmínka „jo a pokud je překročená maximální rychlost, asi by bylo fajn začít brzdit“. Ne, ten chybový stav musí mít před vším přednost, všechno ostatní se zahodí a začne se řešit ten chybový stav – maximálním brzděním. A řešení toho chybového stavu skončí až tehdy, když je systém v nějakém jasně definovaném bezpečném stavu. Což by mohl být třeba návrat pod křivku maximální rychlosti, ale třeba v pražském metru je ten bezpečný stav až úplné zastavení soupravy. Teprve když souprava stojí, vrátila se do bezpečného normálního stavu, zruší se řešení chybového stavu a je možné pokračovat normálním způsobem, tj. strojvedoucí může soupravu znovu rozjet.

Když chci otevřít soubor, který neexistuje - proč bych to měl ošetřovat někde jinde? Když nedostanu požadovanou paměť, když v parseru detekuji syntax error
Třeba proto, abyste tu chybu vůbec ošetřil. Nebo protože jí potřebujete ošetřit na místě, kde ji vůbec nějak ošetřit můžete – což vůbec nemusí být místo, kde vznikla. Výjimky vám nebrání ošetřit chybu hned v místě, kde vznikla – ale nenutí vás k tomu. Pochybuju, že doopravdy ošetřujete možné chyby všude tam, kde teoreticky mohou nastat. Třeba při alokaci paměti.

3070
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 08:23:00 »
Zacatecnik ma obvykle mnohem jine starosti. Vetsinou je rad, ze kod splnuje zadani. Ver mi, v praci delam code review i pro hodne zacinajici programatory.
Že je potřeba uzavírat zdroje (ať už třeba soubory, paměť nebo zámky) patří k tomu splnění zadání. Programátor se to musí naučit, ne spoléhat na pochybné pravidlo, že když funkce doběhne až do konce, zdroje se uzavřou samy (a vedle toho mít druhé pravidlo, že na konci funkce je potřeba zdroje vždy uzavřít). Ono pak úplně stačí, že ve funkci drží zámek, z ní zavolá jinou funkci, která bude na to zámku také záviset, a má hezký deadlock. A bude se strašně divit, jak mohlo k něčemu takovému dojít, vždyť volání funkce přece není žádný return

To je tvuj nazor, ale bavime-li se o strukturovanem programovani, tak tam opravdu prikazy skoku (at uz jsou pojmenovany jakkoliv) nepatri, protoze tyto konstrukty rozbiji co? Strukturu kodu!
Strukturovaný kód je strukturovaný, nikoli lineární. Z lineárního kódu se strukturovaný stane tak, že přidáte určité jasně definované skoky – podmínky (a cykly) a volání subrutin. Čistě lineárně bez jakýchkoli skoků byste toho moc nenaprogramoval.

3071
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 10:30:49 »
Pytate sa riadne hlupo, ak to mozem tak povedat.
Bylo potřeba se zeptat na vaší úrovni.

Asi je vam jasne, ze davat break za case je standardna konstrukcia v niektorych jazykoch. Ak nie ste totalne hlupy (co nepredpokladam), je vam asi jasne, ze switch som zrovna nemal na mysli. Ani tento jirsakovsky flame o tom nie je.
Nemáte pravdu. break za case je úplně ta samá konstrukce, jako break v cyklu (for, while, do/while). Může tam být a nemusí a mění se tím význam programu. Není to žádná standardní konstrukce v tom smyslu, že by to bylo nutné pro překlad programu, jako třeba dvojice begin…end v Pascalu.

Že jste switch neměl na mysli jsem předpokládal, ale jenom to svědčí o tom, že ta vaše pravidla pramení z neznalosti. Protože, znovu opakuju, break ve switchi a v cyklu má úplně ten samý význam – skočí těsně za konec aktuálního bloku kódu. Ve vašem jazyce – „je to synonymum goto“.

3072
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 09:49:48 »
Dam takyto priklad zo zivota. Podo mnou robila jedna koderka juniorka uctovnictvo, bol som analytik.  Ja som jej zadal priznaky, podla ktorych sa mali generovat ucty z uctovnej osnovy.  Riadila to tiez takto returnami.
Ano, to teoreticky může být špatně, protože tam může být víc způsobů, jak se ve správném případě prochází kódem. To jsem psal, že takové použití je špatné. Ale vy to chybně generalizujete.

Navíc podle toho vašeho popisu to špatně není, podle něj to vypadá, že v tom kódu prostě jenom byla chyba. Vy byste ho možná zanořil do milionu else, protože nevíte, že i to je skryté goto, ale tím byste ten program akorát znepřehlednil.

Ked si clovek nepomaha barlickami pre rozne synonyma goto
Kdybyste věděl, co všechno jsou „synonyma pro goto“, takovýhle nesmysl byste nenapsal. Bez podmínek byste toho opravdu moc nenaprogramoval.

3073
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 09:39:22 »
A vynimky nie su strukturovane programovanie, to je len goto na iny sposob, to je vam hadam jasne.
Výjimky, return, cykly i podmínky jsou strukturované programování, a všude v tom jsou schované skoky. Bez skoků byste toho moc nenaprogramoval.

Váš problém je, že pořád prezentujete nějaké poučky, ale máte je naučené jen jako věty, nerozumíte jejich obsahu. A naučené je nemáte zas tak dobře, takže je komolíte.

Problém goto není v tom, že je to skok, ale že je to nepředvídatelný skok, může skočit odkudkoli kamkoli. Proto se ve strukturovaném programování skoky omezily jen na přesně definované případy. if podle splnění podmínky buď provede podmíněný blok a nebo skočí přesně za jeho konec (a nikam jinam skočit neumí), cykly jsou podobné, break skočí přesně za konec bloku a nikam jinam, continue skočí na začátek bloku cyklu, return  skočí hned za místo, odkud byla daná subrutina vyvolána.

Tie je vhodne vcas odchytit (tie predvidatelne) a riadenie programu robit pomocou chybovych hodnot.
Ne, řízení programu pomocí chybových hodnot není dobrý způsob. Znepřehledňuje to program a vede to k chybám, když se smíchá správný běh programu s ošetřením chyb. Zrovna nedávno se tu řešil případ se zápisem do souboru v PHP, kde celý problém spočíval v tom, že nebylo jasné, které návratové hodnoty jsou úspěch a které značí chybu.

3074
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 07:31:31 »
Skratka, veci ako break, continue, goto by sa mali pouzivat v stave najhorsej nudze. Procedura by mala mat podla moznosti len jeden return.  To ze tu mate vystudovane hnojariny a potrebujete si honit ego a slovickarit, na tomto fakte nic nezmeni.
Ty vaše rady jsou dobré akorát v případě, kdy chcete psát špatný a nečitelný kód. Protože papouškujete rady, o nichž jste možná někde něco zaslechl, ale úplně jste je nepochopil.

V případě toho returnu ta rada ve skutečnosti zní, že procedura by měla mít jednu hlavní linku, ve které se řeší její výkonný kód, a tato hlavní linka by měla být přímo v těle té procedury. Tím, že je jedna, bude mít tedy i jeden return. Je to opatření právě proti tomu, aby v proceduře bylo několik vnořených velkých ifů, z nichž každý bude dělat něco jiného a bude mít svůj vlastní konec – taková procedura dělá mnoho věcí a je lepší jí rozdělit.

K tomu, aby bylo možné kód takhle napsat, se často používá technika, kdy na začátku procedury vyhodnotíte vstupní parametry, a teprve když je vše v pořádku, následuje vlastní výkonný kód. Když parametry v pořádku nejsou, opustíte proceduru hned – buď pomocí returnu, nebo v jiných jazycích také pomocí výjimek. Ostatně pravidlo „jediný výstupní bod procedury“ by jakýkoli smysl výjimek úplně pohřbilo.

Takže to vaše zkomolené pravidlo o jediném returnu je ve skutečnosti pravým opakem toho skutečného pravidla, které se programátorům doporučuje.

Upozornění na to, že házíte break, continue a goto do jednoho pytle a pletete si return a break, není slovíčkaření, ale upozornění na to, že tomu moc nerozumíte, takže ať se začátečníci od vašich rad raději drží dál. (Mírně pokročilí to upozornění nepotřebují, protože ti už to poznají sami.)

3075
Vývoj / Re:Jak můžu opustit funkci
« kdy: 12. 07. 2018, 22:35:44 »
Normálního člověka to nenapadne. Normální člověk chápe, že chtěl předat myšlenku. Normální člověk neprudí... oh wait!
Jistěže mi připadalo pravděpodobné, že balki prostě jen prudí. Ale předpokládám u lidí vždy tu lepší variantu, proto jsem se zeptal – co kdyby tam opravdu nějaká myšlenka byla a já jsem jí přehlédl?

Stran: 1 ... 203 204 [205] 206 207 ... 375