Python - zbožňovaný lidmi?

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #105 kdy: 15. 09. 2017, 22:12:17 »
Utility class ve většině případů nedávají smysl, neboť třída je tím degradována na namespace a z metod se stanou obyčejné funkce.

Ano, to je pravda, jenže v reálu potřeba takových funkcí, které se přitom nedají nikde moc smysluplně ukotvit, prostě vzniká.

Co to udělá, když bude babička psát na ntb klávesnici a ťukání čísel jí chvíli trvá? To jí to mezi každou číslicí spočítá a nabídne odeslat nesmysl?

Spočte se jí výsledek z toho, co prozatím napsala a přitom může psát dál. K odeslání se jí nic nenabízí - formulář odešle ona klikem na odesílací tlačítko, ale jde o to, aby před odesláním viděla výsledek toho výpočtu.

Chápu, že tohle ve wicketu není jednoduché, ale upřímně jsem nějak nepochopil, proč to tak komplikovat.

Zadání není komplikované, zadání je naopak velmi přímočaré. Z hlediska UX:

1) Zadám číslo / čísla
2) Zkontroluju výsledek, který se automaticky ukáže, případně potvrdím, že ta nesmyslná čísla jsou opravdu OK
3) Odešlu formulář

Plést do toho nějaké explicitní odeslání formuláře uživatelem pro spočtení výsledku a kontrolu je z hlediska UX právě komplikace a nežádoucí.

Že je to komplikované udělat ve Wicketu není problém zadání, ale omezení architektury/filozofie, na které staví Wicket.

Mně se právě možnost vytváření vlastních komponent s troškou JS líbí.

Tak to děláme. Jenže tady je potřeba v případě určitého výsledky vytvořit tooltip, který má button, který nastavuje nějaký flag v modelu. A tooltip i button mají být už existující komponenty na úrovni Wicketu, mající své bells and whistles, a ty z JS prostě nevytvořím. Takže tam musí být postback, který to celé komplikuje.

Nicméně pokud vedení rozhodlo, že bude SPA, bude SPA. Mám asi výhodu, že mi do výběru technického řešení nikdo nekecá... Držím palce.

Mě taky do technického řešení nikdo nekecá. Naopak, tu SPA tlačím spíš já, protože narážíme na omezení vyplývající z architektury, na které je Wicket postavený. Příklad viz výše :)



JSH

Re:Python - zbožňovaný lidmi?
« Odpověď #106 kdy: 15. 09. 2017, 22:18:36 »
Citace
Mixiny mi také nedávají moc smysl. Asi tak, jako kdyby člověk, který umí skákat, byl současně žábou jenom proto, že žába umí také skákat.

Jako tobě nedává smysl, že člověk i žába je zároveň "skákající živočich"?

To by bylo v případě, kdyby třídy člověk a žába dědily ze třídy "skákající živočich". V této podobě by to mohlo být v pořádku.

Mixiny to však říkají naopak, že skákající člověk je současně člověkem i žábou.

Operátor "je" není komutativní. Vlevo je potomek, vpravo je předek.
Vůbec nechápu, odkud jsi vzal to "zároveň človekem a žábou". Co z toho je vůbec ten mixin? Mixin je přílepek, který sám za sebe nemá moc smysl. Je to rozšíření něčeho jiného. Takže "Skákající" nebo třeba "Kvákající" by mohl být mixin pro vylepšení nějakého živočicha co to v základu neumí.

Skákající člověk pak bude zároveň člověk a skákající něco (pro kód který zajímá jen rozhraní toho mixinu).

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #107 kdy: 15. 09. 2017, 22:35:49 »
Vůbec nechápu, odkud jsi vzal to "zároveň človekem a žábou". Co z toho je vůbec ten mixin? Mixin je přílepek, který sám za sebe nemá moc smysl. Je to rozšíření něčeho jiného. Takže "Skákající" nebo třeba "Kvákající" by mohl být mixin pro vylepšení nějakého živočicha co to v základu neumí.

Skákající člověk pak bude zároveň člověk a skákající něco (pro kód který zajímá jen rozhraní toho mixinu).

To bude asi tím, že jsem s mixiny nikdy nedělal, i když je PHP má. Aplikace se tím dá docela slušně zašmodrchat, čemuž se vyhýbám. Ani nevím, k čemu bych ty mixiny mohl použít. Asi k ničemu.

JSH

Re:Python - zbožňovaný lidmi?
« Odpověď #108 kdy: 15. 09. 2017, 22:56:32 »
To bude asi tím, že jsem s mixiny nikdy nedělal, i když je PHP má. Aplikace se tím dá docela slušně zašmodrchat, čemuž se vyhýbám. Ani nevím, k čemu bych ty mixiny mohl použít. Asi k ničemu.
Já je znám spíš v podobě v jaké se vyskytují v C++. Přidávám tak věci jako http://www.boost.org/doc/libs/1_60_0/libs/smart_ptr/intrusive_ref_counter.html nebo http://www.boost.org/doc/libs/1_64_0/doc/html/boost/intrusive/list_base_hook.html.
Bez duck typingu to IMO není ono, takže jsem omezený na šablony. V Pythonu to bude výrazně použitelnější, ale s ním moc nedělám.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #109 kdy: 15. 09. 2017, 22:56:41 »
příklad mixinu třeba https://github.com/alexprengere/reprmixin . Implementuje repr vracející vyevalovatelný konstruktor s parametry namísto defaultního repr s id objektu.

Mixiny v sqlalchemy http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/mixins.html se používají třeba pro implementace často se opakujících sloupců.

IMHO docela užitečné, jestli je to z filosofického hlediska správně, je mi ukradené. V pythonu se dá podobných efektů docílit více způsoby, ale tento je asi nejblíže statickým jazykům a kompatibilní se statickým typováním.


gll

Re:Python - zbožňovaný lidmi?
« Odpověď #110 kdy: 15. 09. 2017, 23:07:19 »
Mixiny v sqlalchemy http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/mixins.html se používají třeba pro implementace často se opakujících sloupců.

*definice sloupců

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #111 kdy: 15. 09. 2017, 23:59:12 »
Mixiny v sqlalchemy http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/mixins.html se používají třeba pro definice často se opakujících sloupců.

Aha, na to používám skládání samostatných objektů do slovníku, a to i v případě, že se sloupec neopakuje.

Pavel Tišnovský

Re:Python - zbožňovaný lidmi?
« Odpověď #112 kdy: 16. 09. 2017, 15:26:40 »
Otvorim stranku zive.cz a tam clanok Programátoři zbožňují Python, hlásají statistiky Stack Overflow.

Lepší než stránka zive.cz je tento článek https://stackoverflow.blog/2017/09/06/incredible-growth-python/ . Můj osobní (a určitě chybný) závěr je ten, že v bohatších zemích se investuje do vývoje nových věcí okolo AI, machine learningu, big data atd. a tam má Python svůj velký podíl, kdežto v (relativně!!!) chudších státech jede udržovačka stávajících SW, klasické korporátní vývojové cykly atd. a tam je to Java, C++...

Asi nejvíc mne zaujal https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/tag_growth_scatter-1-1-1024x896.png z něhož je vidět, že Pythonu roste popularita přesto, že už je populární až až :-) Na druhou stranu Rust a Go rostou víc, ale z menšího základu.

Re:Python - zbožňovaný lidmi?
« Odpověď #113 kdy: 16. 09. 2017, 16:14:54 »
Asi nejvíc mne zaujal https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/tag_growth_scatter-1-1-1024x896.png z něhož je vidět, že Pythonu roste popularita přesto, že už je populární až až :-) Na druhou stranu Rust a Go rostou víc, ale z menšího základu.
Moc pěknej a zajímavej graf! A ten podtitulek: "TypeScript had a growth rate of 142%"! ;)

DotNetGuy

Re:Python - zbožňovaný lidmi?
« Odpověď #114 kdy: 16. 09. 2017, 16:50:10 »
Asi nejvíc mne zaujal https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/tag_growth_scatter-1-1-1024x896.png z něhož je vidět, že Pythonu roste popularita přesto, že už je populární až až :-) Na druhou stranu Rust a Go rostou víc, ale z menšího základu.
Moc pěknej a zajímavej graf! A ten podtitulek: "TypeScript had a growth rate of 142%"! ;)

Protože lidi konečně zjistili, že použít na jakejkoliv větší projekt jazyk bez pořádnejch typů je průser.

Nezkoušel někdo z vás DotVVM framework pro C#?

Aoidhghean

Re:Python - zbožňovaný lidmi?
« Odpověď #115 kdy: 16. 09. 2017, 17:21:10 »
Asi nejvíc mne zaujal https://zgab33vy595fw5zq-zippykid.netdna-ssl.com/wp-content/uploads/2017/09/tag_growth_scatter-1-1-1024x896.png z něhož je vidět, že Pythonu roste popularita přesto, že už je populární až až :-) Na druhou stranu Rust a Go rostou víc, ale z menšího základu.
Moc pěknej a zajímavej graf! A ten podtitulek: "TypeScript had a growth rate of 142%"! ;)

Protože lidi konečně zjistili, že použít na jakejkoliv větší projekt jazyk bez pořádnejch typů je průser.
Pak je ale otázka, co to jsou “pořádné typy”. Silně zkriplený systém jako v Javě, kompromis jako v C++, flexibilní systém à la Haskell nebo v ničem neomezující jako má třeba Coq?

PetrM

Re:Python - zbožňovaný lidmi?
« Odpověď #116 kdy: 17. 09. 2017, 06:59:31 »
Web FE nedělám, tak jenom krátce:

- Hodně problémů je daných tím, že dneska programuje pomalu i ten, co by před 25 lety pohořel už jenom na spuštění Norton Commanderu z příkazové řádky.
- Pokud jde o typy, tak tam je jasno. Je to otrava. Ale ideální stav je, když přímo kompilátor vypíše, že je něco špatně, a odmítne vypotit binárku. Větší otrava je totiž hledat, kde že to do proměnné s teplotou člověk cpe tlak. Jednodušší je říct kompilátoru, že tohle není obecný číslo, ale teplota a pokud tam naleju něco jinýho, tak ať dá vědět. A současně s tím mu můžu dát vědět, jak velkou paměť má pro tu danou věc alokovat,... Proto jsem zastánce silné typové kontroly. A ideálem je možnost s typem svázat i konverzní rutiny pro jiný typy (v C++ přetížení operátoru =), předdefinovat defaultní hodnoty, pojmenovat významný hodnoty pro ladění (Null, NaN, EmptyList,..). A využití v šablonách, samozřejmě, jinak se kód zbytečně duplikuje.

Re:Python - zbožňovaný lidmi?
« Odpověď #117 kdy: 17. 09. 2017, 07:24:33 »
Jenom na okraj, je třeba rozlišovat dynamické a statické typování. Python je silně dynamicky typovaný jazyk. V praxi se hodí oboje. Občas třeba šílím při tvorbě generických tříd ve staticky typovaném jazyku a přemýšlím, že bych tam vlastně chtěl mít možnost dynamických typů. Jindy si statické typy pochvaluji, protože mám přehled a výborně se to refaktoruje.

Takže ono to je zase jako se vším. Praxe není černobílá, a je třeba se vždy rozhodnout dle konkrétního problému který se má řešit.

Chybný přístup je imho vybrat si nějaký jazyk a ten cpát na všechno. Přednost má mít zadání úkolu, jeho analýza a z té pak vyplyne co se hodí použít.

Chytrej programátor se učí používat více jazyků a pečlivě volí, který zrovna použije.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #118 kdy: 17. 09. 2017, 10:38:14 »
Pokud jde o typy, tak tam je jasno. Je to otrava. Ale ideální stav je, když přímo kompilátor vypíše, že je něco špatně, a odmítne vypotit binárku. Větší otrava je totiž hledat, kde že to do proměnné s teplotou člověk cpe tlak. Jednodušší je říct kompilátoru, že tohle není obecný číslo, ale teplota a pokud tam naleju něco jinýho, tak ať dá vědět. A současně s tím mu můžu dát vědět, jak velkou paměť má pro tu danou věc alokovat,... Proto jsem zastánce silné typové kontroly. A ideálem je možnost s typem svázat i konverzní rutiny pro jiný typy (v C++ přetížení operátoru =), předdefinovat defaultní hodnoty, pojmenovat významný hodnoty pro ladění (Null, NaN, EmptyList,..). A využití v šablonách, samozřejmě, jinak se kód zbytečně duplikuje.

Pro silnou typovou kontrolu za běhu jsou v Pythonu dekorátory. Záleží však jen na vývojáři, jak moc je chce využívat - nejsou totiž povinné.

Staticky můžeš dělat typovou kontrolu jen v testech, neboť Python je interpretr a v době překladu vůbec nemusí tušit, do jaké podoby se aplikace sestaví za běhu.

Ovšem ani kompilované jazyky na tom nejsou o mnoho lépe, například v Javě projde přes statickou typovou kontrolu v pohodě i null a v navazujícím kódu za běhu vyhazuje oblíbené výjimky NullPointerException.

Re:Python - zbožňovaný lidmi?
« Odpověď #119 kdy: 17. 09. 2017, 10:40:29 »
Tohle nema s interpretovany/kompilovany nic spolecneho.