Python - zbožňovaný lidmi?

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #60 kdy: 13. 09. 2017, 13:32:58 »
...

Jak říkám, typování je pro mě klíčové, nemám rád tápání, co má být jaký typ. Když už to nehlídá (neexistující) kompilátor, tak aby to hlídalo alespoň IDE.

Pro Scalu je dost dobra IntelliJ IDEA.

Nové jazyky jsou fajn a z mého pohledu důležité jako inspirace pro další vývoj těch dinosauřích (za mě java a python). Ale když něco dělám, tak jednak chci kvalitní knihovny na vše možné, jednak chci delší použitelnost a znovuvyužitelnost kódu, než jen pár let, kdy je novinka zrovna in. Nedělám to jen tak na vyzkoušení, ten přístroj bude muset šlapat spoustu let a občas bude potřeba jeho software upravovat/rozšiřovat/aktualizovat na nové knihovny/překladač/JVM atd. Stejně jako všechny živé a používané systémy. Takže ani v Kotlinu, ani ve Scale své projekty psát nebudu, nejsou to zápočťáky, které pak zahodím. Obávám se tedy, že se k nim hned tak nedostanu, času (proflákaného diskusemi na netu) málo...

Scala bezi (nejen) nad JVM a muzete pouzivat vsechny Java knihovny. Ma komercni podporu a delaji se v tom i velke veci (neco jsem nasel treba tu - https://alvinalexander.com/scala/whos-using-scala-akka-play-framework), takze toho, ze tu nebude za 5/10 let bych se fakt nebal. Je teda fakt cool-in novinka, existuje "jen" 13 let ;D.

Nevim, jak je na tom Kotlin s rozsirenosti, ale tipl bych, ze IDE bude stejne namakane jako pro Javu, protoze to delaji borci z Jet Brains. Osobne mi ale prijde, ze pridava prilis malo oproti Jave (podobne jako treba Groovy), z meho pohledu se nestoji za to ten jazyk ani ucit, kdyz me to v podstate nikam neposune.

PS: I kdyby to zarizeni tady bylo 15/20 let, tak je dost mozne, ze se nebude upgradovat HW nebo ze nebude potreba upgradovat verzi JVM/jazyka/knihoven, protoze nikdo nebude chtit resit (platit opravy) breaking changes mezi verzemi (to, pokud vim, nastavalo i u te megakonzervativni Javy).


Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #61 kdy: 13. 09. 2017, 13:58:29 »
Z dokumentace "A behavior that generates an AJAX update callback at a regular interval.". V době podpory websocketů ve všech prohlížečích si elegantní řešení představuji jinak.

Předpokládám, že i tys pochopil, že gró příkladu je v architektuře komponent v jazyce a ne v tom, jakou technologií komunikuje prohlížeč. Přes WS by to šlo podobně.

A mimochodem, podpora WS v prohlížečích sice je, ale s podporou na straně serverů (konkrétně WebLogicu) jsme měli trochu trable. Ale nakonec jsme to rozběhli.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #62 kdy: 13. 09. 2017, 14:35:00 »

Mě to tedy moc elegantní nepřijde, a kód stylu

Citace
if isinstance(box, TimedClose):
            box.activateTimer()

mi naopak přijde těžce neelegantní (slušně řečeno). Napsat totéž skládáním mi nepřijde o nic horší.

K zobrazování používám komponenty odkazované knihovny remi (komunikuje přes websockety, komponenty se v pythonu tváří jako normální lokální GUI). Zobrazování boxu jde mimo něj, přehazují se v nadřazených boxech. Ale současně se box umí sám dát do pozadí (požádat o přehození), když nemá nějakou vnitřní událost (kliknutí, které by interval opět prodloužilo - restartovalo timer). Proto se ten timer zapíná zvenku, vlastní box ani pořádně neví, že jej něco zobrazilo (ale samozřejmě si to umí zjistit).

Potřebuju, aby boxy mezi zobrazením žily, protože se na pozadí pořád aktualizují příchozími zprávami od přehrávacích modulů, i když nejsou právě zobrazené. Důvod je také jednoduchý - tohle je prototyp, finální GUI poběží na STM32 v ChibiOS, kde budou ty datové struktury vytvářené staticky. Proto to potřebuju co nejbližší finálnímu řešení v Cčku (tam to ve structech poskládám pointery na statické funkce).

Neříkám, že to nejde jinak. Ale zrovna pro tenhle účel se mi mixin hodí.

V javě bys to interfacem udělal úplně stejně použitím instanceof, abys ses dostal k jeho metodě activateTimer. Akorát tu bys musel napsat ručně s tím skládáním. Takhle už má objekt tu metodu rovnou a je naplněná kódem. Je to podobné defaultním metodám interfaců v javě, jen daleko mocnější, protože si to drží i stav.

Citace
Mimochodem, v Java web frameworku Wicket bych pro podobnou věc použil něco čemu říkají "Behavior".

Ve wicketu dělám takřka každý den, takže vím, co umí a jaké má záludnosti. A že jich zrovna není málo :-) Ale to už je jiné téma...

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #63 kdy: 13. 09. 2017, 14:49:18 »
Z dokumentace "A behavior that generates an AJAX update callback at a regular interval.". V době podpory websocketů ve všech prohlížečích si elegantní řešení představuji jinak.

Předpokládám, že i tys pochopil, že gró příkladu je v architektuře komponent v jazyce a ne v tom, jakou technologií komunikuje prohlížeč. Přes WS by to šlo podobně.

A mimochodem, podpora WS v prohlížečích sice je, ale s podporou na straně serverů (konkrétně WebLogicu) jsme měli trochu trable. Ale nakonec jsme to rozběhli.

nic zajímavého na tom nevidím a dělá to něco jiného než mixiny. Vy pouze změníte stav objektu, zatímco přidáním mixinu změníte i jeho typ.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #64 kdy: 13. 09. 2017, 14:51:04 »
Pro Scalu je dost dobra IntelliJ IDEA.

U Scaly bych se nebál, ale zkus si hlídat typy v Pythonu Pycharmem. IntelliJ samozřejmě na javu používáme.

Scala bezi (nejen) nad JVM a muzete pouzivat vsechny Java knihovny. Ma komercni podporu a delaji se v tom i velke veci (neco jsem nasel treba tu - https://alvinalexander.com/scala/whos-using-scala-akka-play-framework), takze toho, ze tu nebude za 5/10 let bych se fakt nebal. Je teda fakt cool-in novinka, existuje "jen" 13 let ;D.

OK, bude. Leč podpora/know-how v porovnání s Javou a naopak co se tím získá... ale to už je jiné téma, mimo python.

Citace
PS: I kdyby to zarizeni tady bylo 15/20 let, tak je dost mozne, ze se nebude upgradovat HW nebo ze nebude potreba upgradovat verzi JVM/jazyka/knihoven, protoze nikdo nebude chtit resit (platit opravy) breaking changes mezi verzemi (to, pokud vim, nastavalo i u te megakonzervativni Javy).

To zařízení je můj domácí projekt, moc kusů nevznikne a budu je muset udržovat/upgradovat sám. Změny budou, protože třeba přijdou nové hudební služby, které tam chci mít podporované. Pro mě je jeho rozsah na hraně Pythonu. Ale každý to může vidět jinak, má jiný styl práce.

Ke změnám Javy - upgradovali jsme náš systém během let od JVM 1.4 po 1.8 a žádné zásadní problémy nevznikaly. Co si pamatuji, tak problémy dělala nově zavedená klíčová slova použitá ve starších jarech jako identifikátory a nějaké drobnosti kolem generik. Ale to samozřejmě může mít každý projekt jinak.


Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #65 kdy: 13. 09. 2017, 15:11:28 »
ys to interfacem udělal úplně stejně použitím instanceof, abys ses dostal k jeho metodě activateTimer. Akorát tu bys musel napsat ručně s tím skládáním.

Já bych to nedělal skládáním ale třeba něčím jako:

Citace
if (component instanceof ITimedHide) {
  TimerFactor.startTimer((ITimedHide)component);
}


Ve wicketu dělám takřka každý den, takže vím, co umí a jaké má záludnosti. A že jich zrovna není málo :-)

Mě tedy přijde jako největší záludnost Wicketu, že k problém přistupuje z úplně opačného konce, než různé PHP / JSP / JSF / ... Takže když ho zkusí použít nějaký "zkušený web developer" s tímhle pozadím, tak je úplně ztracený a nadává, jak to funguje hrozně. Ale ve chvíli kdy vím, jak Wicket funguje, a umím ho používat (nedělám věci jako "add new UserPanel("userpanel", new Model(getModelObject().getUser()))), tak je velmi nezáludný - už si ani nevzpomínám, kdy mě naposledy vypekl a to v něm dělám opravdu denně.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #66 kdy: 13. 09. 2017, 15:26:44 »
Já bych to nedělal skládáním ale třeba něčím jako:

Citace
if (component instanceof ITimedHide) {
  TimerFactor.startTimer((ITimedHide)component);
}

v čem je to lepší než

Příklad, kde jsem to využil (neříkám, že by to nešlo jinak, v javě se to řeší např. kompozicí):
...

Díky za osvětlení. Mě to tedy moc elegantní nepřijde, a kód stylu

Citace
if isinstance(box, TimedClose):
            box.activateTimer()

mi naopak přijde těžce neelegantní (slušně řečeno). Napsat totéž skládáním mi nepřijde o nic horší.

?

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #67 kdy: 13. 09. 2017, 15:30:48 »
Já bych to nedělal skládáním ale třeba něčím jako:

Cest je vždy více. Mně osobně se víc líbí, když ten timer je přímo součástí komponenty, než když se někde bokem drží seznam živých timerů pro jednotlivé komponenty. Což právě mixin umožňuje - metody i fieldy se stávají součástí toho výsledného objektu.

Citace
tak je velmi nezáludný

Rozhodně se s ním musí dobře umět. I pak je třeba hledání chyby dost pracné, protože ve stack trace nic není  a jeho debug hlášky nejsou zrovna plné informací. A že se v něm udělá chyba velice snadno, stačí se třeba klasicky příliš brzy odkázat na model object.

Nicméně i pro nás je to klíčová technologie, velice robustní, snadno a spolehlivě se v něm refaktoruje (když se nepoužívají PropertyXXX humusy, neustále je z legacy kódu při každé příležitosti vyhazujeme). Být tak takhle robustní python... tak v něm nikdo nedělá, protože by většině začátečníků hráblo :-)

atarist


mikrom

Re:Python - zbožňovaný lidmi?
« Odpověď #69 kdy: 13. 09. 2017, 23:08:25 »
...
Vlastne z toho stackoverflow vychadza, z dotazov ku konkretnemu jazyku. C# a C/C++ klesa, ako uvadzaju v clanku. Asi preto, ze vela ludi to nezvlada a na robenie malych programcekov im staci python, ktory sa dostal aj do popredia hlavne kvoli IoT (raspberry pi). Predstavit si programovanie velkych enterprise rieseni v pythone, to je na slucku (povraz).
...
To asi chces tym naznacit ze iba programatori nizsej urovne pouzivaju Python?
To je totalna blbost. Pocas studia som musel programovat v roznych jazykoch ale az ked som prisiel do praxe objavil som Python (R-Pi vtedy nebolo). To co by som robil v C-cku mozno niekolko tyzdnov som v Pythone spravil za par dni - a myslim, ze ovela elegantnejsie. A presne na to Python je: je to genialny jazyk, ktory umoznuje robit narocne veci velmi jednoducho: vdaka svojej  jednoduchosti a vdaka obrovskemu mnozstvu dostupnych modulov.
Dotazy k C# klesaju mozno nie preto, ze vela ludi to nezvlada, ale asi je stale menej ludi ochotnych v tom nieco robit. Preco by som mal pouzivat platene MS technologie viazane na jednu platformu ked mam aj iny vyber a zadarmo. Radsej si zoberiem nieco multiplatformne , napriklad Javu, alebo napr. ten Python.

DotNetGuy

Re:Python - zbožňovaný lidmi?
« Odpověď #70 kdy: 13. 09. 2017, 23:36:24 »
...
Vlastne z toho stackoverflow vychadza, z dotazov ku konkretnemu jazyku. C# a C/C++ klesa, ako uvadzaju v clanku. Asi preto, ze vela ludi to nezvlada a na robenie malych programcekov im staci python, ktory sa dostal aj do popredia hlavne kvoli IoT (raspberry pi). Predstavit si programovanie velkych enterprise rieseni v pythone, to je na slucku (povraz).
...
To asi chces tym naznacit ze iba programatori nizsej urovne pouzivaju Python?
To je totalna blbost. Pocas studia som musel programovat v roznych jazykoch ale az ked som prisiel do praxe objavil som Python (R-Pi vtedy nebolo). To co by som robil v C-cku mozno niekolko tyzdnov som v Pythone spravil za par dni - a myslim, ze ovela elegantnejsie. A presne na to Python je: je to genialny jazyk, ktory umoznuje robit narocne veci velmi jednoducho: vdaka svojej  jednoduchosti a vdaka obrovskemu mnozstvu dostupnych modulov.
Dotazy k C# klesaju mozno nie preto, ze vela ludi to nezvlada, ale asi je stale menej ludi ochotnych v tom nieco robit. Preco by som mal pouzivat platene MS technologie viazane na jednu platformu ked mam aj iny vyber a zadarmo. Radsej si zoberiem nieco multiplatformne , napriklad Javu, alebo napr. ten Python.

https://docs.microsoft.com/en-us/dotnet/core/index

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #71 kdy: 14. 09. 2017, 07:12:43 »
v čem je to lepší než

Já neříkám, že je to lepší. Já říkám, že to není horší. Měl to být příklad, který ukazuje, jak lze díky mixinům v Pythonu psát lépe než v Javě, která je nemá a podle mě neukazuje nic.

Cest je vždy více. Mně osobně se víc líbí, když ten timer je přímo součástí komponenty, ...

To mě právě přijde jako hrozná prasárna (no offense), takhle cpát funkcionalitu přímo do třídy. Mnohem lepší mi přijde mít timer jako samostatný objekt s vlastní úlohou/odpovědností (návrhový princip "single responsibility"). A způsob jak to dělá Wicket přes behaviory mi přijde přesně to pravé ořechové.

Rozhodně se s ním musí dobře umět. I pak je třeba hledání chyby dost pracné, protože ve stack trace nic není  a jeho debug hlášky nejsou zrovna plné informací. A že se v něm udělá chyba velice snadno, stačí se třeba klasicky příliš brzy odkázat na model object.

Zajímavé. Dělám na poměrně velkém Wicket projektu, kde v něm dělá 5-7 lidí (někteří ne fulltime) a nikdo z nás podobné problémy nemá. Před několika měsíci k nám nastoupila dívčina co Wicket nikdy neviděla, dostala ode mne krátký (1-2 hodiny) "crash course" a vplula do něj úplně v pohodě. Nevím, že by měla nějaké závažnější problémy. Jediné co mě napadá:

- Pokud uděláte naráz velkou stránku s hodně komponentami a nesedí vám struktura HTML versus Java komponenty, tak se (za určitých okolností) opravdu hůř dohledává, kde je v těch strukturách chyba. Řešení je to testovat už po menších kouscích.

- Když přidáte do AjaxRequestTargetu komponentu, která nemá odpovídající HTML tag, tak ji to nerefreshne (tady je zjevné proč to v principu nejde, moc se mi to neděje a když se to stande, tak najít problém bývá jednoduché)

- Když schováte pomocí <wicket:enclosure /> komponentu, na kterou je nabindovaný AJAX, tak Wicket ten AJAX stejně vygeneruje a pak jsou v debugu hlášky, že nenašel komponentu na kterou se nabindovat. To je opravdu lehce zrada, i když aplikace funguje i tak.

Ale na žádný problém typu "brzy odkázat na model object" se nepamatuji. Můžete dát nějaký příklad?

stefan

Re:Python - zbožňovaný lidmi?
« Odpověď #72 kdy: 14. 09. 2017, 08:23:33 »
To asi chces tym naznacit ze iba programatori nizsej urovne pouzivaju Python?
To je totalna blbost. Pocas studia som musel programovat v roznych jazykoch ale az ked som prisiel do praxe objavil som Python (R-Pi vtedy nebolo). To co by som robil v C-cku mozno niekolko tyzdnov som v Pythone spravil za par dni - a myslim, ze ovela elegantnejsie. A presne na to Python je: je to genialny jazyk, ktory umoznuje robit narocne veci velmi jednoducho: vdaka svojej  jednoduchosti a vdaka obrovskemu mnozstvu dostupnych modulov.
Dotazy k C# klesaju mozno nie preto, ze vela ludi to nezvlada, ale asi je stale menej ludi ochotnych v tom nieco robit. Preco by som mal pouzivat platene MS technologie viazane na jednu platformu ked mam aj iny vyber a zadarmo. Radsej si zoberiem nieco multiplatformne , napriklad Javu, alebo napr. ten Python.
V podstate siahaju po nom zaciatocnici, ktori nemaju skusenosti s programovanim. OK, kazdy niekde zacinal. Ale vacsinou to byva tak, ze sa pytaju na stackoverflow, kopiruju a kopiruju. Dnes uz nie je modne sa nad niecim zamyslat, dnes je IN hodit to na stackoverflow a cakat, kym to niekto za mna vyriesi.
Ja dnesny trend vidim tak, ze vela ludi vidi v IT obrovske peniaze, pretoze v IT je nedostatok ludi a ako programator si dokazete prist na slusne prachy, aj ked su profesie (napr. zubar) vynasajuce viacej. Takze chytia knizku a naucia sa syntax, odskusaju si to, a z byvaleho psychologa je zrazu junior tester! Znamy nastupil do firmy, kde sefku testerov robi zena, ktora vystudovala biologiu, bola na urade prace a vyuzila moznost rekvalifikacie (nejake kurzy ohladom testovania), ktory zaplatil urad prace. Takisto tam brigaduje dievca, ktore studuje antropologiu :). Zacinam mat pocit, ze programovanie sa zacina pretvarat na primitivnu cinnost.

PS: Neviete co je to s dnesnymi technologiami? Vcera pustim starsi lenovo notebook, pustim prehliadac chrome a pri prezerani stranok sa to zasekava, mrzne, niekedy to spomalene zobrazuje. To je ten pokrok dnesnych technologii, ze aj obycajna stranka nedokaze fungovat na starsom PC a potrebujete k tomu novy HW?

tisnik

Re:Python - zbožňovaný lidmi?
« Odpověď #73 kdy: 14. 09. 2017, 09:29:46 »
To asi chces tym naznacit ze iba programatori nizsej urovne pouzivaju Python?
V podstate siahaju po nom zaciatocnici, ktori nemaju skusenosti s programovanim.

Ty jsi ale napsal "jen" implikaci, to neni zadna odpoved na co se ptal mikrom. Rikas jen "Python pouzivaji zacatecnici" -> "python bude jazyk pre amaterov, neskusenych, ktori sa neustale na nieco dotazuju na stackoverflow" (cituju tvuj prvni post). Co to rika o Pythonu? vubec nic

Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #74 kdy: 14. 09. 2017, 09:46:39 »
To asi chces tym naznacit ze iba programatori nizsej urovne pouzivaju Python?
To je totalna blbost. Pocas studia som musel programovat v roznych jazykoch ale az ked som prisiel do praxe objavil som Python (R-Pi vtedy nebolo). To co by som robil v C-cku mozno niekolko tyzdnov som v Pythone spravil za par dni - a myslim, ze ovela elegantnejsie. A presne na to Python je: je to genialny jazyk, ktory umoznuje robit narocne veci velmi jednoducho: vdaka svojej  jednoduchosti a vdaka obrovskemu mnozstvu dostupnych modulov.
Dotazy k C# klesaju mozno nie preto, ze vela ludi to nezvlada, ale asi je stale menej ludi ochotnych v tom nieco robit. Preco by som mal pouzivat platene MS technologie viazane na jednu platformu ked mam aj iny vyber a zadarmo. Radsej si zoberiem nieco multiplatformne , napriklad Javu, alebo napr. ten Python.
V podstate siahaju po nom zaciatocnici, ktori nemaju skusenosti s programovanim. OK, kazdy niekde zacinal. Ale vacsinou to byva tak, ze sa pytaju na stackoverflow, kopiruju a kopiruju. Dnes uz nie je modne sa nad niecim zamyslat, dnes je IN hodit to na stackoverflow a cakat, kym to niekto za mna vyriesi.
Ja dnesny trend vidim tak, ze vela ludi vidi v IT obrovske peniaze, pretoze v IT je nedostatok ludi a ako programator si dokazete prist na slusne prachy, aj ked su profesie (napr. zubar) vynasajuce viacej. Takze chytia knizku a naucia sa syntax, odskusaju si to, a z byvaleho psychologa je zrazu junior tester! Znamy nastupil do firmy, kde sefku testerov robi zena, ktora vystudovala biologiu, bola na urade prace a vyuzila moznost rekvalifikacie (nejake kurzy ohladom testovania), ktory zaplatil urad prace. Takisto tam brigaduje dievca, ktore studuje antropologiu :). Zacinam mat pocit, ze programovanie sa zacina pretvarat na primitivnu cinnost.

PS: Neviete co je to s dnesnymi technologiami? Vcera pustim starsi lenovo notebook, pustim prehliadac chrome a pri prezerani stranok sa to zasekava, mrzne, niekedy to spomalene zobrazuje. To je ten pokrok dnesnych technologii, ze aj obycajna stranka nedokaze fungovat na starsom PC a potrebujete k tomu novy HW?

Právě, že biologie může do IT přinést postupy, které už dávno objevila evoluce, nebo použil stvořitel. Zpětně programování zase může do biologie vnést simulační postupy. Aplikace biologie v astrofyzice zde http://www.osel.cz/9547-neuralni-site-potkavaji-einsteina-ve-vesmiru.html

Mě se líbilo C, a líbí se mi i Python. Profíka nedělá znalost konkrétního jazyka, ale schopnost používat optimální nástroje a postupy.