Hlavní navigace

Názor k článku Go: minimalistický a překvapivě výkonný programovací jazyk od Michal Mühlpachr - Proboha jak mohlo být dopuštěno, že fungují embedded...

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

    Michal Mühlpachr

    Proboha jak mohlo být dopuštěno, že fungují embedded systémy (zdravotnictví, doprava, energetika, ... - většina PLC a to i řada speciálních "žlutých" emergency stop systémů), na kterých závisí životy a jsou implementované v ANSI C bez výjimek ?
    Jak to, že jaderné elektrárny jsou řízeny Fortan kódem bez výjimek ?
    Jak to, že vojenské zbraňové systémy jsou řízeny kódem bez výjimek ?
    Proč toho je tolik bez "rozumného ošetření" ?

    Jaký je zásadní rozdíl mezi kódem, který rozhoduje co s chybou (zpracovat, zkusit znovu, počkat, poslat výše, ...) s pomocí paradigma/syntaxe:
    a) if/switch ...
    b) try/catch ...
    ?

    Zásadní mi přijde u try/catch proti if/switch možnost nepovšimnutého "probublání" chyb spodnějších slupek (knihoven) API do hornějších vrstev aniž hornější slupky vrstvených API mají tušení (resp. programátoři, kteří je používají), že se něco takového dole může stát a proto je to často "nahoře" chybně ošetřeno. Tedy pokud není v každé úrovni slupky postupováno s vědomým o možných stavech/chybách, čemuž přesně try/catch napomáhá.

    Malý příklad, kdysi jsem potkal Python knihovnu pro čtení GPS. A stalo se, že implementátor navazujícího API si řekl, když čtení GPS vrací výjimku, stačí GPS reinicializovat a "ono se to spraví", to bude problém komunikace. "se to" má často zásadní roli u úvah tohoto typu ;-) Inu jakmile se GPS ocitla na druhé polokouli, tak toto "ošetření výjimky" se zcela míjelo účinkem, protože problém byl v chybném zpracování záporných WGS souřadnic.