Názor ke článku Bezpečné programování v C++ III od Inkvizitor - [5] Já nevím, jestli si teď rozumíme, ale...

  • 19. 4. 2009 7:05

    Inkvizitor (neregistrovaný)

    [5] Já nevím, jestli si teď rozumíme, ale když zkolabuje nějaký pythonovský skript, znamená to, že virtuální stroj detekuje chybu a vyhodí výjimku, např. KeyError, když se snaží skript přistupovat k prvku slovníku pomocí neexistujícího klíče. Když ten skript výjimku neodchytí, klasický handler vypíše chybovou hlášku a sekvenci volání ze zásobníku a interpret skončí přes exit. Z hlediska skriptu je to průšvih, ale ta nejnižší vrstva je v pohodě. Když ale napíšu rozšiřujcí modul v C, interpret nad ním nemá takovou kontrolu jako nad bytecode pythonovského skriptu, protože ten rozšiřující modul si může v zásadě řádit podle libosti jako klasický céčkový program.

    Co se týče těch izolovaných funkcí, existují určité mechanismy, jak dodržet referenční integritu a další principy, ikdyž jsou občas docela krkolomné. Například jazyk Clean má funkci Start (jakási obdoba main v C) a pokud chceme, aby jazyk byl interaktivní, musíme mu vyplnit volitelný parametr typu World, se kterým ta funkce pak pracuje při výpočtech.