Názor ke článku Nerozumím... od Miloslav Ponkrác - V C++ se dá dynamické zpracování napsat taky....

  • 23. 11. 2011 15:41

    Miloslav Ponkrác (neregistrovaný)

    V C++ se dá dynamické zpracování napsat taky. Jen to pro něho není přirozené. V runtime vše lítá jako pointery, takže vlastně případné dynamický dispatching zprávy dopadne tak, že se napíše poloviční interpretr dynamického jazyka.

    Což není nic složitého. Ve všech dynamických jazycích je zpracování zprávy hašovací tabulka stringů, která převede název zprávy na pointer metody, která jí zpracuje. Pokud se nenajde daný řetězec, následuje dynamický dispatching.


    Jeden rozdíl ale je. C++ nezná typy v programu. Zná pouze tytpy v modulu, proto použití dynamic_cast() a podobně je celkem k ničemu, pokud nevíte, kde můžete narazit. Kromě toho je dynamic_cast() velmi pomalé. Tento operátor hledá pomocí strcmp() funkce řetězec a to je velmi pomalá akce, která nemůže ani pomýšlet na rychlost danoou hašovacími tabulkami.

    Miloslav Ponkrác