Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 ... 52 53 [54] 55 56 ... 618
796
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 16. 11. 2019, 00:16:59 »
A v druhé řadě, nesouhlasil jsem s tím, že by mi to typovej systém neohlídal compile time. Proč by nemohl. Všechny informace má.
No, Idris ti to už napsal: máš pole Intů, nic víc nevíš. Třeba jsi ho načetl serializované z disku nebo ze sítě. V compile time víš jenom, že to je pole intů. Teprve až to načteš z toho disku, můžeš zjistit, že třetí, pátý a sedmdesátý osmý je Age :)

797
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 16. 11. 2019, 00:00:41 »
Mám RAM 128GB :P
V tom případě tě bude zajímat, jestli pole Intů zabírá 128G  nebo 256G ;)

Já mu snad rozumím dobře, ale stejně nesouhlasím :-)

Mám instnaci List<Int> a pokud mohu do List<Int> uložit Age, kterýžto je subtyp Int, tak si sice musím někde evidovat, že zrovna tato třetí hodnota není Int, ale Age, to jako jo, a to asi bude muset být nějak naimplementováno...

Každopádně překladač a nikoliv runtime mi zajistí, abych nemohl k těm prvkům List<Int> přistupovat jen jako k Age, a že k nim mohu přistupovat (po patřičném switchi) jako Age, a nemůžu jako k String.

Můj cíl je vždycky compile time, i za cenu složitější práce překladače. A v tomto případě bych řekl, že to stále jde.
Pak mi rozumíš docela přesně a moc není, s čím bys mohl nesouhlasit :) Prostě místo pole intů budeš mít pole dvojic (typ, hodnota), kde "typ" říká, jestli na tom konkrétním místě v poli je Int nebo Age (nebo nějaký jiný podtyp) a "hodnota" je ta integerová hodnota. Snadno si to naimplementuješ v Haskellu pomocí dvojic ("product type" - nevím, jak se tomu říká česky). A zároveň si po tom, co to takhle naimplementuješ, vyžereš všechny ty nevýhody :) Stačí nadefinovat pro takový typ funkce třídy Num a jsi skoro tam, kdes chtěl být, ne?

798
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 19:32:41 »
Tohle je fakt non-issue
Jestli ti pole integerů zabírá 32G nebo 64G úplně non-issue není :)

799
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 19:28:54 »
U každé?
U každé, která má být součástí nějaké hierarchie. Go to má jenom u interfejsů, protože to je jediná věc, u které hierarchii má.

800
/dev/null / Re:Těžké OOP problémy
« kdy: 15. 11. 2019, 19:23:01 »
Příklad: Mniši v klášterech na svém území si vytvoří zákon, že budou mít právo na život a jejich filozofie bude nenásilí. Pak přijedou tanky a mnichy zabijou. Mniši nedokázali ochránit svá práva, ale nemůžeš říct, že mniši neměli právo. Oni se na tom právu mezi sebou dohodli a vzájemně si ho mezi sebou "garantovali". Pouze neměli dostatečně silné vojsko.
No a to je přesně ono - to právo jim nikdo silnější negarantoval, čili výsledek je stejný, jako by to právo vůbec neměli. Potom tedy takový pojem nemá žádný obsah, když je úplně jedno, jestli platí nebo neplatí a výsledek je stejný.

Podle tvé teorie by existovalo pouze jediné právo a to je "právo silnějšího".
No vždyť tak to je. Ne podle mě, taková je prostě realita.

Když se se sousedem dohodneme, že jsme samostatný stát a že "máme právo ho vyhlásit", tak je nám to prd platný, protože prostě dorazí Armáda Česé republiky a vysvětlí nám, že takové právo nám stát neudělil a negarantuje. A fertig.

Stejně tak si můžu vymyslet, že mám právo vraždit lidi, a při posledním soudu budu Bohu vysvětlovat, že jsem si to takhle vymyslel, ale stejně povalím štandopéde do pekla.

Aneb poněkud expresivněji: silnější pes mrdá. S tím nic nenaděláš.

Podstata křesťanské "radostné zvěsti" je v tom, že ten vůbec nejsilnější pes je dost fajn a dá se s ním docela dobře domluvit. To je celý.

----

Sorry, omlouvám se, ale dál už se diskuse vzdám, nedává mi moc smysl v ní pokračovat.

801
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 19:02:32 »
V List Int může být cokoliv, co se vejde do Int. Takže i Age. Když do List Int dám Age, tak smím, a bude tam Age, neproběhne konverze (nedělal bych to). Když ale z List Int čtu, tak sice můžu zjišťovat, zda nejde o nějaký podtyp, ale nemůžu k tomu přistupovat jako k List Age, protože je to List Int. Kompilátor mi bude hlídat, abych k těm položkám nepřistupoval jako k Age, protože tam samozřejmě může být Int, a obráceně to už nejde.
No, to je právě ta možnost, co má Go. Znamená to, že musíš mít u každé hodnoty zaznamenaný typ. A to je teda pořádný opruz. Tohle v normálním Haskellu není - když to má typ Int, tak je to Int.

Překladač tohle za tebe řešit nemůže, protože k tomu dochází až v runtime. (Překladač nemůže tušit, že při běhu bude ausgerechnet třetí prvek pole Age a ne Int).

802
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 18:53:16 »
To je ale princip variance typů, že se "zapomíná".
Právě no. Však neříkám žádnou tajemnou pravdu, jenom odpovídám na Boeflutovu otázku "vidíte tam nějaký problém?", že tenhle problém tam má :)

Když mám bifunktor kontravariantní v prvním parametru a kovariantní ve druhém a někam ho předám, tak té funkci to je jedno, protože co se zapomene je typ argumentů (funktoru), ne typ té hodnoty jako celku.
To je ale speciální případ.

803
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 18:35:48 »
V tomhle fóru je tolik tatarštiny, že to je jedno :) Ani to není jeho rodný jazyk (předpokládám). Kdo jsi bez viny... ;)
Jasně, však to bylo myšleno přátelsky, ne jako pruzení.

804
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 18:34:35 »
1/ Paměť neřeším. To ať si vyřeší kompilátor.
Nejde o paměť, ale o typ. Referenci na Age nesmíš změnit na referenci na Int. Ledaže bys měl čítač referencí a ten byl roven jedné.

Předpokládám ale, že uvažuješ o nějakém Haskell-like jazyku, tak na reference prdíme.

2/ Mě se tam žádnej typ nezměnil. O žádnou informaci jsem nepřišel. Já mám pole Intů. Mám funkci:
No pokud se na to díváš takhle, tak ano, máš pole intů. V tom případě jsi o tu informaci, že "a" je "Age" přišel ve chvíli, kdy jsi "a" vložil do toho pole intů. Tím se totiž z Age stal Int = ztratil jsi informaci o tom, že to číslo je kladné. Odteď už to nevíš.

Nebo řečeno jinak: intuitivně člověk asi očekává, že když do listu něco vloží a pak to z něj vyndá, dostane to samý. Ty ale říkáš, že dostane typ prvku toho listu.

Jak jsem říkal, nejsou to neřešitelné problémy, ale je to opruz.

805
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 18:02:23 »
PositiveUnzeroNumeric
Prosímtě, neříkej tomu "Unzero", strašně to trhá oči. Správně je Nonzero.

:)

806
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 17:51:51 »
Tak naivně předpokládám, že ano, může ho tam vložit, protože Age je Int (zatímco Int není Age). A když ho vyberu tak...
...tak nastanou problémy :)

No, to by chtělo příklad. Protože tak co, může to vráti Age. A funkce, která vyžaduje pole Intů a dostane pole Ageů, tak s tím Age bude pracovat jako s Intem, tak by furt mělo všechno fungovat... Co mi uniká?
Uniká ti to, že se ti tam "samovolně" přeměnil typ Age na typ Int - tj. na obecnější = při nejmenším jsi ztratil nějakou informaci. V horším případě by i mohlo dojít k nějaké chybě, pokud by to byla reference (do té konkrétní paměťové buňky jsi původně dovolil zapisovat jenom kladná čísla (Age) a teď tam máš povoleno zapsat i záporná (Int). Samozřejmě u imutable jazyka ten druhý problém nevzniká, ten první ale pořád jo.

Go tenhle problém (ztráta "přesnosti" typu) řeší pomocí type switche, popř. type assertion. To není vůbec blbej nápad. Ale je to ukecaný.

...no a druhá možnost je, že to nebudou podtypy. Pak to ale bude strašná otrava používat.
A co to pak bude? A jak by to teda vypadalo?
Typ Int a Age by prostě pro typový systém byly úplně jiné typy, bez jakéhokoliv vztahu. Stejně jako třeba Int a String. Takže bys je musel převádět pomocí nějaké speciální funkce

Kód: [Vybrat]
intToAge: Int -> Maybe Age

807
/dev/null / Re:Těžké OOP problémy
« kdy: 15. 11. 2019, 16:29:57 »
dnešní Katolická církev odmítá trest smrti
Oficialne az od minuleho roku :)

808
Hardware / Re:Vzdálený odečet plynoměru
« kdy: 15. 11. 2019, 14:19:58 »
Jinak, APRS je celosvětová síť. Dokonce zadarmo. Ale má podmínku... je striktně nekomerční, nešifrovaná a musíte být
radioamatér. S koncesí máte vůbec spoustu zajímavých možností :)
To je úplně jiná kategorie.

Ale podle toho co píšete ve skutečnosti řešíte hlavně ten cloud.
Neřeším cloud, řeším síť přijímačů. Prodám chci prodávat koncovým uživatelům nějaký sensor, tak ten data posílá "do éteru" a někdo nějak ta data někam musí doručit. Vůbec to nemusí být do cloudu (ani nevím, co by "cloud" měl být). Může to být třeba na můj server. Ale nechci si budovat celosvětovou síť přijímačů sám, to by se mi asi nevyplatilo :)

Pohyblivá zařízení už jsou mnohem těžší. Tam totiž vlastními silami tu infrastrukturu nerozjedete, takže Sigfox, LoRa a NB-IoT jsou víceméně jedinou možností. (nebo to APRS).
No. A z těch tří je LoRaWAN nejotevřenější, to je to, co říkám.

809
Hardware / Re:Vzdálený odečet plynoměru
« kdy: 15. 11. 2019, 12:23:57 »
Nejdříve si chtěl vědět jestli existuje dokumenty(vyhlášky, normy apod.. ) řešící plynoměr + věci okolo v plynoměrné sestavě. Nějaké jsem tu uvedl a rozhodně je kvůli někomu nebudu číst. Pokud si to někdo chce nastudovat je to jeho věc, legislativa a normy na toto téma existují.
Chtel jsem vedet, ktera konkretne cast tohle podle tebe upravuje. Odkaz na obecnou normu s tim, ze ji ale cist nehodlas, ma pro me nulovou informacni hodnotu. Sorry, neber si to osobne.

může být způsobeno tím, že je to novinka
Pokud si dobre pamatuju, mame to v prodeji nejakych pet let asi. Mozna vic.

Za nějaký čas, si někdo koupí tu vaši krabičku, vymění vnitřek a možná se mu podaří ovlivňovat odečet. Jsme v Česku.
Takze katalyzatory by se nemely prodavat, protoze nekdo muze vymenit vnitrek a nesplnovat normy? Co to je za argument?!

Jestli myslíš tím papírem nějaký certifikát, ok. Už jste zažily nějakou soudní při? Byl daný dokument úspěšný u soudního znalce?
Nevím, obchodní a pravni veci jdou uplne mimo me. Pokud to nekoho zajima, muze poslat dotaz distributorum.

810
Hardware / Re:Vzdálený odečet plynoměru
« kdy: 15. 11. 2019, 10:39:04 »
Bez členství v LoRa alliance si tudíž modul nepostavíte.
To mi vůbec nevadí, protože si ho chci koupit, ne stavět.

Které konkrétně? Já našel třeba RN2483, ale to je celý modul. Když se kouknete do datasheetu tak je tam v blokovém schématu "LoRa technology radio" bez bližšího popisu. Ale je klidně možné, že si ho vyrábí sami.
Ještě třeba Michrochip SAM R34.

Ono je teda jedno, protože kvůli prohlášením o shodě se stejně typicky používají právě hotové moduly.
Právě.

Sestavitelná?
Ne. Čip, který si můžu koupit, zabudovat do svého zařízení a bude nějaká síť, do které budu moct zařízení připojit. Ideálně celosvětová síť samozřejmě.

Tak jednoduché to občas není. Některé moderní elektroměry tu LEDku používají i pro obousměrnou komunikaci a diagnostiku. Takže když ji zablokujete svým zařízením, tak se může dodavatel zlobit. Nemusí být problém, pak se může vyměnit technik a najednou se situace změní...
Nejsem na to odborník, ale pokud vím, ty LEDky bývají dvě - jedna na odečítání impulzů, druhá diagnostická. Ale hlavně: ty sondy tam nejsou přidělané na pevno. Pokud by chtěl někdo ten port použít, prostě se oddělají (otázka zlomku vteřiny).

Stran: 1 ... 52 53 [54] 55 56 ... 618