[python] OT: Cache -- rozuzlení? Hash -- další poznámky (bylo překlad cache, hash)

Petr Přikryl prikryl na atlas.cz
Pátek Květen 7 18:27:02 CEST 2010


Vladimir Macek
>
>Petr Přikryl wrote:
>> hash -- ve smyslu speciální hodnoty, která vzniká
>>    jako "příznak" zpracovaného obsahu.
>
>"Hešovací" je použitelné a intuitivní. Myslím, že originální hash
>angličtina považuje za přídavné jméno a my bychom se toho měli držet.
>Slangově je to zkráceně a nesprávně.

Problém je v tom, že v anglickém slovníku najdeme, že je to
buď podstatné jméno nebo sloveso. Přídavné jméno to je tím
pádem automaticky taky.

Slangové "heš" vychází přímo z angličtiny a bere to jako 
nesklonné slovo. Těžko říct, jestli je to nesprávné, protože
není ustanovené to správné. Je jasné, že nějaké slovíčko
nakonec vznikne a i tahle debata bude možná plivancem
do moře názorů, z jehož pěny se to nakonec zrodí, jako Venuše.
(Ku..a, to jsem dnes básník, asi mi z toho překládání už hrabe ;)

>Krypto otisk (např. SHA-1) využívá rozptylovacích/rozmítacích schopností
>dané hešovací funkce pro zajištění svých bezp. principů (jako
>krypto-laik to tak cítím), takže i výrazivo je propojené s hešovací
>tabulkou.

Samotné slovo "otisk" jasně vyjadřuje, že se o tom někdy
bavíme jako o podstatném jméně. Nějak mi uniká souvislost
například SHA a hešovací tabulky (tj. rozptylovací funkce).
Rozptylovací funkce má jako pojem smysl (podle mého názoru),
když se získá celočíselný index, kterým se přímo dostaneme
na referenci synonym v poli. Jinými slovy, tento zúžený pohled
souvisí s jedním z možných přístupů při implementaci
vyhledávací tabulky. Samotný název "hešovací tabulka"
je tedy do jisté míry speciální a v zájmu obecnosti a jako 
praktický projev "zapouzdření" bychom jej asi neměli používat
jindy, než když se bavíme o tomto konkrétním způsobu
implementace vyhledávacích tabulek.

>Výraz "příznak" je podle mě mimo. Jde o otisk o pevné velikosti, který
>nenaznačuje, ale skutečně nese užitečnou identifikační informaci.

Ano. Slovo "příznak" jsem použil záměrně trochu blbě.
Hash (jako podstatné jméno) bývá vytvářen právě s cílem
jednoznačně identifikovat zpracovaný obsah zhuštěným
způsobem (paměťově menší náročnost), ale pokud možno
tak, aby to byla identifikace jednoznačná (v nějakém kontextu).
Požadavek na jakékoliv jiné vlastnosti je vlastně zúžením
obecnosti.

>> cache -- vyrovnávací paměť (spíš u hardware),
>>    ale také mechanismus použití obsahu (rozhodnutí,
>>    kdy použít a kdy ne, kdy získat novou hodnotu
>>    ze zdroje... ve smyslu funkce HTTP protokolu, např.)
>
>Vždy se mi líbil výraz mezipaměť. Je to krátké, výstižné a ohebné.

Mezipaměť mě osobně velmi překvapila, protože se používá
hojně (viz "google statistika pro lenochy") -- díky moc.
Trochu jsem si při tom uvědomil, proč mi někdy nesedí
pojem "vyrovnávací paměť" -- viz dále.

>"Mechanismus použití obsahu" nechápu. Cache má přece 
> stejný princip v HW i v SW, tedy i u HTTP.
>A ten pojem navíc chápu tak, že hlavní je to paměťové 
> úložiště a nikoli algoritmy, které ho řídí.

Souhlasím i nesouhlasím. Záměr cache je opravdu stejný
u SW i u HW. Pohled na to, jestli jde o datový prostor, algoritmus
nebo obojí... Je v tom skrytá dualita -- jako u všech programů
z předobjektové doby: "Data + Algorithm = Program".

Má-li být cache transparentní, pak je nutné k té paměti
přidat i ty algoritmy. V pojmech výstavby systému vystupuje
cache jako podsystém (objekt) s vlastnostmi agenta.
To znamená, že zprostředkovává funkčnost. Jak datová
stránka, tak stránka algoritmická ovlivňují celkové chování
agenta.

Teď k tomu "mezipaměť" versus "vyrovnávací paměť".
Když se řekne "vyrovnávací paměť" a nepřijmu to slepě
jako pojem (tj. jsem jako nováček a slyším to jako poprvé
a poprvé se nad tím zamýšlím), sedí mi to spíš k situaci,
kdy zdroj informací produkuje data nárazově a chci data
odebírat plynule (nebo podobně v opačném směru).
Něco takového, jako dělá přehrada s vodním tokem.

Když se řekne cache ve významu použií například v protokolu
HTTP, představuji si to spíš jako něco
trochu jiného. Jako skutečně příruční skladiště informací,
které potřebuji často. Příkladem z reálného života může
být studium z knížek při využití knihovny -- jednak veřejné
knihovny a jednak knihovny ve smyslu poliček v pokoji.
Některé věci je dobré studovat přímo ve veřejné knihovně,
pár knížek si rád na chvíli půjčím domů.

V tomto smyslu mi "mezipaměť" přijde výstižnější
a lépe odpovídající pojmu cache, který mi připadá
trochu obecnější než "vyrovnávací paměť".  Vyrovnávací
paměť je v tomto smyslu obecnějším případem
mezipaměti.

Díky moc za podnětný příspěvek,
     Petr

P.S.: "Víc hlav -- víc zelí."


Další informace o konferenci Python