31
Vývoj / Re:Dědičnost dnes
« kdy: 02. 02. 2017, 23:00:45 »A pokud jde o ten odkazovaný článek, tak je to opravdu tak napůl esoterická záležitost, protože se snaží nás přesvědčit, že chceme-li posuzovat časovou složitost co nejobecněji, tak musíme předpokládat sice konečná, ale libovolně rozsáhlá data, na nichž ukazuje, že je obecně nelze obsloužit v konstantním čase z ryze fyzikálních důvodů (jen jsem čekal, kdy tam začne vytahovat holografický princip z teorie strun).
To je sice roztomilé, ale jen jako taková kratochvilná teoretická onanie. Protože v praxi při porovnávání algoritmů předpokládám nikoliv "sice konečné, avšak libovolně rozsáhlé" paměti, ale jeden a ten samý konkrétní stroj.
Ono se ukazuje, že navrhovat algoritmy, počítat jejich složitost a vzájemně porovnávat jejich efektivitu je paradoxně jednodušší, když předpokládáme sice konečná, ale libovolně velká data. Dělá se to tak desítky let a i když o tom možná nevíte, výsledky takových teoretických úvah denně používáte. A ten odkazovaný článek vlastně není nic překvapivého ani esoterického, je to spíš téměř triviální pozorování.
Takže pokud by mi podobný rozumbrada začal opravovat mé odhady řka, že přístup k paměti má přece složitost O(√n), pousmál bych se, poplácal bych ho po tvářičce a popřáv mu mnoho radosti při onaniích nad řešením otázek, kolik andělů se vejde na povrch horizontu událostí černé díry, bych ho kopnul do...
Hodně vtipné. Zvlášť když si uvědomíte, že při taktovacích frekvencích v řádu GHz a omezení rychlostí světla se omezení rychlosti přístupu k paměti (nebo obecně latence libovolné komunikace) začnou projevovat na vzdálenostech několika centimetrů.
Trochu odbočím - zajímalo by mě, jestli je někde jednoduše vysvětlené, jak jsou všechny tyhle objektové a funkcionální vychytávky Swiftu implementované?