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 - BoneFlute

Stran: 1 ... 64 65 [66] 67 68 ... 133
976
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 05:51:05 »
Mam dva objekty. Chci ziskat 'name'.

V dynamickym jazyce zavolam 'query("name")' a jdu domu, splneno. Jak bude vypadat ve statickym jazyce typ kterej mi zvladne oba priklady? Nebo musim vytvorit powerset vsech kombinaci pritomnych/chybejicich poli?
Opakuju, pouziti datovyho typu 'JsonNode' je reimplementace dynamickyho typovani.

{id:42, name:"Adam", birthdate:"1995-05-25"}
{id:42, name:"Adam"}

Pseudokód, rozepsáno (pro laiky):

Kód: [Vybrat]
s = "{id:42, name:"Adam", birthdate:"1995-05-25"}"
type Person = {id: Int, name: String, birthdate: Maybe Date}
print (Person id, name, birthdate) = id .. name .. (case birtdate
   Just x -> x
   Nothing -> '')
print (Json.parse Person s)

Tak samozřejmě, že by to šlo napsat i pomocí toho query("name"), ale myslím si, že by to nikdo soudnej nedělal. Bylo by to přesně to dynamické, aniž by to přineslo nějaký užitek, a jen jeho nedostatky:

Kód: [Vybrat]
s = "{id:42, name:"Adam"}"
print [id, name, birthdate] = id .. name .. birtdate
print (Json.query ['id', 'name', 'birthdate'] s)
->> KeyError

977
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 05:11:34 »
... největší rozdíl vidím v dokumentaci.
Mě teda oslovilo compile time. Když konečně přesvědčím kompilátor, aby to přeložil, tak mám obecně hotovo. Zbejvaj sémantické chyby. Zatímco u dynamického jazyka furt něco padá.

978
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 03:45:09 »
2. Pokud pracuju s nějakou strukturou (mluvím o JSON), tak pokud s ní nějak pracuji, tak musím vědět co je zač. Tedy, potřebuji informaci. Že mám řadu klíčů a.b.c je informace. Protože třeba taky mohu dostat x.y.z. A to přeci není to samé. Otázka je, kdy tu informaci dodám. Buď předem, nebo dodatečně. Což má své důsledky.

Statické typování znamená, že když chceš zpracovat JSON, tak bezpečně víš, že na první položce pole je číslo, na druhé je string a na třetí je datum: [42, "Adam", "1995-05-25"]. Běda, pokud zdroj dat přehodí pořadí - to pak vyběhne fatal error.
Ne, to to skutečně neznamená.

Při dynamickém typování bude v JSONu místo pole mapa: {id:42, name:"Adam", birthdate:"1995-05-25"}. Na rozdíl od statického přístupu jsou zde uvedeny skutečné typy, tedy id, name a birthdate. Nemusí nás trápit, pokud ten JSON má položky v jiném pořadí - podstatné je, že je zachována relace typ:hodnota.

`id` z `{id:42, name:"Adam", birthdate:"1995-05-25"}` rozhodně není typ. Při dynamickém typování nic z toho co jsi popsal nezískáváme navíc. Je mi to líto, opravdu píšeš nesmysly.

979
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 03:26:26 »
Co udělá statický typ, když mu místo a.b.c přijde a.b.x? V čem mi pomůže, když se takový program sesype, místo aby tu chybu zpracoval?
Kde jsi sebral, že se ten program sesype? Staticky typované jazyky narozdíl od svých dynamických kolegů obvykle nepadaj (ne, že by vůbec, ale násobně méně).

Ale k tvé otázce: statický typ zajistí, že v případě a.b.x pojede program jinou cestou. Zajistí, že ta cesta bude existovat. Zajistí, že dojde ke korektnímu zpracování. A zajistí, že se program nesesype.

980
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 03:19:41 »
Nic ve zlym, ale je videt, ze vy lidi ze statickyho typovani jste matematici a zajima vas spis nejaka axiomaticka pravda vesmiru nez dodat vysledek zakaznikovi.
Opak je pravdou.


2. Muzes si o ty strukture precist treba encyklopedii a vykouzlit nad tim nejakej katamorfismus. Ja mezitim zavolam query("a.b.c", json_objekt, else=null) a jdu domu s penezma od zakaznika.
Kdepak, nejdeš. Já už jsem hotov, zatímco ty stále ještě honíš KeyError :-)

No nic, mír s tebou.

981
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 03:13:50 »
V OOP je dynamické typování opravdu výhodnější - kvůli polymorfismu a velmi pozdní vazbě.
Nenašel jsem situaci, kdy by pozdní vazba bránila typům. Můžeš uvést příklad?
Už to tu zmiňoval Kit. Spíš jde o ty přívlastky statický/dynamický. Rozdíl bych viděl asi v tom, že ve statickém případě se v daném místě další (řádný) běh programu může odvíjet jedině od dat. V dynamickém od dat a/nebo jejich typu, nebo dokonce nezávisle na jejich typu. To dává větší spektrum možností, jak na ně program v daném místě může (řádně) reagovat. Ve statickém případě se musím omezit (často zbytečně defenzivně) jen na určitý typ dat, přičemž diskrepance mezi povinně deklarovaným očekávaným a reálně přijatým typem dat vede k chybovému stavu. Jsou to opačné imperativy - za všech okolností znát typ dat, s nimiž pracuji, vs. nestarat se o typ dat, dokud to nezbytně nepotřebuji k práci s nimi.
Obávám se, že takto statické typování nefunguje. Všechny příklady tebou naznačného spektra možností mohu řešit. A statické typování mi bude hodně pomáhat. (A nemusím to dělat ručně.)

Zkusme být konkrétní. Bylo tu uvedeno parsování JSONu. Řešil bych to určitě staticky. Rozhodování zpracování podle typu dat? Staticky. Rozhodnování podle dat - to si nejsem jist, co myslíš. Jak se mohu rozhodovat podle dat? Čeho se mohu chytnout? Můžeš uvést příklad?


Jinými slovy, zatímco v klasickém přístupu chci pole integerů a případ, kdy bych chtěl pole nějakých obecných prvků, je více či méně krkolomný, u objektového přístupu chci primárně pole nějakých obecných prvků a když budu chtít, aby tam byly jen integery, budu si to muset nějak (více či méně krkolomně) pohlídat.
Nevidím důvod, proč by ty obecné prvky neměli mít patřičný typ. Mám komponentu, do které chci vkládat různé widgety. Tak bude dozajisté užitečné, když mi to tam pustí jen widgety (input, textarea, datepicker, timepicker, calendar, grid, form, ...), a integer nikoliv.
A co se zeptat opačně - proč by nutně musely mít nějaký dopředu známý patřičný typ?
To samozřejmě (u statického typování) nemusíš. Ale občas je fajn točit pivo do skleněné flašky, a bylinky sypat do papírové krabice. A zajistit, aby to nešlo naopak. Já tam neuváděl komponentu na inputy, ale komponentu na widgety.

Taška na rohlíky je provokace. Jestli nechceš vést vážou diskusi, tak to řekni rovnou :-)

982
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 02:57:12 »
1. protože aby si dostal a.b.c a ne třeba a.b.x
2. to je tautologie. Já znám jen dvě možnosti: statickej typ= vím, že je tam a.b.c, dynamický typ: nevím nic. Tudíž, aby si to mohl zpracovat musíš tu informaci dodat dodatečně ručně. V čem ti dynamický typ pomohl?

Připomenu, já samozřejmě můžu ve statickém jazyce veškeré informace ignorovat, a pracovat jen s tuplem. (Sám si to zmiňoval "Node (string -> string|int|list|Node)"). Ale to pak znamená, jestli to chápu dobře, že jen a pouze chcetš si tu kontrolu dělat sám. To je veškerá výhoda dynamického typování? Možnost dělat si všechno ručně?

--
edit: jak si to po sobě čtu, možná by byl lepší výraz "záruka" na místo "vím". Protože já samozřejmě o té hodnotě můžu evidovat co je to za typ. Ale stroj s tím víc nepracuje.

1. kdyz tam chybi a.b.c, tak mi to muze vratit treba null a vubec se nebudu zlobit
2. popravde tvoji vetu nechapu. Nepotrebuju zadnou informaci dodavat. To, co se skryva pod a.b.c ma svuj dynamicky typ a to mi staci, abych a tim pracoval. Pokud a.b.c neexistuje, vrati mi to null, keyerror nebo jinou takovou hodnotu.

Nechapu kde jsi vytah, ze jsem tvrdil neco o 'veskerych vyhodach dynamickych jazyku'. Tvrdil jsem pouze, ze staticky jazyky v tomhle selhavaji a kazdej normalni clovek by pouzil 'tuple' misto definovanu tyou cely struktury. Tj. sahnul by po dynamickym typovani.
1. "třeba"?!
2. Pokud pracuju s nějakou strukturou (mluvím o JSON), tak pokud s ní nějak pracuji, tak musím vědět co je zač. Tedy, potřebuji informaci. Že mám řadu klíčů a.b.c je informace. Protože třeba taky mohu dostat x.y.z. A to přeci není to samé. Otázka je, kdy tu informaci dodám. Buď předem, nebo dodatečně. Což má své důsledky.

Mé stanovisko (můžeš mě opravit) je, že dynamické jazyky se používají v situaci kdy:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování
3. neumím, nebo jazyk neumí typy

Příklad, který si uvedl, bych opravdu raději dělal v staticky typovaném jazyce. Právě proto, že by mi IMHO spoustu práce usnadnil.

983
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 01:51:55 »
Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.
No a co pak s tím děláš? Máš strukturu struktury struktur. A to by mělo mít nějaký význam, ne? Třeba a.b.c je klíč pro nějakou konkrétní konkfiguraci (třeba). Takže to potom čekuješ ručně?

Můžeš prosím rozvést to "naprosto selhává"? Tak trochu v tom čuchám "nechce se mi to definovat, tak to nechám vágní, a řešit to budu potom...".

Chci z jsonu ziskat a.b.c

1. nechapu proc bych mel definovat typ nekolika urovnovyho jsonu
2. pokud to nebudu typovat ale budu s tim pracovat jako s dynamickym typem, pak mi statickej jazyk nijak nepomoh. naopak mi to zneprijemnil hloupyma hlaska a pri kompilaci

1. protože aby si dostal a.b.c a ne třeba a.b.x
2. to je tautologie. Já znám jen dvě možnosti: statickej typ= vím, že je tam a.b.c, dynamický typ: nevím nic. Tudíž, aby si to mohl zpracovat musíš tu informaci dodat dodatečně ručně. V čem ti dynamický typ pomohl?

Připomenu, já samozřejmě můžu ve statickém jazyce veškeré informace ignorovat, a pracovat jen s tuplem. (Sám si to zmiňoval "Node (string -> string|int|list|Node)"). Ale to pak znamená, jestli to chápu dobře, že jen a pouze chcetš si tu kontrolu dělat sám. To je veškerá výhoda dynamického typování? Možnost dělat si všechno ručně?

--
edit: jak si to po sobě čtu, možná by byl lepší výraz "záruka" na místo "vím". Protože já samozřejmě o té hodnotě můžu evidovat co je to za typ. Ale stroj s tím víc nepracuje.

984
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 01:24:32 »
Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.
No a co pak s tím děláš? Máš strukturu struktury struktur. A to by mělo mít nějaký význam, ne? Třeba a.b.c je klíč pro nějakou konkrétní konkfiguraci (třeba). Takže to potom čekuješ ručně?

Můžeš prosím rozvést to "naprosto selhává"? Tak trochu v tom čuchám "nechce se mi to definovat, tak to nechám vágní, a řešit to budu potom...".

985
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 00:40:35 »
Ajeje, uz tu zacina akademicka debata. Jeste ze to nemusim resit, asi se budu drzet Javy a jestli mi nekdo bude tvrdit, ze to neni tak vhodne na OOP, tak se budu smat, protoze kdo rikal, ze na tom zalezi, hlavne, ze se prace odvede dobre.

Ja jsem vlastne docela rad, ze jak Java, tak C# nejsou Kit-compliant OOP programovaci jazyky :D

Hosi, reknu vam to takhle a usetrim vam praci a dohadovani. Nevymyslejte bejkarny s OOP a podivejte se, jak to vypada v Jave a C# a jak se to pouziva v praxi, a toho se drzte, protoze nic lepsiho vymysleneho nebylo 8) A jestli to je Kit-compliant OOP je vec uplne druhorada, protoze bavime se o tom, co je lepsi a co horsi, o to jde predevsim  8)

Tak snad nemusí být hned tak zle. Mě to jen připomělo, že občas narážím na hlasy, které obhajují dynamické typování. A já bych si někdy opravdu docela rád vyslechl v čem je to užitečné. (Čímž díky @Kiwi-mu za pokus o vysvětlení, ačkoliv to zatím nestačilo :-) )

986
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 00:37:16 »
O pár stránek zpět bylo propagováno oddělení funkcí od datových struktur, což je přesně proti myšlence OOP, tedy že metody jsou co nejblíž k datům, se kterými pracují.

OOP je o umístění stavu do objektu a o polymorfismu. To co popisuješ není dobrá definice. Vejdou se do toho snad všechny funkcionální jazyky. A možná i mnoho dalších neOOP.

987
Vývoj / Re:Co si myslíte o OOP?
« kdy: 31. 12. 2018, 00:04:23 »
V OOP je dynamické typování opravdu výhodnější - kvůli polymorfismu a velmi pozdní vazbě.
Nenašel jsem situaci, kdy by pozdní vazba bránila typům. Můžeš uvést příklad?

Jinými slovy, zatímco v klasickém přístupu chci pole integerů a případ, kdy bych chtěl pole nějakých obecných prvků, je více či méně krkolomný, u objektového přístupu chci primárně pole nějakých obecných prvků a když budu chtít, aby tam byly jen integery, budu si to muset nějak (více či méně krkolomně) pohlídat.
Nevidím důvod, proč by ty obecné prvky neměli mít patřičný typ. Mám komponentu, do které chci vkládat různé widgety. Tak bude dozajisté užitečné, když mi to tam pustí jen widgety (input, textarea, datepicker, timepicker, calendar, grid, form, ...), a integer nikoliv.

988
Vývoj / Re:Co si myslíte o OOP?
« kdy: 30. 12. 2018, 23:33:22 »
Statické typování se hodí pro strukturované programování, ale já raději používám OOP, ve kterém je lepší typovat dynamicky.

Tak já bych se s dovolením od této blbosti odpíchl, a zeptal se vás na názor.

V čem je dynamické typování, či případně netypování, užitečné? Za mě jsem dospěl k závěru, že jsou to dvě situace:
1. Erlang dokáže za chodu opravovat/upravovat kód. A autoři prohlásili, že tam typy nedali, protože se jim nepovedlo vymyslet jak na to.
2. Někdy se hodí, zejména na prototypování, když jsou typy volitelné, a následně to při refactoringu upřesňovat. Protože ze začátku člověk třeba nemá jasno, jak to má vypadat, a tak samozřejmě dost dobře nemůže ty typy určit.

Kromě těchto dvou scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.

Co myslíte vy?

989
Hardware / Re:iBeacon - proximity / webhook
« kdy: 11. 12. 2018, 15:44:22 »
ad: asd, kkk1, Připomínám: autor se opakovaně ptal na to, zda znáte nějaké zařízení s podporou iBeacon.

990
Vývoj / Re:Vysvětli mi někdo pip a easy_install
« kdy: 29. 11. 2018, 19:58:42 »
Citace
Existují i další nástroje jako jsou tyto dva?

Áno, existujú. Jeden z najrožšírenejších je conda, ktorý spravujú matematici. Je to taká schizma.
Ale pre moderného Python programátora, nie-matematika, je podstatné naučiť sa používať pip.
Na easy_install môžeš zabudnúť, je to história. Dôležitý je tiež pipenv, čo je kombinácia pip a
vyrtuálneho prostredia.
Je ten conda lepší? Mohl by si je porovnat?

Stran: 1 ... 64 65 [66] 67 68 ... 133