Proč ten hype okolo Go?

Bacsa

Re:Proč ten hype okolo Go?
« Odpověď #165 kdy: 30. 08. 2018, 17:20:25 »
Citace
Výjimky zavádějí speciální stav - chybový. Ale co to je? Chci otevřít soubor, který mezi tím někdo smazal - je to chyba, nebo jiný možný stav? Uživatel zadá ve výrazu dělení nulou - výjimka, nebo normální možný stav? Někde v nějakém cyklu se mi index dostane mimo meze - výjimka nebo možný stav? V tomto případě asi přímo chyba v programu.. K čemu ale výjimky mají sloužit? K ladění, nebo k reakci na nějaké stavy, které z nějakého důvodu chci ošetřovat jinak než jiné stavy?

To je zase demagogie! Výjimky nezavádějí žádný další stav. Výjimky jsou pouze jedním z dalších řídících příkazů, které umožňují přenést vykonávání kódu na jiné místo, jako jsou podmínkové příkazy, cykly, skoky, volání podprogramu.

Považujete podmínkový příkaz (if) za definici nového chybového stavu programu? Měl byste při vaší demagogii. Protože dělá to samé, co výjimka. Přeskakuje vykonávání části kódu. Výjimka to jen dokáže v kontextu mezi podprogramy, nic více a nic méně.

Citace
Chápu určité výhody výjimek - zvláště při ladění, ale jinak je považuji za syntaktický balast. V případě ladění je to ale jen takový drahý assert, v případě normální reakce je to zvrácené - některé stavy ošetřovat klasicky, jiné úplně jinak - a jako "bonus" dochází ke ztrátě komtextu. Ta koncepce výjimek se mi prostě nelíbí.
To raději přestaňte programovat úplně. Například kontext ztrácíte kdykoli vyskočíte z podprogramu a kdykoli vyskočíte z nějakého bloku programu, který ukončuje platnost lokálních proměnných v něm definovaných.

Pokud by vám vadila řízená ztráta kontextu, pak jediné, co vám pomůže je: Všechny proměnné globální, žádné podprogramy, atd. atd. atd.
No tys tu chyběl. Jako vážně musíš tu diskuzi kazit svýma blábolama?


era

Re:Proč ten hype okolo Go?
« Odpověď #166 kdy: 30. 08. 2018, 17:23:16 »
Ještě tam mám překlep:

Usage error … Tyto výjimky se neošetřují (pouze například na nejvyšší úrovni) a slouží k tomu aby se objevily a OPRAVILY chyby v kódu projevující se až za běhu programu.

kiki

Re:Proč ten hype okolo Go?
« Odpověď #167 kdy: 30. 08. 2018, 17:27:52 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat. Každý vůl, kromě vás co?
Program je dobře navržen, pokud s ním nemá uživatel problém interagovat. Všechno co může udělat špatně a já s tím nepočítám je moje blbost. Programátoři orientovaní na uživatele jsou k nezaplacení -- takových jako vy je ale bohužel většina. Plná huba keců na fórech a nic víc pane Géomètre.

Bacsa

Re:Proč ten hype okolo Go?
« Odpověď #168 kdy: 30. 08. 2018, 17:30:14 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat.
Na to nešlo nereagovat  :)

kiki

Re:Proč ten hype okolo Go?
« Odpověď #169 kdy: 30. 08. 2018, 17:36:45 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat.
Na to nešlo nereagovat  :)
Promiň, taky jsem se neudržel. Ale buď máš teda nadhled a pak kohokoliv i Ponkráce odargumentuj, nebo se k němu prostě nevyjadřuj. Jsem trochu alergickej na tyhle týpky co si bastlej Haskell, něco dělaj v Idris, v Cogu nebo Agdě nebo Mercury (hej chlapče znáš Mercury?) a dělaj chytráky na fórů -- jejich přínos většinou mimo/i na fórum = nula a plevelej to víc než ty na který si otvíraj hubu pane Geometre.


kiki

Re:Proč ten hype okolo Go?
« Odpověď #170 kdy: 30. 08. 2018, 17:38:24 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat.
Na to nešlo nereagovat  :)
+ vsadím se že jsi pan Geometre, ten styl se nedá fakt přehlídnout a vsadil bych se že jsi zboj, který měl přesně tenhle druh chování.

Kit

Re:Proč ten hype okolo Go?
« Odpověď #171 kdy: 30. 08. 2018, 17:44:34 »
Citace
Ta koncepce výjimek se mi prostě nelíbí.

To raději přestaňte programovat úplně. Například kontext ztrácíte kdykoli vyskočíte z podprogramu a kdykoli vyskočíte z nějakého bloku programu, který ukončuje platnost lokálních proměnných v něm definovaných.

Nemusí přestat programovat. Stačí, když se bude držet svého Assembleru a C, kde může odvést hezký kus práce.

kiki

Re:Proč ten hype okolo Go?
« Odpověď #172 kdy: 30. 08. 2018, 17:47:26 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat.
Na to nešlo nereagovat  :)
Já sám nedělám zatím nic, čím bych se mohl nebo chtěl pochlubit, ale kdyby požádal vás, abyste něco ukázal, tak byste neukázal nejen že nic, ale  ještě byste použil něco jako "nemám potřebu...". Žádný paper, žádný výzkum, žádný odkaz na projekt do kterého přispíváte. Jen kecy na fóru. Tak když tak umíte ten Haskell máte nějaký balík na Hackage?

Kit

Re:Proč ten hype okolo Go?
« Odpověď #173 kdy: 30. 08. 2018, 17:48:03 »
Je více druhů výjimek (pomáhám si z knížky Framework Design Guidelines): ...

V principu se výjimky dělí na asynchronní a synchronní. Mnozí programátoři se těch synchronních štítí a pracují pouze s asynchronními.

Kit

Re:Proč ten hype okolo Go?
« Odpověď #174 kdy: 30. 08. 2018, 17:51:07 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat. Každý vůl, kromě vás co?
Program je dobře navržen, pokud s ním nemá uživatel problém interagovat. Všechno co může udělat špatně a já s tím nepočítám je moje blbost. Programátoři orientovaní na uživatele jsou k nezaplacení -- takových jako vy je ale bohužel většina. Plná huba keců na fórech a nic víc pane Géomètre.

Smajlík by měl napovědět, že to bylo míněno jako vtip.

Bacsa

Re:Proč ten hype okolo Go?
« Odpověď #175 kdy: 30. 08. 2018, 17:52:35 »
Tak když tak umíte ten Haskell máte nějaký balík na Hackage?
Já nejsem haskellista a nikdy jsem netvrdil, že Haskell umím (na nějaké pokročilé úrovni kromě základního přehledu). Přes Haskell jsou tu jiní.

kiki

Re:Proč ten hype okolo Go?
« Odpověď #176 kdy: 30. 08. 2018, 17:56:27 »
Tak když tak umíte ten Haskell máte nějaký balík na Hackage?
Já nejsem haskellista a nikdy jsem netvrdil, že Haskell umím (na nějaké pokročilé úrovni kromě základního přehledu). Přes Haskell jsou tu jiní.
A co tedy jsi? Matematik taky sotva ... Bohužel takový individua radši lepší ignorovat. Na jednu stranu se vyjadřuješ fundovaně k ostatním ale když se tě někdo zeptá jakou máš kvalifikaci -- mlžíš. Hodně štěstí pane Geometre.

kiki

Re:Proč ten hype okolo Go?
« Odpověď #177 kdy: 30. 08. 2018, 17:59:34 »
Předpokládám, že když je nějaký uživatel vůl, tak je to výjimka.
;D  Mně to přijde spíš jako naprosto běžná situace.
S váma bude radost pracovat. Každý vůl, kromě vás co?
Program je dobře navržen, pokud s ním nemá uživatel problém interagovat. Všechno co může udělat špatně a já s tím nepočítám je moje blbost. Programátoři orientovaní na uživatele jsou k nezaplacení -- takových jako vy je ale bohužel většina. Plná huba keců na fórech a nic víc pane Géomètre.
Smajlík by měl napovědět, že to bylo míněno jako vtip.
Smajlík napověděl, že to je vůl. ;)

Bacsa

Re:Proč ten hype okolo Go?
« Odpověď #178 kdy: 30. 08. 2018, 18:09:52 »
když se tě někdo zeptá jakou máš kvalifikaci
Zatím se nikdo neptal. A už přestaň otravovat, takoví kriplové jsou fakt nejlepší, bezdůvodně se do někoho navážet. Najdi si radší babu (nebo chlapa) a dělej něco užitečného.

Kiwi

Re:Proč ten hype okolo Go?
« Odpověď #179 kdy: 30. 08. 2018, 18:16:06 »
Citace
Výjimky zavádějí speciální stav - chybový. Ale co to je? Chci otevřít soubor, který mezi tím někdo smazal - je to chyba, nebo jiný možný stav? Uživatel zadá ve výrazu dělení nulou - výjimka, nebo normální možný stav? Někde v nějakém cyklu se mi index dostane mimo meze - výjimka nebo možný stav? V tomto případě asi přímo chyba v programu.. K čemu ale výjimky mají sloužit? K ladění, nebo k reakci na nějaké stavy, které z nějakého důvodu chci ošetřovat jinak než jiné stavy?

To je zase demagogie! Výjimky nezavádějí žádný další stav. Výjimky jsou pouze jedním z dalších řídících příkazů, které umožňují přenést vykonávání kódu na jiné místo, jako jsou podmínkové příkazy, cykly, skoky, volání podprogramu.

Považujete podmínkový příkaz (if) za definici nového chybového stavu programu? Měl byste při vaší demagogii. Protože dělá to samé, co výjimka. Přeskakuje vykonávání části kódu. Výjimka to jen dokáže v kontextu mezi podprogramy, nic více a nic méně.

Citace
Chápu určité výhody výjimek - zvláště při ladění, ale jinak je považuji za syntaktický balast. V případě ladění je to ale jen takový drahý assert, v případě normální reakce je to zvrácené - některé stavy ošetřovat klasicky, jiné úplně jinak - a jako "bonus" dochází ke ztrátě komtextu. Ta koncepce výjimek se mi prostě nelíbí.

To raději přestaňte programovat úplně. Například kontext ztrácíte kdykoli vyskočíte z podprogramu a kdykoli vyskočíte z nějakého bloku programu, který ukončuje platnost lokálních proměnných v něm definovaných.

Pokud by vám vadila řízená ztráta kontextu, pak jediné, co vám pomůže je: Všechny proměnné globální, žádné podprogramy, atd. atd. atd.
Demagog jste vy, což je ale o vás všeobecně známo už delší dobu. Podmínka mi kontext nenaruší - chybu zachytím a vypořádám tam, kde k ní došlo. Try-catch vyjde buď nastejno jakožto ukecanější varianta ifu, nebo mě hodí někam na jiné místo, mimo původní lexikální kontext, a to i v rámci jedné funkce! O šíření nezachycené výjimky vertikálně už nemluvím vůbec. Kontext, v němž chybový stav nastal, je pro jeho efektivní řešení dost důležitý. Naopak - funkce a bloky programu představují faktorizační celky, jejichž kontexty úmyslně oddělujeme. Ale předpokládám, že tady svou omezenost jen předstíráte.

Výjimky slouží k vypořádávání chybových stavů. Jistě by šly použít i jinak, asi bych mohl přes ně předávat návratové hodnoty, iterovat seznamy (někteří matláci to tak skutečně dělají! Nepatříte náhodou mezi ně?) a kdo ví, co ještě. Ale k tomu určeny nejsou. Tedy ze stavu, který se před nimi řešil jako kterýkoli jiný, udělaly jakýsi privilegovaný stav, chybový, který se ošetřuje odlišně, dokonce nezávisle na kontextu. Zavádějí úplně novou, nezávislou mašinérii ve struktuře programu. Neříkám, že je to celé špatně. Ale říkám, že v té adoraci výjimek bych hodně brzdil.

Pokud jde o výjimky procesoru, tak ty přece slouží k něčemu úplně jinému! Jde o stavy, kdy není možné pokračovat v provádění hlavního programu. Může jít o chyby - třeba dělení nulou, neplatný opkód, nedostatek práv apod., ale taky může jít o jiný typ překážky - např. výpadek stránky, zarážka apod., nebo jde o něco úplně jiného - třeba syscall. Z hlediska hlavního programu jsou výjimky procesoru transparentní - buď se po obsloužení nějak, někdy pokračuje dál, nebo byl program ukončen v rámci obsluhy výjimky. Pokud jde o tu první skupinu výjimek, tak tam jde opravdu o výjimečné stavy, protože jejich výskyt je způsoben chybou hlavního programu. Je to nouzové, výjimečné řešení, protože zvyšuje předvídatelnost chodu samotného procesoru, nikoli programu. Kdyby byl program bezchybný, tak by k nim vůbec nedošlo. Je to řešení ultima ratio, záchranná plachta, do níž se skočí, když už žádné schodiště nejde použít. Implementací do programovacích jazyků se z těchto "výjimek" udělalo pravidlo - zábradlí je přežitek, když někdo uklouzne na schodech, je dole plachta. Protože zábradlí přece narušuje elegantní estetiku schodiště, není kvůli němu ani pořádně vidět a přitom slouží "jenom" jako ochrana před nehodou.

V těch článcích byly konkrétní příklady, podle Kita špatné. Tak postněte konkrétní dobrý příklad, jak se to má používat.