Mne to pripomína tie rôzne flashové paródie, čo napodobovali rôzne glitche windows a nakoniec hodili bluescreen :)
Tak to je hnus! Windows 10 😀😀😀
To mi připomíná můj projekt ze střední 😃 www.os.wu.cz tenkrat jsem si take pohraval s tou myslenkou 😃
Škoda, že tam polovina věcí nefunguje... buď mi otevřel prázdné okno nebo píše chybu, že firefox nemůže něco zobrazit.
Microsoft by ten projekt mohl celkem zajimat, protoze W10 stale moc spis nefunguji. Aspon u mne, pravidelne pri updatu 99% veci prestane fungovat.Tady ma v podstate rozhrani, kde muze distribuovat primo source-code a pakovat treba zipem pro usporu mista. Jde mi hlavne o to ovladaci rozhrani W10, ktere by s ostatnim svetem mohlo komunikovat pres system web-socket s exe soubory.V tuto chvili to resi nejaka dll, ktera ne uplne spravne funguji a ne uplne spravne se daji sdilet.Ale, zase chapu microsoft, ze chce mit svuj kod pod patenty pred konkurenci. No, ale to zakladni rozhrani by mu mohly ladit uzivatele. Ti pri pouzivani snadno objevi chybu a ti zkusenejsi muzou navrhnout opravu kodu. A take chapu, ze takovy prelozeny a browserem optimalizovany kod zabira tak 10x vice mista v pameti. V tuto chvili mi velkou cast pameti zabira system a zbytek browser...Ja se budu radeji prehrabovat v jquery kodu nez nejakem ceckovem nebo delphi nesmyslu.
o co konrkétně by se měl na tý slátanině zajímat? 😀
Jestli vám při updatu přestane 99% věcí fungovat, měli by vás někde vystavovat jako raritu. Blbá formulace - nebo jste to chtěl opravdu napsat takhle?
Keby mne prestalo po update Windows 99% vecí fungovať, asi by som prešiel na macOS alebo niektorú z Linux distribúcií.Holt, niektorí ľudia sú masochisti.
>> Ja se budu radeji prehrabovat v jquery kodu nez nejakem ceckovem nebo delphi nesmyslu.Já jsem měl raději desktop aplikace, u webu je typovost taková hodně jednoduchá, pokud vůbec. Zlepšilo se to na úrovni zdrojáku třeba s typescriptem, ale stejně si člověk může dělat co chce a v runtime ty typy stejně nejsou. Pro některé věci to je výhoda, pro jiné to může být spíš noční můra 🙂
Muzu se zeptat, k cemu jsou v runtime datove typy dobre?
Tak je snad celkem podstatné, jestli přetypuji objekt nějakého typu na Fabii a přijde Fábie nebo nákladní loď. V případě nákladní lodě jazyky jako C#, Java, Delphi vyhodí exceptionu, javascript projde a vyhodí chybu, až zavolám funkci na otevření kufru, protože se má zavolat funkce na otevření nákladních vrat a funkce na otevření kufru tam není. A u těch nízkoúrovňových jazyků jako C se nejspíš zavolá funkce, na pozici, kde by normálně byla ta na otevření kufru. Což pravděpodobně dopadne špatně. V C++ už myslím nějaká informace o typech je udělaná lépe a kontrolovat se to dá taky, ale s těmi java-like jazyky bych to nesrovnával.
Názor byl 2× upraven, naposled 20. 1. 2022 10:33
Tak jeste jednou :) K cemu jsou dobre datove typy v runtime? To o cem pisete je dulezite pro kompilator (at uz standalone nebo JIT), ale v runtime jako takovem uz k zadnemu pretypovani nedochazi, aspon ne u tech nizsich jazyku. U tech vyssich si to dokazu predstavit k nejake reflexi.
Názor byl 1× upraven, naposled 20. 1. 2022 13:59
No právě k té kontrole. Kompilátor neřeší to, když něco přetypujete na nekompatibilní typ (což někdy přímo nejde, ale obejde se to třeba přes mezipřetypování přes object). Nižší jazyky prostě budou s tou hromadou bytů pracovat, jako by byly toho typu, co jste řekl, což velmi pravděpodobně dopadne špatně, třeba se budou vracet nesmyslné hodnoty. U vyšších jazyků se to kontroluje, protože objekt má u sebe i odkaz na informaci o typu a to blbé přetypování neprojde (alespoň v javě nebo .netu, Delphi si teď nejsem jistý). Takže se s tím ani nedá pracovat jako s něčím jiným, spadne to už předtím. A to se kontroluje i za běhu. Reflexe je už trochu advanced použití, kdy můžete číst data nebo volat metody a jejich název mít textově někde nebo na základě něčeho složit. Typicky různé pluginy nebo dependency injection frameworky typu spring.
Myslim si, ze to funguje trochu jinak, nez pisete. Delphi je pascal, kompiluje se rovnou do strojaku, stejne jako C/C++. Pokud nezapnu v kompilatrou spousta blbincu, zadna typova kontrola se v runtime nedeje (a i kdyz je zapnu, tak je to spis range checking na pole a podobny voloviny). Typove chyby vyhazuje kompilator, ne runtime. Tam to proste zbuchne, vetsinou na segfault, protoze drive nebo pozdeji se proste posune nejaky index mimo vyjrazeny a chraneny datovy segment nebo se proste odskoci/zavola neco jineho, nez se ma zavolat. Pokud neco pretypovavam, pouze rikam kompilatoru, jak to ma pouzit a prelozit (jinymi slovy, na jaka mista v pameti budou po kompilaci ukazovat jake registry - take hodnoty se do nich nastavi nebo nactou z nejakych staticky zkompilovanych tabulek - treba odkud se budou nacitat tabulky offsetu virtualnich metod na ktere se pak skace nebo se volaji). U tech vyssich jazyku je to dost podobne, jedine, co se vlastne meni je, ze jsou jakoby zapnuty vsechny ty blbince kompilatoru a dynamicka alokace pameti funguje trochu jinak. Pokud jde o typy, tam je to trochu slozitejsi, ale rozhodne za behu programu nedochazi k typove kontrole nebo pretypovani. To je vsechno zase v JIT kompilatoru, ktery z toho intermediate jazyka dela strojak - nekdy se muze zdat, ze to je runtime chyba, ale neni, protoze vlastni kod se jeste vubec nespustil, takze o behu toho kodu se vlastne mluvit neda.
Názor byl 3× upraven, naposled 20. 1. 2022 16:53
U javy nebo .netu to fakt nemůžete přetypovat na něco jiného... U objektů je odkaz na informaci o typu a z toho se pozná, jestli jsou kompatibilní, na jiný to prostě nedáte.Stačí zkusit třeba na https://dotnetfiddle.net/using System;class Foo { public string Id { get {return "foo"; }}}class Bar { public string Id { get {return "bar"; }}} public class Program{ public static void Main() { Foo foo = new Foo(); Bar bar = (Bar) ((Object) foo); Console.WriteLine(foo.Id); }}bez mezipretypovani na (Object):Compilation error (line 16, col 13): Cannot convert type 'Foo' to 'Bar's mezipretypovanim:Run-time exception (line 16): Unable to cast object of type 'Foo' to type 'Bar'.Stack Trace:[System.InvalidCastException: Unable to cast object of type 'Foo' to type 'Bar'.] at Program.Main() :line 16
Ja jsem prece nikde nepsal, ze to jde pretypovat rovnou. Kazdopadne, ta runtime exception je od JIT kompilatoru. Sice se tvari, jako ze to je runtime (je to runtime, ale ve smyslu celeho CLR), ale ve skutecnosti je to vlastne compile time, kdy se z MSILu vytvari strojak, takze na spusteni vlastniho kodu vlastne vubec nedojde, protoze se z MSILU, kvuli typove kontrole, vubec neprelozi do strojaku a nespusti.
Těžko to může být od kompilátoru. JIT se volá jednou, typicky když se metoda zavolá poprvé, pak už je ten spouštěný kód stejný. Ten objekt ale může přijít taky jako parametr metody, takže výsledek přetypování je závislý na předávané hodnotě. To nemůžete řešit kompilátorem, když nevíte, co tam reálně přijde.A existuje další důvod, proč runtime musí mít informace o typech. Třeba aby garbage collector mohl projít všechny objekty a zrušit ty, na které není reference. To bez znalosti typu objektu neuděláte.
Resp. možná jenom blbě chápu, jak jste to myslel. Ve strojáku už objekty samozřejmě nebudou, to je jenom hromada bytů. Ale informace o typech, kterou si tam doplňuje compiler a případně používá runtime tam je taky. Typová kontrola je kód, který se zavolá a případně hodí exceptionu, takže ten stroják dál už se neprovede. Ale pořád je to runtime, ne kompilace.
Teda, to muselo dát příšernou práci. Přitom taková blbost, co?
Zdravím,z trochu jiného soudku. Sledoval jsem vaši stránku http://krakatoa.www3.cz/ , která je již nějakou dobu nedostupná. Přesunul jste ji a pokud ano, kam? Měl jste tam velmi zajímavé informace. Díky za odpověď.Aleš
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.