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 - Ondra Satai Nekola

Stran: 1 ... 24 25 [26] 27 28 ... 177
376
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 19:28:42 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita

Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.

Aha. Takže houby víš, ale názor se ti už udělal.

377
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 19:17:10 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita

Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?

378
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 18:03:07 »
Teoreticky. Prakticky treba kdyz mas getXs(), tak podle typu vis, zda mohou byt xka duplicitni (list vs. set).
K čemu potřebuješ rozlišovat list vs. text? Dostaneš kolekci a budeš s ní tak i pracovat.
On je tam trochu sémantický rozdíl, víme? A z toho typu vysloveně svítí.

Sémantický rozdíl nevidím. Seznam autorů nebo množina autorů? Pro mne je to kolekce autorů a budu s ní pracovat tak, aby když někdo vymění list za set, mi to mohlo být jedno.

Pokud ti není jasný rozdíl mezi sémantikou listu a setu, tak je asi problém na tvém přijímači.

(Btw zrovna tady máš ještě o problém navíc, protože se rozlišuje první autor, korespondující autor...)

379
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 18:02:49 »
Teoreticky. Prakticky treba kdyz mas getXs(), tak podle typu vis, zda mohou byt xka duplicitni (list vs. set).
K čemu potřebuješ rozlišovat list vs. text? Dostaneš kolekci a budeš s ní tak i pracovat.
List nemá stejné metody jako set, natož jako text.

Dobrá, zde tedy polymorfismus selhává. K čemu tedy potřebuji takovou kolekci vytahovat z objektu? Nebylo by lepší ji iterovat uvnitř nebo místo kolekce předat iterovatelný objekt?

Ne.

Protože s iteratorem nebo iterací uvnitř neuděláš rozumně  třebas základní množinové operace.

380
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 17:47:35 »
Teoreticky. Prakticky treba kdyz mas getXs(), tak podle typu vis, zda mohou byt xka duplicitni (list vs. set).

K čemu potřebuješ rozlišovat list vs. text? Dostaneš kolekci a budeš s ní tak i pracovat.

On je tam trochu sémantický rozdíl, víme? A z toho typu vysloveně svítí.

381
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 17:06:43 »
Dynamicke typovani vyhodu ma, je jednodussi, flexíbilnejsi a srozumitelnejsi. Staticke typovani je vlastne docela hloupe a neprirozene, je umele. Principialni rozdil mezi statickym a dynamickym typovanim je v tom, kdo nese informaci o typu, zda promenna nebo hodnota.

To neni tak docela pravda. Napriklad Haskell nema promenne, jen hodnoty; pritom je staticky typovany. Na druhou stranu, treba Java ma promenne, ale nektere hodnoty (objekty) si drzi informaci o svem typu.

Rozdil je skutecne v tom, zda se typy kontroluji pri prekladu nebo az pri behu programu. A to druhe obvykle znamena nejakou ztratu vykonu a vyssi spotrebu pameti.

takze kdyz v haskellu napisu
Kód: [Vybrat]
dabl x = x + x
Co je to to 'x' a je datoveho typu double nebo int?

Je otazka, zda objekt je opravdu hodnota, ale dobre, opravuji formulaci na 'kde i informace o jednoduchem datovem typu je soucasti hodnoty.

Takze kdyz v pythonu, php a pod vyuziji type hinting, a datove typy zkontroluji pri prekladu, udelal jsem z nej staticky typovany jazyk? Myslim ze ne a to prave proto, ze informace o typu je soucasti hodnoty, nikoliv promenne. To je podle me zakladni rozdil, nikoliv cas kontroly.

dabl :: Num a => a -> a

(jinymi slovy x je cislo)

(a jeste update: dabl je polymorfni, ale nezamenovat to uplne s polymorfismem pozdni vazby v beznem OOP)
Muj priklad vypadal jinak. Je to priklad ze statickeho jazyka a krasne to ukazuje, ze vase tzv. vyhody statickych jazyku jsou iluzorni. Vy statickym typum prisuzujete vlastnosti, ktere neplynou ze statickeho typovani. Staticke typovani ma jedinou vyhodu a smysl, umoznuje vyrazne lepsi vykonovou optimalizaci. To vsechno ostatni jsou vedlejsi efekty, ktere nejsou platne pro vsechny staticke jazyky a nejsou podmineny existenci statickeho typovani.

Tvuj priklad byl
Kód: [Vybrat]
dabl x = x + x
ne?

A ja ti odpovidam, jak je to typovane. Nato ses ptal, ne?

Nechapu, co je na tom "iluzorni" a ktera vlastnost ti tam chybi.

382
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 16:47:50 »
Dynamicke typovani vyhodu ma, je jednodussi, flexíbilnejsi a srozumitelnejsi. Staticke typovani je vlastne docela hloupe a neprirozene, je umele. Principialni rozdil mezi statickym a dynamickym typovanim je v tom, kdo nese informaci o typu, zda promenna nebo hodnota.

To neni tak docela pravda. Napriklad Haskell nema promenne, jen hodnoty; pritom je staticky typovany. Na druhou stranu, treba Java ma promenne, ale nektere hodnoty (objekty) si drzi informaci o svem typu.

Rozdil je skutecne v tom, zda se typy kontroluji pri prekladu nebo az pri behu programu. A to druhe obvykle znamena nejakou ztratu vykonu a vyssi spotrebu pameti.

takze kdyz v haskellu napisu
Kód: [Vybrat]
dabl x = x + x
Co je to to 'x' a je datoveho typu double nebo int?

Je otazka, zda objekt je opravdu hodnota, ale dobre, opravuji formulaci na 'kde i informace o jednoduchem datovem typu je soucasti hodnoty.

Takze kdyz v pythonu, php a pod vyuziji type hinting, a datove typy zkontroluji pri prekladu, udelal jsem z nej staticky typovany jazyk? Myslim ze ne a to prave proto, ze informace o typu je soucasti hodnoty, nikoliv promenne. To je podle me zakladni rozdil, nikoliv cas kontroly.

dabl :: Num a => a -> a

(jinymi slovy x je cislo)

(a jeste update: dabl je polymorfni, ale nezamenovat to uplne s polymorfismem pozdni vazby v beznem OOP)

383
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 15:52:51 »
Fakt nechápu, co tu řešíte. Když vemu ten úžasný Python, tak pokud mám methodu:
Kód: [Vybrat]
def get_record(self, data):

Tak co ta metoda vrací? A co jí mám poslat? Fakt někdo chce takový jazyk používat na víc než na hraní a skriptíky?

To je prece popsane v dokumentaci k te funkci. Samotna znalost typu te k pochopeni funkce a jak ji pouzivat nepriblizuje nijak vic. I kdybys vedel, ze int je cislo, porad bez dokumentace nevis jake cislo a co znamena.  Ano, dynamicke jazyky se pouzivaji na vic veci, nez hrani se skriptiky.

Teoreticky. Prakticky treba kdyz mas getXs(), tak podle typu vis, zda mohou byt xka duplicitni (list vs. set).
V prvni rade to vim z dokumentace, v druhe rade k tomu opravdu nepotrebuji staticke typy.

Nepotrebujes, pomahaji. A to i pokud se bavime o ridke situaci, kdy dokumentace je 100%.

384
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 14:46:55 »
Fakt nechápu, co tu řešíte. Když vemu ten úžasný Python, tak pokud mám methodu:
Kód: [Vybrat]
def get_record(self, data):

Tak co ta metoda vrací? A co jí mám poslat? Fakt někdo chce takový jazyk používat na víc než na hraní a skriptíky?

To je prece popsane v dokumentaci k te funkci. Samotna znalost typu te k pochopeni funkce a jak ji pouzivat nepriblizuje nijak vic. I kdybys vedel, ze int je cislo, porad bez dokumentace nevis jake cislo a co znamena.  Ano, dynamicke jazyky se pouzivaji na vic veci, nez hrani se skriptiky.

Teoreticky. Prakticky treba kdyz mas getXs(), tak podle typu vis, zda mohou byt xka duplicitni (list vs. set).

385
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 14:36:38 »
- Bezpečnost? To je jen iluze, která není ničím podložena.
- Možnost refaktorovat je stejná. Nevidím výhodu statického typování.
- Lepší code completion je jen dáno konkrétním použitým IDE. Ve Vimu je to jedno, tam vítězí dynamické typování.

Dynamicky typovaný jazyk se lépe čte, vlastně ke čtení ty typy ani nepotřebuji. Hodí se do hlavičky metod a funkcí - tam je dávám, protože programuji proti rozhraní, které je vyžaduje.

Ze nepouzivas IDE je ciste tvuj problem. Rozdil je v tom, ze IDE se statickym typovanim moznost ma, bez ne.

Bezpecnost samozrejme neni zadna iluze. Neni stoprocentni, ale pomerne dost chyb se proste udelat neda (nebo jen za cenu urciteho na prvni pohled patrneho nasili)

Refaktoring meles porad dokola a porad spatne. Mas-li dve metody stejneho jmena v ruznych hierarchiich, tak bez statickeho typovani neudelas rename jen jedne z nich. Trivialni priklad. Ze jsi v refaktorovani skoncil u regexpu je opet jen tva omezenost.

386
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 13:45:14 »
Fakt nechápu, co tu řešíte. Když vemu ten úžasný Python, tak pokud mám methodu:
Kód: [Vybrat]
def get_record(self, data):
Tak co ta metoda vrací? A co jí mám poslat? Fakt někdo chce takový jazyk používat na víc než na hraní a skriptíky?
Tak za prvé by měla mít metoda dokumentační komentář a za druhé se dají přidat typy do signatury. https://docs.python.org/3/library/typing.html
Proč by ho měla mít? Když se dobře jmenuje, tak přesně víš, co dělá. Může ho mít, ale nevím, proč bych do něj měl dávat typ?

A proč bych je tam přidával, když tu všichni píšou, že nejsou potřeba?

Jen mě to zajímá, fakt do toho nechci rýt. Dynamické typování zřejmě žádné výhody nemá a celé tohle vlákno to akorát potvrzuje. Takže bych rád věděl, jak to funguje a jak právě dynamičtí programátoři přemýšlí a jak fungují. Třeba bych tomu přišel na chuť taky. Pokud ale nevím, co posílat za typy, tak bohužel v tom dělat neumím.

Té metodě pošleš data a vrátí record. Jak prosté, typy ani signatury k tomu nejsou potřebné.

Celé toto vlákno je o tom, že statické typování nemá žádné výhody proti dynamickému - snad jen výkonnostní. Pokud opravdu potřebuji výkon, použiji Fortan, kde ty statické typy mám.

Jenom vykonost. A bezpecnost. A moznost refaktorovat s podporou nastroju. A lepsi code completion. A snazsi TDD.

Co vlastne nam ti Rimane prinesli?

387
Vývoj / Re:Co si myslíte o OOP?
« kdy: 04. 01. 2019, 09:48:56 »
Na co v dynamicky typovaných jazycích stačí jedna metoda, ve staticky typovaných potřebuješ třeba tři přetížené. Například pokud potřebuješ sort pro integer, float nebo string.

Ale ne. Dle principu sebeodpovědnosti objektu každý objekt definuje uspořádání (např. isLessThan:), metodě sort už pak stačí je obecně a polymorfně ověřovat pro jednotlivé páry, aniž by o nich musela cokoliv vědět.

Dokud ti staci jedno usporadani...

388
Vývoj / Re:Co si myslíte o OOP?
« kdy: 30. 12. 2018, 20:01:01 »
Me by zajimal ten Hadoop (bez ironie). Rozvedl bys to?
Mě taky. Dneska alternativy jsou (minimálně znám Spark a Flink), ale ty jsou IIRC pozdějšího data.
Nejen pozdejsi, ale v produkci typicky navic nad Hadoopem (resp. nad HDFS a YARNem).

389
Hardware / Re:Jaký notebook do 40 tisíc bez DPH?
« kdy: 30. 12. 2018, 18:17:37 »
Navic tam byva nvidia...

390
Ked porovnam kolko je na trhu Java a kolko C#, tak C# uz davno predbehol Javu, je modernejsi.

Jako vazne? To studujes na nejkem .NET foru?

Stran: 1 ... 24 25 [26] 27 28 ... 177