1
Vývoj / Re:Přechod z Javy na Rust. Ano či ne?
« Poslední příspěvek od BoneFlute kdy Dnes v 23:02:06 »Já ti nerozumím. V čem, že je ten problém?
Problém je v tom, že to nemusí být stromová struktura, ale může to být obecný graf a na jeden objekt může vést reference z víc míst. Pokud to řešíš přes reflexi, tak tam tu informaci o tom, že jde o stejný objekt, akorát je na něj odkazováno z víc míst, máš zachovanou. Ale když to přesypeš do mapy map, tak se tam ta informace ztratí (nebo si minimálně přiděláš dost práce s tím, abys ji tam zachoval).
Ne, to teda není.
Ten problém s obecným grafem je obecný problém ať to budeš řešit explicitním řešením nebo reflexí.
Problém vidím v tom, a tady si trochu zaAdHominuju, že Radek Míček hodně prožívá optimalizaci, a nedokáže se od toho oprostit :-)
To ovšem není chyba reflexe ale logická chyba v návrhu.No, chyba byla v tom, že se použila reflexe s představou, že to přece bude fungovat.
Připravit se kvůli tomu o reflexi mi přijde škoda.Já nemám nic proti reflexi. Alespoň ne principielně. Jen se zřejmě pohybuju v doméně, kdy vždy narážím na její mantinely. V doméně, kde jde o bezpečnost a zároveň se všechno vyvíjí, tak reflexe jde trochu do pozadí.
Navíc často ten dict může obsahovat jen omezenou množinu typů, takže třeba neomezeně dlouhé číslo do něj nejde uložit přímo jako číslo, ale jako řetězec a pak se bokem serializátoru do JSONu musí říct, ať to uloží jako číslo, ne jako řetězec (i když to tak je v tom slovníku).No a? To je správně.
A není jednodušší to číslo nechat třeba jako BigInteger a naučit ten generátor, jak mapovat BigInteger na datové typy daného formátu? K čemu je dobré to převádět na String a pak si někde bokem předávat informaci, že tohle vlastně není String ale číslo?
Dobře. Takže já mám systém, který poskytuje a zpracovává data. Mám N klientů, kteří používají mou knihovnu. Já jim posílám nové objekty, oni vytvářejí nové objekty. Potřebuju, aby tam byla nějaká pružnost, takže představa: teď se všechno zastaví a den to nepoběží dokavad nezaktualizujeme všechno - tak úplně nepremáva.
Tak v takovém kontextu by to IMHO opravdu nebylo jednodušší.
Jasně, když zjistím, že můj původní předpoklad, že tam dám dict, a mělo by to pokrývat všechno začne být úzkým hrdlem, a že bych tam strašně nutně potřeboval přidat vlastnost A, tak budu přemýšlet, jak to celé šikovně zaktualizovat. Možná udělám verzi 2, nebo něco takového.
Jasně, pokud to bude nějaký kolotoř několika objektů uvnitř systému, který mám pod kontrolou, tak budu uvažovat jinak a na nějaké serializace se vyprdnu.