Hlavní navigace

Názor k článku Go: minimalistický a překvapivě výkonný programovací jazyk od Miloslav Ponkrác - Jenomže výjimkou jsou silver bullets. Je řada stavů,...

  • Článek je starý, nové názory již nelze přidávat.
  • 20. 11. 2018 21:11

    Miloslav Ponkrác (neregistrovaný)

    Jenomže výjimkou jsou silver bullets. Je řada stavů, které bez výjimek prostě rozumně neošetříte. Proto výjimky existují už na úrovni procesoru a strojového kódu, kde se jim říká přerušení.

    Jazyky na hraní, jako je Go, to nikdy nezjistí. Ale jazyky, které mají zajistit nějakou spolehlivost se bez výjimek neobejdou.

    Zdrojem chyb může být miliarda věcí od hardware, operačního systému, momentálních potíží v alokaci zdrojů, různých existujících/ne­existujících práv kdekoli - a miliarda dalších věcí. I při otevírání souboru může docházet pamět, docházet místo na zásobníku, dojít k hardwarové chybě disku, mít problémy s právy, atd.

    Za 30 let programátorské praxe jsem ještě nikdy neviděl dobře ošetřený kód bez výjimek ani při takové kravině, jako je otevírání souboru. Kód, který by skutečně kvalitně ošetřoval všechny možnosti. Nehledě k tomu, že různé chyby by se měly ošetřovat často na různých místech - ne vše může rozumně ošestřit ten, kdo volá fopen().

    Většinou osoby zastávající nepoužívání výjimek končí tak, že většina lidí prostě chyby ignoruje. Počítá s tím, že nenastanou. Nebo je ošetřují jen někde. K nahlédnutí v tisících open source zdrojových kódech.

    Vzpomínám si na to, jak programovací jazyk Ada urychleně přidával do nové normy výjimky. Zjistilo se, že ty sw prostě padají při řadě situací, a programátor bez výjimek s tím nic neudělá. Program při řadě chyb mohl jen udělat terminate(), a poslat do šrotu pár miliónů či miliard dolarů v družici kdesi mimo zemi. Najednou byly všechny námitky proti výjimkám bezpředmětné. A najednou šly ošetřit všechny stavy, a něco udělat.