Jsem silně poznamenaný funkcionálním programováním a způsob ošetřování chyb v Go se mi extrémně nelíbí.
V žádném jazyce, co má rozumné součtové typy a pattern matching, jsem neviděl že by někdo vracel chyby tuplem. Ono to nedává smysl. Obvyke nechci vrátit hodnotu A chybu, ale hodnotu NEBO chybu. Go mě nutí aby každý typ měl nějakou defaultní/prázdnou/nesmyslnou hodnotu, kterou můžu vrátit v případě chyby, i když jinak není k ničemu a ani nedává smysl.
To je otázka zvyku a nedostatku představivosti.
Haskelliho Maybe/Either taky není jen hodnota. Vždycky vracíš dvojici. V Go to prostě udělali bez typu. Může se ti to nelíbit, může se mi to nelíbit, ale principielně je to prašť jak uhoď - v porovnání s výjimkama.
Zrovna Maybe/Either je implementačně to, co v Go interface{}, ale ono jde spíš o koncept. Ono ale není tak snadné rozumně spojit podtypový polymorfismus a generické typové operátory, mám čerstvou zkušenost s implementací a je to peklo, ten typový systém vždycky někde kulhá, není třeba sound, potřebuje podporu v runtimu apod. Po takové zkušenosti se člověk nediví, že v Javě je typový systém tak tupý, ono totiž každé jeho rozšíření přináší bolehlav.
Java je stará věc. Člověk to chápe.
Jenže pak vyšel C# a člověk se zděšením zjišťuje, že je to úplně stejná záležitost. V ničem není vidět ty desítky let zkušeností a vývoje.
A pak narazíš na kód a zjišťuješ, že i to C# je pro mnoho programátorů složité...
Jak velká práce by bylo v jazyce vyškrtnout null? A kolik zisku by to přineslo. Ale on ten problém je v tom vyškrtnout ho z hlavy programátorů.
Co třeba Kotlin dokonce Scala? Ty se s těmi typy IMHO poprali velice slušně.
- Výjimky byli vymyšleny, aby se dalo psát toto: if (((countOfFilesIn(dir1) + countOfFilesIn(dir2)) / countOfFilesIn(dir3)) == 0) { ... }
. Což bez nich prostě nejde.
Ve funkcionálních jazycích to jde
Akorát dá o dost víc práce pochopit, jak kód v takovém případě funguje.
Právě.
Ale stojí to za to ![Úsměv :)](http://forum.root.cz/Smileys/default/smiley.gif)
Proč myslíš?
Domníváš se, že Efekty nejsou lepší řešení takovýchto záležitostí? Nic nebrání, aby to bylo součástí signatury. Jen ta informace teče jinudy - cukr. Řekl bych.