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 ... 212 213 [214] 215 216 ... 384
3196
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.

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

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

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

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

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

3202
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“.

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

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

3205
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.)

3206
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?

3207
Vývoj / Re:Jak můžu opustit funkci
« kdy: 12. 07. 2018, 18:34:32 »
Chtěl tím říci, že puristi…
Ovšem je hloupé, když chce být někdo purista a puntičkář, a zamotá break mezi způsoby, jak v C ukončit funkci. Čtenář pak totiž může pochybovat, jestli dotyčný vůbec umí programovat…

3208
Vývoj / Re:Jak můžu opustit funkci
« kdy: 12. 07. 2018, 16:54:33 »
Navrhoval by som spravne pouzit strukturovane programovanie a vyhnut sa returnom a breakom uprostred procedury.
Mohl byste uvést konkrétní příklad, kdy může být v C break na konci procedury (a má tam nějaký smysl)?

3209
Software / Re:Atributy v XML
« kdy: 12. 07. 2018, 13:36:47 »
Měl jsem za to, že se bavíme o přednostech a nedostatcích formátů, ne o nezávislých nástrojích k nim vytvořených (které si koneckonců můžete vyrobit i sám).
Pokud se budeme bavit pouze o samotném formátu a budeme ignorovat infrastrukturu, která kolem formátu existuje, bude vždy nejlepší nějaký vlastní proprietární formát vytvořený přesně na míru danému případu. Napíšete si k němu superrychlý parser, vlastní serializer a vše, co budete potřebovat.

V praxi to tak ale asi dělat nebudete, protože by pro vás bylo příliš nákladné vytvářet si i jen minimální infrastrukturu kolem toho vašeho formátu. Takže reálně nemá smysl porovnávat jen samotný formát, ale formát s celou tou infrastrukturou okolo. Proto se také v prohlížečích rozšířil JSON, protože v nich má lepší podporu než XML – a zároveň je tohle shodou okolností jediný důvod, proč se vůbec JSON rozšířil.

3210
Software / Re:Atributy v XML
« kdy: 12. 07. 2018, 07:11:15 »
A ještě k tomuhle. On v tom srovnání vysvětluje, proč použil tu ukecanější variantu. Je to proto, že XML dovoluje právě víc zápisů a v dost případech je použita právě ta delší. Vždyť i tohle vlákno začalo tím, jestli použít tu delší nebo kratší verzi. Takže dává smysl se ptát, jaká je cena za tuhle flexibilitu (obzvlášť pokud zůstane nevyužitá).
Ehm... Kdyby to aspoň napsal někdo jiný...

Použil tu ukecanější variantu, takže tu flexibilitu, že může použít i delší zápis, využil.

Stran: 1 ... 212 213 [214] 215 216 ... 384