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 - Cikáda

Stran: 1 ... 34 35 [36] 37 38 ... 54
526
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 12:55:22 »
;)

A uz slubujem, ze v tomto topicu na nic nereagujem, nech si napise kto chce, co che. Nepotrebujem krmit trollov. (Nemyslim konkretne vas)

527
Vývoj / Re:Jak můžu opustit funkci
« kdy: 16. 07. 2018, 06:45:36 »
Citace
vynucováním blbostí jí akorát tak ublížíš

V puvodnim prispevku bylo: pokud mam nekde if, melo by mit i else. Laskavy ctenar si povsimne, ze je tam pouzity podminovaci zpusob slovesa mit. Aby to bylo jasne "melo by mit" != "musi mit".

V původním příspěvku byla spousta hovadin. Vytrháváním z kontextu to neschováš. Btw pořád čekám na odpověď. ;)

Citace
Z wiki:
Kód: [Vybrat]
while (existují data k přečtení) {
  načíst data;
  ...
}
zpracovat načtená data;

Tento kod je hlavne z podstaty spatny, protoze funkce nedela jednu vec, ale minimalne dve veci: nacteni dat a jejich zpracovani. Pokud ty ulohy rozdelis, kod se da zjednodusit a vystacis si s jednim vystupnim bodem a kdyz budes vedet jak na to, muzes se obejit i bez break.

Jistě, rozdělíme to, načteme data a pak je zpracujem. To je hezký, už jsi takhle načítal třeba několika gigový soubor? ;)

Ale dobře, rádi se tu necháme poučit, hoď sem aspoň pseudokód, jak ty úlohy rozdělit, kód zjednodušit, atd.

Citace
Tak, že nebudu program větvit na 150 if/else, aby celá funkce končila jedním returnem.
Pokud mas ve funkci 150 if/else, evidentne neco delas spatne. Ale zdraham se tu uvest stare dobre pravidlo, ze ve funkci by mely byt nanejvys tri nebo ctyri zanoreni if, for,... protoze nekterym by z toho mohla explodovat hlava.

Obvykle stačí dvě úrovně zanoření, když se else nepoužívá. Těch 150 if/else byla jistě nadsázka.
[/quote]

Díky, už jsem se lekl, že to nešlo poznat.  :D

528
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 23:39:56 »
Citace
No pokud jim radíš, že po ifu má být vždy else a return do ifu nepatří, tak jim akorát další starosti přidáváš.

Radim jim, jak kod udelat srozumitelnejsi, aby se v nem oni a lidi, co budou jejich kod cist, vyznali hned napoprve. Ale to neni vec pro frajery, jak jsem psal vcera.

Čitelnost je vždycky důležitá, ale vynucováním blbostí jí akorát tak ublížíš. Viz dole.

Citace
To ale @Kit neřekl.

Ale plyne to z toho.

Neplyne.

Citace
Mimo to, kolik začátečníků si hraje se zámky ?

Tak si misto zamek dopln: neuzavreny soubor, neuvolnene spojeni do databaze a souvisejici alokovane objekty, neuzavrene sitove spojeni. Opravdu to zacatecnici nepouzivaji?

Ne, začátečníci většinou končí neuzavřeným souborem, kdy se o to přinejhorším postará OS. Tím to neobhajuju. Paradoxně if - close - return je v tomto případě asi to nejlepší řešení, ty bys tam asi zase cpal else.

Citace
1) Strukturované programování je především o logické struktuře kódu, ne o nějakých pseudopravidlech.

A te struktury kodu dosahnes jak?

Tak, že nebudu program větvit na 150 if/else, aby celá funkce končila jedním returnem.

Citace
Mimochodem If/Else mají také za následek skok, tak přemýšlím, jak rozbíjí strukturu kódu.

Ja jsem k autistum tolerantni, ale vest s nimi diskuze o nicem me nabavi.


V pohodě, naštěstí autista nejsem, takže si rád nechám odpovědět na otázku.

Citace
O jaké struktuře kódu mluvíš?

Precti si neco o strukturovanem programovani, bude stacit wikipedie, urcite te to obohati.

Z wiki:
Citace

Kód: [Vybrat]
otevřít soubor;
while (existují data k přečtení) {
  načíst data;
  if (chyba) {
    ukončit podprogram a informovat zbytek programu o chybě;
  }
}
zpracovat načtená data;
konec podprogramu;

Výše je uvedena poměrně běžná situace, se kterou se můžeme vypořádat několika způsoby: vyhozením výjimky, předčasným (druhým) návratem z procedury a nebo třeba i příkazem skoku. Ve všech těchto případech má procedura dva výstupní body a porušuje tak principy „striktního“ strukturovaného programování. Na obhajobu tohoto přístupu však musíme říci, že přepsání této procedury v souladu s pravidlem jednoho výstupního bodu by bylo poměrně těžkopádné, nemluvě o tom, jaký chaos by v kódu vznikl, pokud by do hry vstoupilo více chybových stavů a každý se navíc musel ošetřit jiným způsobem.


Škoda, že sis takto naběhl. :) Bylo by fajn, kdybys uvedl, jak bys řešil např. ten main. Člověk, který uměle vynucuje jeden return na konci funkce, i když to prasí čitelnost, tak je stejné pako jako ten, kdo používá return na každém rohu.

529
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 22:56:46 »
Pokud z nějaké knihovny obdržím návratový kód, tak ho mohu zpracovat, ale také ignorovat. Když tento kód převedu na výjimku, což zpravidla znamená vytvořit objekt, do kterého se uloží všechny potřebné informace o chybě, tak takový objekt není možné ignorovat. Jinak propadne až ven z aplikace a vypíše se, co bylo příčinou pádu.

Jistě, pokud používám funkce/knihovnu, kde se výjimky používají, tak pak není na výběr. Spíš mi šlo o to, proč bych měl na návratový kód "kašlat" (tento přístup), respektive vždycky upřednostňovat výjimky. Aspoň takový jsem z tvého vyjádření měl pocit. :)

Syntaxe je záměrně jiná, výsledek je naopak mnohem jednodušší. Neošetřuje se jednotlivě každá výjimka, ale celá skupina. Není tedy třeba se po každém provedení příkazu ptát, zda proběhl v pořádku, což způsobovalo dlouhé špagety. Místo toho se udělá sekvence příkazů, ve které se výjimky ošetří společně. Není ani potřebné, aby výjimka byla ošetřena v metodě, ve které vznikla - je to spíš nežádoucí právě kvůli zjednodušení.

Jistě, to dává smysl. Na stranu druhou když ošetřuji společně výjimky pro sekvenci příkazů, tak poté pravděpodobně ztratím tu "rozlišovací schopnost", co se kde stalo (jistě, ošetřuji třeba podobné/stejné problémy/výjimky, ale už je problém s tím kde, ne? Respektive chci-li řešit toto, tak to do kódu několik řádků přidá, či ne?).
To poslední beru, to je relevantní.

530
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 22:47:50 »
Citace
Začátečník se takovým situacím nemá učit vyhýbat, ale má se je učit zvládat.

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.

No pokud jim radíš, že po ifu má být vždy else a return do ifu nepatří, tak jim akorát další starosti přidáváš.

Citace
Minimálně 90 % funkcí nemá v takové situaci alokované žádné prostředky.

A pak je tech zbylych deset procent, kde se na to muze zapomenout a hned mas memory leak nebo neuvolneny zamek raz dva. Pokud pouziji tvuj odhad, tak deseti procentni riziko, ze neco nekde prehlednu je opravdu vysoke a neprijatelne.

To ale @Kit neřekl. Mimo to, kolik začátečníků si hraje se zámky ? ;)

Citace
Tento přístup chápu, ale nepovažuji jej za správný.

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!

1) Strukturované programování je především o logické struktuře kódu, ne o nějakých pseudopravidlech. Hlavně z mého předchozího příkladu - to by měl být zbytek funkce v else větvi, abys byl spokojen?
2) Mimochodem If/Else mají také za následek skok, tak přemýšlím, jak rozbíjí strukturu kódu.
3) O jaké struktuře kódu mluvíš? Jak ji return v ifu rozbíjí, respektive jak vypadá tvůj main v céčku?

Ano, je to můj názor a zatím jsi nebyl schopen říct, v čem je špatný.

531
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 22:14:46 »
(...)

Při důsledném používání výjimek jsou stavy nepotřebné. Funkce vrací hodnotu. Procedura něco dělá, ale návratová hodnota je void. Místo chybových stavů se v obou případech použijí výjimky, které ten chybový stav popisují mnohem lépe, než pouhý návratový kód.

Lze to i otočit - při důsledném používání stavů jsou výjimky nepotřebné. Tím nechci říct, že výjimky jsou k ničemu, jen mi zrovna toto nepřijde jako ultimátní argument. Chybový stav může popsat návratový stav stejně dobře jako výjimka, jde jen o to udělat v tom systém, respektive "udělat dokumentaci".
Ve výsledku je třeba ošetřit obojí - při použití výjimek vyřešit "chybu" a případně nahradit návratovou hodnotu nějakou smyslupnou - při použití návratových kódů je opět třeba to stejné. Upřímně moc ten rozdíl nevidím, jen se výrazně liší syntax, která je imho o kus komplikovanější. Nutno ale dodat, že nejvíce mám naprogramováno v Céčku a Haskellu, kdy v prvním výjimky úplně nejsou a v druhém jsou de facto jen v IO. :) Ale toto je asi na trochu jinou diskusi (které se nebráním, ba naopak!), tady jsme trochu OT. :)

532
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 17:27:04 »
;)

A uz slubujem, ze v tomto topicu na nic nereagujem, nech si napise kto chce, co che. Nepotrebujem krmit trollov. (Nemyslim konkretne vas)

533
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 16:27:55 »
Citace
pokud na sebe odstavce navazují

Ano, navazuji, proto byly v puvodnim prispevku uvedeny za sebou.


To je podmínka nutná, ale ne postačující.

Citace
Nebo to máme chápat tak, že if s returnem je "nedomyšlené předčasné opuštění funkce"?

Ne, nemate. Vsimnete si, ze v dane vete bylo pouzito modalni sloveso "muze". Z toho plyne, ze ne kazde pouziti if s returnem je nedomyslene, ale pokud je, ma to opravdu neprijemne dusledky.

Výborně, takže blbost je jen ta první část, jak jsem to bral původně.

Podívejme se na to:

(...) k hezkemu strukturovanemu programovani return v if-u nepatri, a pokud mam nekde if, melo byt mit i else (...)

a

(...)

Bylo by vhodne naucit se vnimat veci v kontextu a ne jen jednotlive drobne useky. Vzdyt pisu:

Citace
hned ve druhem prispevku (a byl to vlastne duvod dotazu jako takoveho) jde videt, k cemu muze nedomyslene predcasne opusteni funkce returnem vest, tj. resource leaky, nedefinovane stavy, visici zamky...

Takže obecné (mylné) tvrzení obhajujeme "modálním slovesem může", respektive nějakým hypotetickým "nedomyšleným řešením", které může, ale nemusí nastat. (proto jsem se tak "hloupě ptal", zdali na sebe navazují, protože takto vedle sebe je ta blbost, co jsi napsal, vidět jasně)
Tak tu poznámku s kontextem si příště nechej od cesty a napiš to líp.

--------------------------------------
A z vlastni zkusenosti muzu rict, ze zacinajici programatori opravdu maji problemy dusledky takoveho "vyskoceni" domyslet. Proto je lepsi, kdyz se takovym konstrukcim budou vyhybat, obzvlast, pokud maji problem zvladnout jazyk jako takovy.

Tento přístup chápu, ale nepovažuji jej za správný. Zvlášť pokud člověk začíná s programováním, tak takto černobílé vyhýbání se relativně základním konceptům vede ke špatným návykům. Naopak by bylo fajn si s takovým člověkem "sednout" a vysvětlit mu v čem by mohl být problém. Tento přístup má i tu výhodu, že se začne na svůj kód dívat zase trošku jinak. Ale ne vždycky je to možné :)


@Kit - tady plně souhlasím :)

534
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 13:44:52 »
Citace
Ale vždyť toto je blbost. Proč by nemohl mít return v ifu?

Bylo by vhodne naucit se vnimat veci v kontextu a ne jen jednotlive drobne useky. Vzdyt pisu:

Citace
hned ve druhem prispevku (a byl to vlastne duvod dotazu jako takoveho) jde videt, k cemu muze nedomyslene predcasne opusteni funkce returnem vest, tj. resource leaky, nedefinovane stavy, visici zamky...

Úplně nejlepší by bylo být schopen psát a strukturovat text tak, aby dával ten smysl, co chci. Nebo to máme chápat tak (pokud na sebe odstavce navazují), že if s returnem je "nedomyšlené předčasné opuštění funkce"?

535
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 10:22:02 »
Nevím jak obecně u funkcionálních, ale v Haskellu mám radši stráže a vzory než if/else :)

536
Vývoj / Re:Jak můžu opustit funkci
« kdy: 15. 07. 2018, 09:51:46 »
Ta diskuze je dojemna. Dotazujici se, evidentne zacatecnik, prijde s problemem se zakladnim konstruktem. A misto toho, aby se mu poradilo na urovni jeho schopnosti, tj. ze k hezkemu strukturovanemu programovani return v if-u nepatri, a pokud mam nekde if, melo byt mit i else (...)

Ale vždyť toto je blbost. Proč by nemohl mít return v ifu? Zvlášť když je řeč o C?

Typicky

Kód: [Vybrat]
if (argc < 2) {
    return 1;
}

je pro začátečníka naprosto v pořádku, naopak je to dobrý návyk. (Samozřejmě lze použít err() a jiné, ale mluvíme o příkladu pro začátečníka).
Nějaká nutnost else je taky blbost.

537
Vývoj / Re:Jak můžu opustit funkci
« kdy: 13. 07. 2018, 10:12:54 »
(...)
A break samostatně, bez switch, case, snad ani použít nelze. Resp. možná ano, nevím to, ale asi by mě nikdy nenapadlo, takovou věc udělat.

Ještě for, while..., kde je také velice užitečný. :)

538
O serveru Root.cz / Re:"Ježíš tě má rád"???
« kdy: 08. 07. 2018, 08:26:20 »
1a) Ach jo. Když je někdo agnostik, tak to neznamená, že věří/nevěří, ale jen že má jakýsi přístup. (btw nejedná se o původní definici, ale o definici)

1b) To by se diskutovat dalo, jen by hodně záleželo na volbě náboženství. K článku - opět několik problémů a) míchá se do toho X náboženství, z nich některé se třeba chovají jinak v rámci svých komunit, jinak k "cizím" b) zajímalo by mě, kolik bylo protestantů a kolik římskokatolíků c) jde o USA, kde se k náboženstvím přistupuje přeci jen jinak

2) Opravdu náboženství ustoupilo? Zrovna tady na Západě se spousta z historie interpretuje dost šíleně... Jinak řečeno často nešlo o tvrzení, ale o to, co se od něj odvozovalo.
Ale jistě, všude se najdou ztracené ovečky, přesvědčil se o tom třeba i Hus (když jsme ho teď měli).

3) To je hezké, že jsou studie, ale jak jsou zpracovány? Hlavně "..are primarily ateists..." mi přijde jen jako hodně silné tvrzení a dovolím si tvrdit, že je mylné. Už jen proto, co to slovo znamená.


Svým způsobem ano, nerad se smiřuji s polopravdami.

539
To neznamená, že to jednou dělat nebudeš. Ale pokud ti jde o pět minut kompilace, tak nemá smysl kupovat věci jako Optane a další. ;)

Ty jsi borec. Skoro jako já, ale ne tolik. Smysl to má, pokud kompiluješ 5 minut 15x za den. A teď pokračuj a říkej mi, co má pro mě smysl, strašně se mi to líbí. Zatím si dojdu pro popcorn  8)

Tak pokud to má smysl a jsi si svým dojmem tak jistý, proč se na to ptáš?  :P

540
O serveru Root.cz / Re:"Ježíš tě má rád"???
« kdy: 07. 07. 2018, 23:50:33 »
Jim Jefferies - Společnost jako vlak (Society as a train)

https://youtu.be/cGktbsUQRQA

Líbilo se mi jak tam říká Ve jménu ničeho!

Pěkný, ale má to pár chybek:

1) Problém je, že ateistů jako takových zaprvé moc není (ten pojem se dnes chápe dost jinak, než je jeho význam), zadruhé úplně stejně by druhá strana mohla namítnout, že "ateismus" může za světové války a další. Ten argument nekulhá na obě nohy, on žádné nemá. :) Nebo hůř, dalo by se diskutovat, zda právě domnělý ateismus nevede k ideologiím, k popírání přirozenosti člověka atd., tedy toho, co nám dnes dělá problémy.

2) Pořád je tu zakořeněno něco jako, že věda je v opozici s vírou, což je opravdu paradoxní, především v rámci naší Západní Evropy.

3) Vědci jsou většinou ateisti? Zajímaly by mě nějaké statistiky.

A tak by se dalo pokračovat... ale jak jsem již psal, nemyslím si, že zde je vhodné místo pro tento typ diskuse. :)


To je pravá podstata. Ohlupovat ovečky a bojovat proti odpůrcům, kteří nejdou s námi.


A to ti řekl kdo? To o své historii víme opravdu tak málo?

Stran: 1 ... 34 35 [36] 37 38 ... 54