Hledám knihy: Myslíme v C++ a v Javě

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #90 kdy: 14. 09. 2019, 01:41:15 »
Taky mne napadlo, že vhodně poskládaný funkce vracející Maybe/Either s nějakou omáčkou kolem by se mohli celkem podobat fungování výjimek. Compile-time.
Ano, Maybe je isomorfní s výjimkami.
To je dost zajímavé tvrzení na to, jak je tu pojem "výjimky" dost abstraktní.
Idea výjimek je, že odchytáváš určitou skupinu konkrétních chybových stavů v konkrétním stromu výrazů. Víc toho není. IMHO zbytek je implementační detail.
Výjimky jsou hlavně konkrétní implementace, prostě takový elegantnější long jump z céčka. Maybe je instanciace určité abstraktní konstrukce (“návrhového vzoru”), kterou lze implementovat třeba právě výjimkami. Ve skutečnosti třeba řez v logickém programování je taky jen instance Maybe a vskutku se implementuje výjimkami (jen tedy poněkud složitějšími).

A abych se vrátil z odbočky, Haskellu chybí vzhledem k “výjimkám” transparentnost, v blbovzdorném funkcionálním jazyce by měl překladač podporovat automatický lifting na Kleisliho kompozici, když nějaká normální funkce dostane instanci Maybe. Možná právě tohle lidi mate, jakmile někde zavedu v Haskellu Maybe, kontaminuju tím celý kód s tímto místem propojený. Přitom je pro překladač triviální přidat před onu funkci η, aby do sebe vše typově zapadalo.


Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #91 kdy: 14. 09. 2019, 02:13:17 »
C++ patří mezi nejtěžší programovací jazyky, s komplikovaností knihy musíš počítat. Pokud jsi začátečníkem, začni raději s Javou - ta je jednodušší a získáš lepší návyky.
Java je do začátků strašně ukecaná... a taky mám dojem, že z ní pak mají občas lidé pocit, že se všechno musí řešit přes výjimky, což mi jako lepší návyk nepřijde.
Výjimky jsou výrazně lepší, než předávání chybových stavů. Bez mechaniky výjimek se objektově moc programovat nedá.
OO nějak esenciálně závisí na výjimkách? Jak jejich absence omezuje posílání zpráv?

Bez výjimek vlastně nemáš odezvu, co se s tou zprávou stalo - zda byla přijata či odmítnuta. Můžeš programovat i bez nich, ale praktické to není.
Nějak nevidím důvod, proč bych k tomu potřeboval výjimku...

Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #92 kdy: 14. 09. 2019, 04:23:05 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
To je ještě sranda. Ale jak to uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem a nesmíš vyhazovat výjimky?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #93 kdy: 14. 09. 2019, 07:47:41 »
C++ patří mezi nejtěžší programovací jazyky, s komplikovaností knihy musíš počítat. Pokud jsi začátečníkem, začni raději s Javou - ta je jednodušší a získáš lepší návyky.
Java je do začátků strašně ukecaná... a taky mám dojem, že z ní pak mají občas lidé pocit, že se všechno musí řešit přes výjimky, což mi jako lepší návyk nepřijde.
Výjimky jsou výrazně lepší, než předávání chybových stavů. Bez mechaniky výjimek se objektově moc programovat nedá.
OO nějak esenciálně závisí na výjimkách? Jak jejich absence omezuje posílání zpráv?
Bez výjimek vlastně nemáš odezvu, co se s tou zprávou stalo - zda byla přijata či odmítnuta. Můžeš programovat i bez nich, ale praktické to není.
Nějak nevidím důvod, proč bych k tomu potřeboval výjimku...
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #94 kdy: 14. 09. 2019, 12:16:03 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.

Už nejsme ve 20. století. Tyto archaismy do moderního programování nepatří.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #95 kdy: 14. 09. 2019, 12:19:35 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.
Už nejsme ve 20. století. Tyto archaismy do moderního programování nepatří.
Co sis šlehnul?

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #96 kdy: 14. 09. 2019, 12:21:12 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
To je ještě sranda. Ale jak to uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem a nesmíš vyhazovat výjimky?

V parametrech předám vhodný objekt.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #97 kdy: 14. 09. 2019, 12:22:53 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.
Už nejsme ve 20. století. Tyto archaismy do moderního programování nepatří.
Co sis šlehnul?

Snad ti nedošly argumenty, žes vytáhl podpásovku?

Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #98 kdy: 14. 09. 2019, 14:05:15 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.
Už nejsme ve 20. století. Tyto archaismy do moderního programování nepatří.
Co sis šlehnul?

Snad ti nedošly argumenty, žes vytáhl podpásovku?
Nic proti, ale označit něco jako archaismus taky není argument.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #99 kdy: 14. 09. 2019, 14:44:19 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
Jenže ty ho můžeš vrátit a parametry lze samozřejmě předávat odkazem.
Už nejsme ve 20. století. Tyto archaismy do moderního programování nepatří.
Co sis šlehnul?
Snad ti nedošly argumenty, žes vytáhl podpásovku?
Nic proti, ale označit něco jako archaismus taky není argument.

Argument? Co třeba ten, že je to v rozporu s Clean Code?

V některých moderních jazycích to ani nejde. Někdo snad výjimky považuje za božstvo, kterého není radno se dotýkat, ale je to prostě sekundární informační kanál pro přenos chybových stavů, aby ten hlavní mohl být čistě na data.

A neplatí, že jsou výjimky drahé. Jsou levnější než ty okliky, které kvůli nim někteří vývojáři dělají.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #100 kdy: 14. 09. 2019, 14:51:14 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
To je ještě sranda. Ale jak to uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem a nesmíš vyhazovat výjimky?

V parametrech předám vhodný objekt.

Takže side-effect. To jsme si teda pomohli.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #101 kdy: 14. 09. 2019, 14:53:02 »
Argument? Co třeba ten, že je to v rozporu s Clean Code?
...
Někdo snad výjimky považuje za božstvo, ...
Zvýraznil jsem související.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #102 kdy: 14. 09. 2019, 15:01:53 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
To je ještě sranda. Ale jak to uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem a nesmíš vyhazovat výjimky?
V parametrech předám vhodný objekt.
Takže side-effect. To jsme si teda pomohli.

O tom side-effectu vím a proto používám výjimky. Tak se předveď, jak bys to vyřešil.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #103 kdy: 14. 09. 2019, 15:06:27 »
Argument? Co třeba ten, že je to v rozporu s Clean Code?
...
Někdo snad výjimky považuje za božstvo, ...
Zvýraznil jsem související.

Jak to spolu souvisí? Clean Code je návodem, jak psát kvalitní kód. Je v něm snad něco špatně?

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Hledám knihy: Myslíme v C++ a v Javě
« Odpověď #104 kdy: 14. 09. 2019, 15:16:07 »
Jak to tedy uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem?
To je ještě sranda. Ale jak to uděláš, když ten chybový stav nesmíš předat returnem ani parametry nesmíš předávat odkazem a nesmíš vyhazovat výjimky?
V parametrech předám vhodný objekt.
Takže side-effect. To jsme si teda pomohli.

O tom side-effectu vím a proto používám výjimky. Tak se předveď, jak bys to vyřešil.
Jednoduše. Já bych v prvé řadě nevytvářel umělá omezení.

Nemám v zásadě nic proti výjimkám, ale návratová hodnota je vždycky značka ideál. Zvláště v typovaných jazycích.