Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: stefan 12. 09. 2017, 08:23:55

Název: Python - zbožňovaný lidmi?
Přispěvatel: stefan 12. 09. 2017, 08:23:55
Otvorim stranku zive.cz a tam clanok Programátoři zbožňují Python, hlásají statistiky Stack Overflow. To ma nutilo sa zamysliet a dospiet k zaveru, ze python bude jazyk pre amaterov, neskusenych, ktori sa neustale na nieco dotazuju na stackoverflow. 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).
Prikladam link: https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx (https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx)
Název: Re:Python - zboznovany ludmi?
Přispěvatel: monty_python 12. 09. 2017, 08:42:25
Python je scriptovaci jazyk 3.5te generace. Tedy jde ruka v ruce s Perl, Ruby, JavaScript, PHP. Jeho urceni je tedy pevne dane - sluzby. Nebudes v nem psat operacni system a tedy ho nebudes porovnavat s kompilovanyma a linkovanyma jazykama jako C ci Java. Popularitu Pythonu lze vysvetlit boomem v IT a zvysenym nasazenim testeru s mensimi programatorkymi schopnostma. A prave v testingu se Python hojne pouziva.
Název: Re:Python - zboznovany ludmi?
Přispěvatel: Aoidhghean 12. 09. 2017, 09:00:28
Částečně to je jeho rozšířením v data science, nehledal bych v tom nic zvláštního.

Edit admin: Necitujte celé příspěvky, zhoršuje to čitelnost fóra.
Název: Re:Python - zboznovany ludmi?
Přispěvatel: trr 12. 09. 2017, 09:03:11
Predstavit si programovanie velkych enterprise rieseni v pythone, to je na slucku (povraz).
Prikladam link: https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx (https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx)

To pro Javu platí taky a programují se v ní enterprise systémy. ;D
Python ma více než solidní infrastruktutu pro simulace a výpočty a z velkých aplikaci je v něm udělaný třeba Poser (3D grafika)
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: stefan 12. 09. 2017, 09:13:01
Citace
To pro Javu platí taky a programují se v ní enterprise systémy.
tak radsej si zvolim C# alebo Javu ako Python na enterprise riesenie
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Neviditelný 12. 09. 2017, 09:29:51
A váš dotaz či informační hodnota tohoto příspěvku je jaká? Že se zrovna vám konkrétně Python nezdá? Na prototypování a menší či jednorázové projekty je to skvělý jazyk s knihovnami či vzorovými implementacemi doslova všeho, na co si vzpomenete. Oproti "velkým" jazykům je v něm méně obskurit a překombinovaných konstrukcí a tedy i méně možností, jak se střelit do nohy. Nesedí vám? Tak is pište si v čemkoliv jiném.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Kate 12. 09. 2017, 09:33:45
To ma nutilo sa zamysliet a dospiet k zaveru, ze python bude jazyk pre amaterov, neskusenych, ktori sa neustale na nieco dotazuju na stackoverflow.
Docela odvážné tvrzení, když k tomu máš jako důkaz jen počet dotazů. Jiný, z toho co kolem sebe poslední dobou vidím realističtější závěr je, že se Python prostě učí podstatně víc lidí než ostatní jazyky. A spousta nováčků znakem popularity je. Když se podívám na pracovní nabídky, tomu přívalu nováčků se také moc nedivím :)
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: stefan 12. 09. 2017, 09:58:11
Citace
A spousta nováčků znakem popularity je. Když se podívám na pracovní nabídky, tomu přívalu nováčků se také moc nedivím :)
Potom to aj tak vyzera, ze ano  8).
Mozno to svedci len o amaterizme dotycnych (minimalne pocet dotazov tomu nasvedcuje). C/C++ je tu uz velmi dlho, bol tu Basic, Delphi, Assembler a ludia, ktori s tym pracovali, nikdy nepisali na ziadne fora, aby im niekto vyriesil nieco, pretoze internet tu nebol a aj ked s odstupom casu prisiel, tak neboli fora typu stackoverflow. A take C/C++ sa udrzalo az dodnes a stale sa drzi.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: trr 12. 09. 2017, 10:10:08
Hele stefan jestli je populární, to nebo ono, na tom až tak nezáleží. Kdysi se internet na programování nevyužíval, jen proto, že nebyl. Kdyby byl, tak by ho využívali.
Programování není nic elitního, dneska se programovat učí tříleté děti a brzy bude nahrazené AI, protože 95% programování je čistá rutina. Já jsem znám lidi, kteří vyvíjejí realtime systémy a v životě nenapsali žádnou řádku kódu, C, C++, NET, Javu znají jen podle jména jazyka.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: stefan 12. 09. 2017, 10:38:56
to vie vzdy tak pobavit, ze coskoro bude programovanie nahradene AI :D. Uz ste ako ten Ivan Novy. Ty si nejaky siritel jeho tez? Ak ano, tak to ta lutujem. Este povedzte, ze aj dizajn spravi AI a mozno dostanete aj nobelovku :D
Název: Re:Python - zboznovany ludmi?
Přispěvatel: balki 12. 09. 2017, 10:47:17
Predstavit si programovanie velkych enterprise rieseni v pythone, to je na slucku (povraz).
Prikladam link: https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx (https://www.zive.cz/bleskovky/programatori-zboznuji-python-hlasaji-statistiky-stack-overflow/sc-4-a-189434/default.aspx)

To pro Javu platí taky a programují se v ní enterprise systémy. ;D
Python ma více než solidní infrastruktutu pro simulace a výpočty a z velkých aplikaci je v něm udělaný třeba Poser (3D grafika)

Java ma velmi dobru infrastrukturu na vytvaranie enterprise projektov, python ma ovela horsiu.

3D grafika je ina vec, ta sa robi lepsie v python.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Kate 12. 09. 2017, 10:48:50
Citace
A spousta nováčků znakem popularity je. Když se podívám na pracovní nabídky, tomu přívalu nováčků se také moc nedivím :)
Potom to aj tak vyzera, ze ano  8).
Mozno to svedci len o amaterizme dotycnych (minimalne pocet dotazov tomu nasvedcuje). C/C++ je tu uz velmi dlho, bol tu Basic, Delphi, Assembler a ludia, ktori s tym pracovali, nikdy nepisali na ziadne fora, aby im niekto vyriesil nieco, pretoze internet tu nebol a aj ked s odstupom casu prisiel, tak neboli fora typu stackoverflow. A take C/C++ sa udrzalo az dodnes a stale sa drzi.

Nepsali? Opravdu? Já si tedy pamatuji fóra plná dotazů na C/C++ a Delphi na Builder.cz :)
A ano, začátečník který se učí jazyk je většinou amatér. A často potřebuje poradit. Jenže spousta z nich amatéry nezůstanou, odněkud se berou i ti lidé co odpovídají a radí.
Dotazů na C++ je na SO také dost, i když jejich množství je úměrné tomu že se v tom jazyce dnes prostě píše o dost méně.
Název: Re:Python - zboznovany ludmi?
Přispěvatel: m 12. 09. 2017, 10:52:32
Citace
Java ma velmi dobru infrastrukturu na vytvaranie enterprise projektov, python ma ovela horsiu.

3D grafika je ina vec, ta sa robi lepsie v python.

zkus to vysvetlit googlu, nasa , openstacku etc ...

Java neni zrovna dobry jazyk na cokoliv. Proste jen ve spravnou dobu byla na spravnem miste. A rozhodne rozsireni COBOLu v enterpise nedosahne :)
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: stefan 12. 09. 2017, 10:55:11
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: kojot4 12. 09. 2017, 10:55:24
to vie vzdy tak pobavit, ze coskoro bude programovanie nahradene AI :D. Uz ste ako ten Ivan Novy. Ty si nejaky siritel jeho tez? Ak ano, tak to ta lutujem. Este povedzte, ze aj dizajn spravi AI a mozno dostanete aj nobelovku :D

Souhlas, AI možná někdy programátory nahradí, ale rozhodně to bude jedna z posledních profesí, pokud vůbec. Už nyní se třeba uvažuje o využití AI u právníků, to neznamená, že AI nahradí právníky, jen jim pomůže s prací tím, že za ně vyhledá příslušné zákony, rozhodnutí, ustanovení a navrhne možnosti. Velmi obdobně to pravděpodobně skončí u programování, už dnes různá IDE navrhují zlepšení kódu, případně různé frameworky generují základy, takže je pravděpodobné, že toto se bude vylepšovat, ale stěží lze mluvit o úplném nahrazení.

AI v první řadě úplně nahradí taxikáře, kamioňáky, řidiče autobusů, pokladní, prodavačky.

V mnoha oborech to naopak bude pouze šikovný asistent.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: kojot4 12. 09. 2017, 10:59:36
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.

Tak ono hlavně Python není úplně vhodný na čisté programování, spousta lidí v Pythonu dělá jako doplněk ke své hlavní činnosti (tester, admin, data science, věděc), takže to tak úplně nejde porovnávat, mimo jiné si nemyslím, že plat experta na ML musí být nutně nižší než plat Javisty.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Aoidhghean 12. 09. 2017, 11:00:19
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.
Jak kde, velká firma dělající do “data science” často používá v projektech Python a platí královsky. Ponechme stranou, proč někoho napadlo dělat API pro ML knihovny zrovna v Pythonu...
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Kate 12. 09. 2017, 11:46:05
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.
Hm, tohle čtu docela často o každém rozšířenějším jazyce (jednu dobu i o Javě). Přitom to není tak docela pravda. Záleží na zaměstnavateli a na tom co očekává. Pokud chceš nabrat pythonistu co je opravdu dobrý, musíš si připlatit, stejně jako mám kamaráda co bere docela královské peníze za částečný úvazek v PHP, které je obecně považované za etalon jazyka „co umí každý patlal“.

Ve výsledku těch velmi dobře placených pozic v rozšířeném jazyku může být srovnatelné množství, klidně i víc. A navíc máš větší trh a větší výběr.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: ByCzech 12. 09. 2017, 11:56:55
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.

Za nájemné vraždy se taky platí hodně dobře, což ale neimplikuje, že když se živím něčím jiným, že jsem patlal co snižuje cenu práce ;D.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 12. 09. 2017, 12:11:16
Mě hlavně fascinuje že Stefan si snad nutně potřebuje dokázat že jazyk který si zvolil je prostě ten nejlepší a ostatní jsou patlalové. Jestli tě baví Java, programuj v Javě. Jestli tě zajímá Python, podívej se na Python.

Kruciš, v IT je zoufalý nedostatek lidí snad všude a dává nám to možnost dělat co nás baví a co nám vyhovuje. Osobně nemám ráda ukecanost Javy a některé její vlastnosti a programovat by mě v ní nebavilo. Líbí se mi expresivnost Pythonu i přes nevýhody absence typového systému a nutnost psát testy i na věci které by jiné jazyky neřešily. Rychlostí vývoje a (subjektivní) čitelností mi to prostě nahradí.

Stejně tak se učím Rust do kterého jsem se na první pohled zamilovala a doufám že své znalosti někdy v budoucnu zpeněžím.

Ale co je hlavní – Dělám co mě baví. Nebudu se dřít jazyk který se mi nelíbí jen abych domů přinesla o blbých pár tisícovek víc, jestli vůbec :)

A pokud někoho překvapuje že s popularitou jazyka roste i počet lidí co se ptají na řešení problémů v něm, nevím jestli by měl se svými schopnostmi logické dedukce dělat programátora…
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: gll 12. 09. 2017, 12:17:33
A rozhodne dostanem za Javu, resp. C# lepsie zaplatene ako za python, nakolko v tom robi kazdy patlal a tym padom to znizuje cenu prace.

Právě proto existují testové úlohy podobné té, která se řeší v předchozím vlákně. Je rozdíl mezi zkušeným programátorem, který zná idiomy, a začátečníkem, který se bude patlat s java-like kódem hodinu. V pythonu se dá programovat hodně efektivně, ale musíte ho dobře znát. To platí o všeh high level jazycích.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: 666 12. 09. 2017, 12:17:53
Tohle rejpání do jazyků nemám moc rád, ale zrovna Java zamrzlá v pravěku je výjimka, hůř se mi psalo snad už jen ve VB6. Oracle by měl k instalačkám Javy přibalovat model kyje k vyjetí na 3D tiskárně...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 12. 09. 2017, 12:28:46
Tohle rejpání do jazyků nemám moc rád, ale zrovna Java zamrzlá v pravěku je výjimka, hůř se mi psalo snad už jen ve VB6. Oracle by měl k instalačkám Javy přibalovat model kyje k vyjetí na 3D tiskárně...
Begun the language wars have  ;D
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: stefan 12. 09. 2017, 12:46:56
Právě proto existují testové úlohy podobné té, která se řeší v předchozím vlákně. Je rozdíl mezi zkušeným programátorem, který zná idiomy, a začátečníkem, který se bude patlat s java-like kódem hodinu. V pythonu se dá programovat hodně efektivně, ale musíte ho dobře znát. To platí o všeh high level jazycích.

Blbost. To co sa riesi v predchadzajucom vlakne nic nevypoveda. Ako tam niektori riesia otocenie matice, neznamena, ze ten ktory by tam maticu nevedel, vobec nie je horsi. Preco aj? Kazdy je nahraditelny, cize aj ti, ktori tam ponukli svoje super pythonovske riesenia.
No kedysi ludia vychadzali z kniziek, skusali veci, prepisovali si priklady z knih a ucili sa na tom. Dnes?
1.) www.google.sk
2.) how to convert from decimal to binary in (jazyk si doplnte)
3.) vysledok -> stackoverflow
4.) copy-paste
5.) upravit
6.) skompilovat
7.) goto bod 1.
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: andy 12. 09. 2017, 13:09:35
1.) www.google.sk
2.) how to convert from decimal to binary in (jazyk si doplnte)
3.) vysledok -> stackoverflow
4.) copy-paste
5.) upravit
6.) skompilovat
7.) goto bod 1.
Programuju běžně v několika jazycích (poslední dobou haskell,python,java,javascript,C) a přesně tohle do googlu píšu docela často. Konverzi decimal-binary prostě nehodlám implementovat, a kdo si má sakra pamatovat, jaká funkce se na to v tom konkrétním jazyce používá?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: trr 12. 09. 2017, 13:21:56
Stefan, v dobách když nebyl internet měl u sebe každý programátor referenční příručku. Dělal něco jako copy pase, jenom to přepisoval z knihy, hledal algoritmy vknihách. Dneska je google tak se používá. Kapiš?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 13:33:58
Přesně tak. Mám tu referenční bichli o Perlu vydanou Computer Pressem v r. 1997 a má pěkně ošuntělé stránky v kapitole Manipulace se seznamy seznamů - pole polí, pole hashů, hashe polí, hashe hashů. Dneska bych to samozřejmě kopíroval ze SO.

Navíc se tím člověk jazyk docela rychle učí, vidí alternativy řešení (v Pythonu např. explicitní cykly vs. elegantní generátory).
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Lol Phirae 12. 09. 2017, 13:46:00
Za nájemné vraždy se taky platí hodně dobře

A to je tu ještě pole neorané - nájemné vraždy Java programátorů. Napadá mě spousta "produktů", kde by se uživatelé rádi složili.  8) ;D
Název: Re:Python - zbožňovaný lidmu?
Přispěvatel: Aoidhghean 12. 09. 2017, 14:22:07
Za nájemné vraždy se taky platí hodně dobře

A to je tu ještě pole neorané - nájemné vraždy Java programátorů. Napadá mě spousta "produktů", kde by se uživatelé rádi složili.  8) ;D
  ;D +1
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 14:38:23
Python se teprve poslední rok učím (na konkrétním domácím projektu), java mě roky živí. Zcela rozumím tomu, že pythonisti nad javou ohrnují nos. Mixiny, generátory, stručnost vyjadřování, rychlost zápisu jednoduchých věcí, to vše je velice příjemné. Když doma večer jednoduše rozšířím funkčnost několika tříd svého projektu jednoduchým mixinem a ráno v práci narazím na úplně stejnou potřebu v javě, projíždím jcp.org a hledám, kdy se do interfaců konečně dostanou fieldy, aby to aspoň trochu nahradilo. Večer slepím generátor na pár řádek a ráno v javě drtím zuby, proč ty streamy neakceptují checked výjimky.

Pak celý den přidávám proměnné do metod, měním jejich parametry, přejmenovávám (v pythonu mi Pycharm někdy přejmenoval i volání metody, které jsem nepřejmenovával), restrukturuji dle aktuální potřeby datové typy, odstraňuji nepoužívané metody i třídy a ono to ve výsledku pořád funguje, žádné rozbití, mohu se na to spolehnout.

Večer v pythonu přetížím metodu v potomku třídy z externí knihovny, nevšimnu si, že původní metoda něco vracela (má název "command", samozřejmě type hinty (i ty triviální v komentáři) jsou u kovaných pythonistů sprosté slovo), tudíž moje přetížená metoda zahazuje výsledek jejího předka a celý večer pak lovím chybu "object has no attribute XYZ" - konkrétně včerejší zábava. Nejnovější IDE (Pycharm) ukazuje krásnou šipku přetížení, ale o potřebě něco vracet jako předek díky chybějícím type hintům ani nepípne.

Nebo vezmu kus kódu z jiného projektu (i můj je GPL) a hodinu zjišťuju, jestli ten vstupní parametr má být string nebo bytes. Na první pohled se zdá obojí, ale až spuštění a několik kol pokusů/omylů ukáží, že to má být bytes, ale až po opravě jednoho volání built-in funkce, která pro změnu chce string (zřejmě změněné v nejnovější verzi pythonu, který kvůli type-hintům potřebuji). Nic z toho se při psaní nedozvím, pěkně nejdříve spustit test a sledovat, jak to dopadne.

A ráno se pokorně vrátím k luxusu javy a ve streamu si holt kód obalím rethrow runtime výjimkou, mixin pracněji pořeším kompozicí a pro návratový tuple si nechám vygenerovat maličké DTO, když jiná cesta není. Jenže to funguje a mohu se spolehnout, že mi nikde nevyjede null, protože přetížená metoda označená @Override najednou nic nevrací a jazyk to bere jako null (None).

Svůj domácí projekt do javy nepřepíšu, protože už mám do něj nainvestováno spoustu času, python mě baví (je fakt příjemný) a přece zbývá už jenom dodělat tak málo... Navíc se na podobném projektu učí můj synovec programovat - na to je Python skvělý. Ale nedovedu si představit, jak bych náš firemní systém o 10tis. třídách, ve kterém každý den děláme změny, udržoval a rozvíjel v pythonu. To by mi hodně rychle hráblo...

IMO má každé svoje a je určené na odlišné věci. A pokud má nějaká firma rozsáhlý projekt v pythonu, pak jsem přesvědčený, že to vzniklo právě tím klasickým "už toho máme postupně napsáno tolik, že se nám to nechce přepisovat". Ale nevěřím, že by znovu zvolili python, kdyby to nakonec celé přepsat museli.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 12. 09. 2017, 16:16:01
dustin: S drtivou většinou souhlasím. Pro mě má Java geniálně vyváženou restriktivitu jazyka. Je dostatečně restriktivní, aby odchytávala chyby už v okamžiku kompilace (respektive psaní v IDE) a dostatečně znepříjemňovala prasení, ale není tak moc restriktivní, aby se v ní blbě psalo nebo nedalo prasit, když to člověk fakt potřebuje.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Sars 12. 09. 2017, 16:22:17
Citace
A to je tu ještě pole neorané - nájemné vraždy Java programátorů. Napadá mě spousta "produktů", kde by se uživatelé rádi složili.  8) ;D

A tak proč hned vraždit. Služby jako zbičování kabelem od myši by šly taky na dračku.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 12. 09. 2017, 16:35:11
IMO má každé svoje a je určené na odlišné věci. A pokud má nějaká firma rozsáhlý projekt v pythonu, pak jsem přesvědčený, že to vzniklo právě tím klasickým "už toho máme postupně napsáno tolik, že se nám to nechce přepisovat". Ale nevěřím, že by znovu zvolili python, kdyby to nakonec celé přepsat museli.

No, je pravda že jeden takhle monstrózní projekt si v pythonu také nedovedu dost dobře představit.
Na stranu druhou, pokud jde o projekt podobného rozsahu, kde je backend rozdělený na spoustu menších celků na principu mikroslužeb, kde každá část dělá pár věcí, dělá je dobře a s ostatními částmi komunikuje přes nějaké api, je ta udržitelnost celkem v pohodě :) Navíc se dá jakákoliv problematická komponenta bez problémů a extrémních časových nároků přepsat. Jenže ten přístup se na všechno rozhodně nehodí a nese s sebou jiné problémy (integrační testy)

Pokud jde o tu restriktivnost, tak tou mi učaroval právě Rust. Sice prasit nedovolí prakticky vůbec, ale výhodou je, že díky tomu řekne přesně kde a proč je chyba a kde vznikla. Tak krásný chybový výstup kompileru jsem ještě neviděla :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 16:44:07
Pro mě má Java geniálně vyváženou restriktivitu jazyka. Je dostatečně restriktivní, aby odchytávala chyby už v okamžiku kompilace (respektive psaní v IDE) a dostatečně znepříjemňovala prasení, ale není tak moc restriktivní, aby se v ní blbě psalo nebo nedalo prasit, když to člověk fakt potřebuje.

Upřímně, po namlsání pythonem mi v ní některé věci hodně chybí. Návratové tuples jdou neohrabaně nahradit DTOs (nakonec je při vytváření metody IDE samo nabídne a vygeneruje, když není zbytí), ale mixiny (tedy vícenásobná dědičnost) by hodně usnadnily práci. Pomalu na tom dělají (privátní metody interfaců v javě 9, takže už defaultní metody z javy 8 budou jakžtakž použitelné), ale bude to ještě na hodně let...

Pak jsou čistě javovské problémy - klasika s užitečnými ale hodně omezenými streamy, nemožnost reifikace generik (těch generických parametrů, co by se ušetřilo), atd.

Ale všechno má něco. U většího projektu dám vždycky přednost těmto "nepříjemnostem" v porovnání s peklem netypovaného jazyka.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 16:56:32
Na stranu druhou, pokud jde o projekt podobného rozsahu, kde je backend rozdělený na spoustu menších celků na principu mikroslužeb, kde každá část dělá pár věcí, dělá je dobře a s ostatními částmi komunikuje přes nějaké api, je ta udržitelnost celkem v pohodě :)

To ano. Jenže třeba v živém projektu, který má podporovat byznys firmy, se zadání pořád posouvá/mění a stejně tak se budou vyvíjet i ta API (nemluvím o kernelu, aby mi tu někdo nechytil za slovo). Zrovna API se hodně špatně refaktoruje, protože je nehlídá žádný kompilátor...

Citace
Pokud jde o tu restriktivnost, tak tou mi učaroval právě Rust. Sice prasit nedovolí prakticky vůbec, ale výhodou je, že díky tomu řekne přesně kde a proč je chyba a kde vznikla. Tak krásný chybový výstup kompileru jsem ještě neviděla :)

Věřím, určitě se v něm dělá fajn. Ale já se na to musím dívat z pozice spolumajitele firmy/kódu, kterého zajímá dlouhodobý pohled. Bude tu Rust i za patnáct let? Může na něj firma vsadit svou budoucnost, aby nemusela za pár let vše předělávat? Jak dopadl Facebook - začal jako každý startup s PHP, pak se jim to nechtělo předělávat a dnes si musí legacy PHP kompilovat do céčka...

Jaký je dnes zájem o ještě před pár lety opěvovanou Clojure...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 12. 09. 2017, 17:06:38
Věřím, určitě se v něm dělá fajn. Ale já se na to musím dívat z pozice spolumajitele firmy/kódu, kterého zajímá dlouhodobý pohled. Bude tu Rust i za patnáct let? Může na něj firma vsadit svou budoucnost, aby nemusela za pár let vše předělávat? Jak dopadl Facebook - začal jako každý startup s PHP, pak se jim to nechtělo předělávat a dnes si musí legacy PHP kompilovat do céčka...

Jaký je dnes zájem o ještě před pár lety opěvovanou Clojure...
Však ano, já se na to koukám jako na hobby programovací jazyk, který by mě jednou mohl živit, ale těžko říct. Zatím to vypadá že má našlápnuto hezky, i potenciál v embedded je díky vlastnostem jazyka zajímavý. S Pythonem, C++ a slušnou znalostí Ruby se zatím o práci nebojím…

Mimochodem, Facebook pokud vím upustil od kompilace do C a vyrobil si vlastní „dialekt“ PHP a VM k tomu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 12. 09. 2017, 17:07:20
... ale mixiny (tedy vícenásobná dědičnost) by hodně usnadnily práci.

Zajímavé, mě tohle vůbec nechybí. Vícenásobné interfaces mi stačí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Danny 12. 09. 2017, 17:25:52
Jsem si tady vzpomněl na jeden případ, kdy mě "kousla" polymorfnost pythonu: Vytvářel jsem skript, který měl automaticky upravovat/měnit textové vstupní soubory pro takový složitý tool. Byl jsem línej tool spouštět, což je chyba. Vstupy jsem tahal z databáze.

Inu, normálně je v databázi číslo. To Python zkonvertuje na string a dá do texťáku. Ale co se stane, když je v dané položce NULL? Výjimka? Kdepak - Python prostě vrátí None. A díky polymorfnosti pythonového volání str() se toto None prostě zkonvertuje na string "None" a dá do texťáku. Jak si s tím má chudák tool (který spustil kolega a omlátil mi to právem o hlavu) poradit jinak, než že selže?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: vladimir 12. 09. 2017, 17:33:51
to me poser. tady resite sracky typu python, java a ani poradne neumite jak to vsechno funguje a co se odehrava v pocitaci. ja delam uz pres 20 let v assembleru. hodne z vas v tom neumi napsat ani hello world, ale jo klidne si tady dokazujte, ze jste borci
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 17:35:16
S Pythonem, C++ a slušnou znalostí Ruby se zatím o práci nebojím…

Žádný šikovný vývojář se nemusí bát o práci, bez ohledu na používaný jazyk. Ten je jenom prostředek. A u tebe bych se nebál tuplem, co tak sleduju tvé příspěvky zde...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 12. 09. 2017, 17:37:40
Ale všechno má něco. U většího projektu dám vždycky přednost těmto "nepříjemnostem" v porovnání s peklem netypovaného jazyka.

A který to má být ten netypovaný jazyk v daném kontextu?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: tisnik 12. 09. 2017, 18:28:45
Jaký je dnes zájem o ještě před pár lety opěvovanou Clojure...

Projekty se v tom píšou, hlavně ve chvíli, kdy se dá dobře využít ekosystém okolo (Datomic atd.). Ale pokud te zajima, jestli das inzerat a za tyden mas 10 novych vyvojaru - tak to nebude (ale dneska to plati i vsude jinde, o to min sezenej clojuristu).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lol Phirae 12. 09. 2017, 19:33:41
Citace
A to je tu ještě pole neorané - nájemné vraždy Java programátorů. Napadá mě spousta "produktů", kde by se uživatelé rádi složili.  8) ;D

A tak proč hned vraždit. Služby jako zbičování kabelem od myši by šly taky na dračku.

No fuj, týrání elektronických zvířátek...  :'(
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 20:14:37
Zajímavé, mě tohle vůbec nechybí. Vícenásobné interfaces mi stačí.

Mně to taky moc nechybělo, dokud jsem si nevyzkoušel mixiny v pythonu. A to jsem v podstatě pythonní začátečník. Jednoduchost přidání další funcionality (nejen předpisu ala vícenásobný interface v javě) k jakékoliv kompatibilní třídě je fakt příjemná. Jenom kdyby se to tak dalo pořádně typovat...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 12. 09. 2017, 20:16:01
A který to má být ten netypovaný jazyk v daném kontextu?

Python
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 12. 09. 2017, 20:22:05
A který to má být ten netypovaný jazyk v daném kontextu?

Python

To je pro mě novinka, když Python má silnou typovou kontrolu :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: noef 13. 09. 2017, 07:20:36
Zajímavé, mě tohle vůbec nechybí. Vícenásobné interfaces mi stačí.

Mně to taky moc nechybělo, dokud jsem si nevyzkoušel mixiny v pythonu. A to jsem v podstatě pythonní začátečník. Jednoduchost přidání další funcionality (nejen předpisu ala vícenásobný interface v javě) k jakékoliv kompatibilní třídě je fakt příjemná. Jenom kdyby se to tak dalo pořádně typovat...

Uz jsem chtel napsat, ze dokud jsem si traity/mixiny* trochu nevyzkousel, tak me pochopitelne nechybely. Ale podobne je to i s opravdovymi typy a typovou inferenci ala Haskell. Jakmile jsem ji ochutnal, tak najednou vsude vidim jak jsou typove systemy slabe a jak jsou jazyky navrzene tak, ze inference je znacne omezena (Scala - protoze OOP) nebo je proste prekladac hloupy (TypeScript - mladost projektu?).

Muzete zkusit Scalu, ta ma traity, lepsi typovy system nez Java a bezi nad JVM ;).

PS: Co se divam na definice, tak traity ve Scale jsou asi spise mixiny.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 13. 09. 2017, 07:34:24
to me poser. tady resite sracky typu python, java a ani poradne neumite jak to vsechno funguje a co se odehrava v pocitaci. ja delam uz pres 20 let v assembleru. hodne z vas v tom neumi napsat ani hello world, ale jo klidne si tady dokazujte, ze jste borci
+1, to ví dneska už jen málokdo.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 09. 2017, 08:54:36
Přímo v assembleru asi ne, ale v céčku si s jednočipy hraje docela dost lidí. Zrovna ten můj pythonní projekt má na druhé straně sériového portu STM32 s TFT dotykem.

Ale ten argument je mimo. Někdo řeší embedded detaily hardwaru v C/asm, někdo potřebuje rychle vytvořit prototypy nebo vědecké programy v pythonu, někdo designuje rozsáhlé systémy v javě. Vše z toho je důležité a na každé z toho se hodí jiný jazyk. Ale to přece všichni víme.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 13. 09. 2017, 08:57:40
to me poser. tady resite sracky typu python, java a ani poradne neumite jak to vsechno funguje a co se odehrava v pocitaci. ja delam uz pres 20 let v assembleru. hodne z vas v tom neumi napsat ani hello world, ale jo klidne si tady dokazujte, ze jste borci

Jen 20 let? To já začal s assemblerem někdy v roce 1990. Takže hezky zavři kušnu, mlíčňáku, a nepleť se mezi zkušený borce. 8)

Jednoduchost přidání další funcionality (nejen předpisu ala vícenásobný interface v javě) k jakékoliv kompatibilní třídě je fakt příjemná.

To, že je něco jednoduché neznamená, že je to správné. Že třída implementuje víc rozhraní, to jistě, to je šikovné a velmi často dává smysl. Ale přidávat tam i implementaci mi připadá spíš jako zneužívání dědičnosti (*), které by bylo čistší vyřešit skládáním. Dokážete hodit nějaké ne-za-vlasy-přitažené příklady, kdy je takovéhle využívání mixinů architektonicky správné?

*) Něco jako když si programátor definuje utility funkci v nadtřídě a využívá ji z podtříd, místo co by ji vyčlenil do utility class.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 09. 2017, 09:53:07
Ale přidávat tam i implementaci mi připadá spíš jako zneužívání dědičnosti (*), které by bylo čistší vyřešit skládáním. Dokážete hodit nějaké ne-za-vlasy-přitažené příklady, kdy je takovéhle využívání mixinů architektonicky správné?

*) Něco jako když si programátor definuje utility funkci v nadtřídě a využívá ji z podtříd, místo co by ji vyčlenil do utility class.

Nejsem žádný specialista na mixiny, ale tady jde právě o skládání. Dědičnost v řadě případů nefunguje, protože stejnou funkcionalitu potřebuji např. u dvou potomků z různých větví dědičnosti. Přesně to, o čem mluvíš - musel bych to dát do společného předka, který je hluboko v řetězci a nemá s tím nic společného, nebo do externí utils třídy. Proto se to poskládá mixiny. Přímá dědičnost je vlastně jeden mixin.

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

Mám ve websockets aplikaci různé boxy (divy), který se na nějaký povel otevřou. Jsou to potomci různých dědičných levelů základního boxu s různými funkcionalitami. A u některých chci, aby se při nečinnosti uživatele po chvíli zase zavřely a zobrazil se předchozí box.

Mixin TimedClose pro zavírání:
https://github.com/pavhofman/aio/blob/master/uis/timedclose.py#L11

Přidám jej do boxů, které mají různé předky:
https://github.com/pavhofman/aio/blob/master/uis/volumefsbox.py#L17 - předkem je Widget (změním hlasitost a po chvíli se okno zavře do původní obrazovky)
https://github.com/pavhofman/aio/blob/master/uis/activatesourcefsbox.py#L10 - předkem je HBox -> Widget (nabídka zdrojů signálu, když na nic nekliknu, zase se to samo zavře)

Box se po čase daném v konstruktoru TimedClose zavře sám, případně jej zavře nadřazená aplikace
https://github.com/pavhofman/aio/blob/master/uis/webapp.py#L82

Takových boxů je v projektu celá řada. U jiných to dneska nechci - např. box pro průchod stromem pro výběr dalšího přehrávaného tracku/adresáře https://github.com/pavhofman/aio/blob/master/uis/nodeselectfsbox.py#L25 . A třeba se časem rozhodnu, že by bylo uživatelsky lepší jej autozavírat - stačí přidat TimedClose do seznamu jeho mixinů.

To samé třeba mixin AddPlaybackButtons https://github.com/pavhofman/aio/blob/master/uis/addsplaybackbuttons.py#L16 , který každému boxu s tímto mixinem přidává tlačítka na přehrávání a kompletně ošetřuje jejich volání. Takže se mohu (i později) rozhodnout, ve kterých boxech z uživatelského rozhraní ta tlačítka budou, nezávisle na dědičné linii těch boxů.


Jenže by se mi líbilo, kdybych TimedClose mohl říct, pro jaké třídy je určený (vyžaduje existenci fieldu self._app typu WebApp). V javě by se použila klasická parametrizovaná generika, v pythonu jsem na to nepřišel. Samozřejmě mohu použít runtime kontrolu, což je IMO děs (např. super knihovna remi https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L465 , nebo jiný příklad https://github.com/mopidy/mopidy/blob/develop/mopidy/internal/validation.py#L75 ). Samozřejmě se jedná jen o hint pro IDE (což je stejně případ všech těch type-hintů, pythonnímu interpretu je to fuk), ale ani to jsem nikde nenašel. Parametrizovaná generika https://docs.python.org/3/library/typing.html#generics používám, ale potřeboval bych něco jako <T extends AppBox>

Ten odkazovaný projekt je rozpracovaný prototyp, chybí tam spoustu věcí...

V javě jde třídu rozšířit jen interfacem, proto se její vývojáři snaží trochu o workaround a přidávají funkcionalitu do interfaců. Java 8 má v interfacech defaultní implementované metody, java 9 přidává privátní metody. Bohužel pro plnou funkci chybí interní fieldy, aby si to mohlo udržovat stav, ale tímhle směrem to asi nepůjde.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 09. 2017, 10:00:09
Koukám, že do těch mixinů tu app předávám v konstruktoru, takže to omezení na využití neplatí. Ale jinde by se to hodilo, kdybych v mixinu používal metody třídy, kterou mixin rozšiřuje. Což uznávám není úplně čisté...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 09. 2017, 11:21:09
na podobné věci používám class dekorátory, ale s typováním by se to asi bilo ještě víc. Už jste zkoušel Kotlin?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 09. 2017, 11:45:56
Class dekorátory jsem ještě nepoužíval, díky, mrknu na ně.

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.

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...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 09. 2017, 11:49:46
Jenže by se mi líbilo, kdybych TimedClose mohl říct, pro jaké třídy je určený (vyžaduje existenci fieldu self._app typu WebApp)

Podle mě tohle vyřeší protokoly https://www.python.org/dev/peps/pep-0544/. Mixin je předek a neměl by explicitně znát typ potomka. V souboru Mixinu definujete protokol a nemusíte importovat potomka.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 13. 09. 2017, 12:56:08
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ší.

Mimochodem, v Java web frameworku Wicket bych pro podobnou věc použil něco čemu říkají "Behavior". To je potomek třídy Behavior, který se dá přidat na jakoukoli komponentu a má volání dostává volání podle životního cyklu té komponenty. Takže bych udělal třídu:

Citace
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;

public class HideBehavior extends AbstractAjaxTimerBehavior {
  @Override
  protected void onTimer(AjaxRequestTarget target) {
    getComponent().setVisible(false);
  }
}

Pak prostě můžeš udělat třeba:

Citace
  component.add(new HideBehavior(Duration.seconds(10)));

a komponenta se ti po daném timeoutu skryje. Tomu _já_ říkám elegance :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 09. 2017, 13:03:15
a komponenta se ti po daném timeoutu skryje. Tomu _já_ říkám elegance :)

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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: kobra 13. 09. 2017, 13:22:55
a komponenta se ti po daném timeoutu skryje. Tomu _já_ říkám elegance :)

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.

Websocket vyzaduje trvale otevreny kanal, coz je v ere mobilni dost nezadouci. Z hlediska uzivatele je uplne jedno jestli ti server pushuje pres socket kazdou pulminutu nebo to udela setinterval pres ajax.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: wsh 13. 09. 2017, 13:24:06
Dokážete hodit nějaké ne-za-vlasy-přitažené příklady, kdy je takovéhle využívání mixinů architektonicky správné?

Nevím, jestli je to architektonicky správné, ale v praxi se mixiny velice dobře používají. Příkladem může být sada mixinů Django Braces, které můžu přidat podle potřeby k libovolnému View (v terminologii jiných MVC by to byl spíš controller).

SSLRequiredMixin:
doc: https://django-braces.readthedocs.io/en/latest/access.html#sslrequiredmixin
implementace: https://github.com/brack3t/django-braces/blob/master/braces/views/_access.py#L344

Zároveň jsou Braces i příkladem toho, co je na mixinech špatně. Snaha o maximální DRY v Djangu vedla k tak chaotické hierarchii tříd a mixinů (http://bit.ly/2h0yEMh), že vznikl externí projekt Braces, který řeší to stejné, ale jednodušeji a přehledněji.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 09. 2017, 13:25:54
a komponenta se ti po daném timeoutu skryje. Tomu _já_ říkám elegance :)

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.

Websocket vyzaduje trvale otevreny kanal, coz je v ere mobilni dost nezadouci. Z hlediska uzivatele je uplne jedno jestli ti server pushuje pres socket kazdou pulminutu nebo to udela setinterval pres ajax.

Server pushne jen když nastane událost.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: noef 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).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 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...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 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ě.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 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ší.

?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 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 :-)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 13. 09. 2017, 20:50:36
http://www.sixfeetup.com/blog/why-we-choose-python
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 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 (https://docs.microsoft.com/en-us/dotnet/core/index)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 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?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: stefan 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?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: tisnik 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
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 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.

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: lopata 14. 09. 2017, 11:39:51
Zacinam mat pocit, ze programovanie sa zacina pretvarat na primitivnu cinnost.

Programování je stále jedna z nejnáročnějších oblastí, ale dnes ji dělají i běžní blbci. Cca 95 % populace na to nemá hlavu. Takže pokud budeme cpát retardy do IT, k ničemu to nebude. Dneska je to hezky vidět v korporacích. Tupé neIT hlavy doplnily ty IT. Sice výsledky mají žalostné, ale všichni si rozumí a pak se to musí nějakému hejlovi prodat.

Programování se nedá naučit a kdo tvrdí, že jo, tak akorát lže a nebo je hloupý. Stačí se ale podívat kolem po IT světě a každému, kdo něco umí, musí být jasné, že je něco špatně. Zase je hezké nemít moc konkurenci. Nahrazení SW za desítky milionů jiným za pár a ještě daleko lepším, není dnes vůbec problém. Převálcovat zajetou konkurenci desetkrát efektivnějším SW? Jednoduché.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ... 14. 09. 2017, 12:01:00
Citace
Znamy nastupil do firmy, kde sefku testerov robi zena, ktora vystudovala biologiu

Osobně si taky myslím, že pokud ta paní vystudovala biologii, tak má předpoklady být lepší programátorkou než ty, který se věnuješ čistě IT. Podobně to vidím třeba u fyziků nebo strojařů.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: lopata 14. 09. 2017, 12:17:58
Citace
Znamy nastupil do firmy, kde sefku testerov robi zena, ktora vystudovala biologiu

Osobně si taky myslím, že pokud ta paní vystudovala biologii, tak má předpoklady být lepší programátorkou než ty, který se věnuješ čistě IT. Podobně to vidím třeba u fyziků nebo strojařů.

A nejlepší doktor je automechanik :D

Nejhorší programátoři jsou právě tihle přeučení, protože nic neumí. Fyzici ti nacpou hromadu nesmyslů, proč je ten kód na vyhození a ani pořádně nefunguje. Prej kdyby to byl Fortran, tak by to bylo lepší. Ekonomové tam pořád cpou nějaké poučky z oboru, ale kód k ničemu. Možná by každý měl zůstat u toho, co mu jde a necpat se do vývoje. Vývoj není pro nějaké přeučené lemply, kteří pravděpodobně ani svůj obor nikdy pořádně neuměli. Proč by jinak přecházeli? 8)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ... 14. 09. 2017, 12:27:42
A taky pravděpodobně nebude tak strašně namachrovaná, jako půlka lidí v IT. ;)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 09. 2017, 12:28:40
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?

Jako nouzové řešení pro lidi neznající frontendové technologie je to asi OK.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: lopata 14. 09. 2017, 12:29:55
A taky pravděpodobně nebude tak strašně namachrovaná, jako půlka lidí v IT. ;)

Pokud nic neumí, tak ještě aby jo ;D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ... 14. 09. 2017, 12:41:04
Přesah do různých oborů není na škodu nikdy, ale k tomu třeba taky jednou dojdeš. No a předpoklad, že papír z IT školy zaručuje cokoliv, se člověku musí rozplynout už jen při letmém projetí některých kódů. A pak taky ještě prázdný sud nejvíc duní. Měj se fajn. 8)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: stefan 14. 09. 2017, 12:41:46
Citace
Znamy nastupil do firmy, kde sefku testerov robi zena, ktora vystudovala biologiu

Osobně si taky myslím, že pokud ta paní vystudovala biologii, tak má předpoklady být lepší programátorkou než ty, který se věnuješ čistě IT. Podobně to vidím třeba u fyziků nebo strojařů.
Tak to vypustate riadne nezmysly. To je len dnes modny trend, ze ludia sa neuplatnia s tym, co vystudovali, na VS boli len kvoli tomu, aby si predlzili studijny zivot a mali prazdniny. Skoncila VS a oni nevedeli, co robit, nemaju sa kde uplatnit, skoncia na urade prace. Niektori sa akoze zacali rypat v IT a dnesna doba takych podporuje. Korporat naberie hocikoho a zaskoli si ho na to, co potrebuje. Spominane dievcata pracuju vo firme, kde forma pohovoru spociva v nejakych IQ testoch, pri ktorych, ked ich riesite, vam do toho keca p*ca z HR a tym vas chce vlastne vystavit nejakemu stresu. Dalsim ich testom su psychotesty. To je vsetko, ziadne testy z technologii, na ktore hladaju cloveka.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: stefan 14. 09. 2017, 12:42:33
Přesah do různých oborů není na škodu nikdy, ale k tomu třeba taky jednou dojdeš. No a předpoklad, že papír z IT školy zaručuje cokoliv, se člověku musí rozplynout už jen při letmém projetí některých kódů. A pak taky ještě prázdný sud nejvíc duní. Měj se fajn. 8)
ze ty si preskoleny z pracaku a teraz hras  fraju :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 09. 2017, 13:34:31
Jako nouzové řešení pro lidi neznající frontendové technologie je to asi OK.

Ve velkém projektu chci frontendových technologií co nejméně, protože se při změnách špatně hlídá jejich spolupráce s backendem. Když tomu dáš velké úsilí, napíšeš spoustu testů, že ti to komunikuje správně (a stejně nepostihnou vše),  tak stejně jenom zpětně zjistíš, že se něco rozsypalo a začneš to následně opravovat.

U velkého projektu chci mít i frontend pod kontrolou již při psaní kódu, ne až to spustím a začnu zjišťovat, co se kde rozsypalo (třeba testy). Tak postupuju právě v pythonu a zrovna tohle mě na něm hodně vadí.

Frontendistu pro wicket potřebuješ taky (ve finále to vše generuje html5 a javascript). Ale výstup jeho práce pak zabalíš do své vlastní javovské komponenty, kterou ve wicketí aplikaci používáš opakovaně a která dlouhodobě funguje. A současně máš plnou kontrolu nad typy. Nestane se, že by ti najednou chyběl nějaký atribut nebo se volaná metoda po refaktoringu jmenovala jinak. Kompilátor (tedy IDE již při psaní, protože kód permanentně analyzuje) ti to hodí na hlavu. Což je naprosto zásadní.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 09. 2017, 14:12:27
Jako nouzové řešení pro lidi neznající frontendové technologie je to asi OK.

Ve velkém projektu chci frontendových technologií co nejméně, protože se při změnách špatně hlídá jejich spolupráce s backendem. Když tomu dáš velké úsilí, napíšeš spoustu testů, že ti to komunikuje správně (a stejně nepostihnou vše),  tak stejně jenom zpětně zjistíš, že se něco rozsypalo a začneš to následně opravovat.

U velkého projektu chci mít i frontend pod kontrolou již při psaní kódu, ne až to spustím a začnu zjišťovat, co se kde rozsypalo (třeba testy). Tak postupuju právě v pythonu a zrovna tohle mě na něm hodně vadí.

Frontendistu pro wicket potřebuješ taky (ve finále to vše generuje html5 a javascript). Ale výstup jeho práce pak zabalíš do své vlastní javovské komponenty, kterou ve wicketí aplikaci používáš opakovaně a která dlouhodobě funguje. A současně máš plnou kontrolu nad typy. Nestane se, že by ti najednou chyběl nějaký atribut nebo se volaná metoda po refaktoringu jmenovala jinak. Kompilátor (tedy IDE již při psaní, protože kód permanentně analyzuje) ti to hodí na hlavu. Což je naprosto zásadní.

podobné demagogické argumenty používal Microsoft při propagaci Webforms. Nakonec uznal, že tento přístup je špatný. Podle vašeho příspěvku by nemohla existovat jediná fungující SPA aplikace.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 09. 2017, 14:40:27
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: phi 14. 09. 2017, 16:00:24
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.
+1, legacy kod je vzdy opruz, ale javascript je peklo
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: noef 14. 09. 2017, 18:33:53
... Podle vašeho příspěvku by nemohla existovat jediná fungující SPA aplikace.

Jn, lidi to asi nejak delaji (viz nize). Ostatne nezapominejte na to, ze bastlit se da i v Jave.

Mel jsem tu cest videt nektere ty Javi knihovny (napr. Vaadin) a teda dost hruza. Musi to kontaktovat server kvuli kazde kravine (mozna chyba pouziti?) a stejne si to clovek musel vselijak ohybat. V zaveru se obcas dokonce skoncilo s tim, ze bylo potreba to syrove JS stejne pouzit.

... Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.

JavaScript neni jediny, ve kterem muzete psat. Take pouzivate Javu a ne strojovy kod. Ze zajimavych jsem videl ScalaJS nebo Elm, pripadne pokud jste konzerva, tak TypeScript (nebo mozna Flow, ale TS me prijde, ze dost nabira na popularite a ma solidni nastroje).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 09. 2017, 19:44:44
JavaScript neni jediny, ve kterem muzete psat. Take pouzivate Javu a ne strojovy kod. Ze zajimavych jsem videl ScalaJS nebo Elm, pripadne pokud jste konzerva, tak TypeScript (nebo mozna Flow, ale TS me prijde, ze dost nabira na popularite a ma solidni nastroje).

Určitě jsou lepší jazyky než JS. Ale původní argument byl o tom, že někdo používá technologie typu wicket, protože neumí frontend. To je nesmysl. Používá je proto, že chce nechce vyvíjet a hlavně dlouhodobě udržovat dva systémy, které spolu nejsou pevně svázané typovaným jazykem.  Design je dán html šablonami komponent, na které je stejně potřeba frontendista, stejně jako na generování nových komponent.

Nechť si každý vybere, co je pro něj víc důležité. Pro jednorázovky, něco na kšeft, nebo pro silně vytížené stránky bych taky udělal oddělený backend a frontend. Wicket se používá hlavně pro administrační část, která bývá ta nejrozsáhlejší/nejsložitější/nejčastěji upravovaná/rozšiřovaná.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 09. 2017, 20:51:38
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.

Možná nejste demagog, ale určitě používáte argumentační klamy. Z faktu, že vy to tak děláte a funguje vám to, neplyne, že to jinak dělat nejde. To, že s tím pracujete roky vaše tvrzení naopak znevěrohodňuje. Za takovou dobu si perfektně osvojíte libovolnou technologii. S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 15. 09. 2017, 08:56:19
(...) Používá je proto, že chce nechce vyvíjet a hlavně dlouhodobě udržovat dva systémy, které spolu nejsou pevně svázané typovaným jazykem.

Tak ono jde třeba psát aplikaci v Typescriptu (čistý Ecmascript je fakt zlo, to souhlasím) a mít v něm SPA i REST API do backendu. A můžu sdílet REST objekty mezi API a konzumující aplikací.

S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.

Tak teď jsem málem smíchy spadl pod stůl. Dělám bankovní aplikaci, kde jsou na modularitu a testovatelnost pochopitelně velmi vysoké nároky, a teď se mi nějaký jouda na Rootu snaží vysvětlit, že to co dělám už několik let vlastně nejde.  :D  :D  :D

Naopak, Wicket je naopak velmi dobře testovatelný (je možné si nechat vykreslit stránku "do zdi" a pak ve stromu komponent testovat, zda jsou zobrazené, zda mají v modelu co mají mít atp.). A díky Javě je modulární také velmi dobře.

Možná jsi potkal něco jako JSP/JSF, tam bych ten odsudek docela chápal, to je fakt dost humus. Ale Wicket je geniální právě tím, že na to jde z úplně jiné strany.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 15. 09. 2017, 09:09:25
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.

Možná nejste demagog, ale určitě používáte argumentační klamy. Z faktu, že vy to tak děláte a funguje vám to, neplyne, že to jinak dělat nejde. To, že s tím pracujete roky vaše tvrzení naopak znevěrohodňuje. Za takovou dobu si perfektně osvojíte libovolnou technologii. S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.
Kde se dají sehnat komponenty se standartou?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 09. 2017, 09:37:56
Tak ono jde třeba psát aplikaci v Typescriptu (čistý Ecmascript je fakt zlo, to souhlasím) a mít v něm SPA i REST API do backendu. A můžu sdílet REST objekty mezi API a konzumující aplikací.

Jasně, ale upřímně - vyměnil bys dobrovolně ve své javovské bankovní aplikaci nativní zcela integrovaný wicket za SPA v Typescriptu?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 15. 09. 2017, 10:09:24
Jasně, ale upřímně - vyměnil bys dobrovolně ve své javovské bankovní aplikaci nativní zcela integrovaný wicket za SPA v Typescriptu?

A čím myslíš, že se v poslední době zabývám? Tím jak tohle udělat co nejméně bolestivě. ;)

Wicket je hrozně super, ale ta architektura má prostě svoje principiální omezení z hlediska interaktivity / odezvy. Dál je dost náročný na server, když chceš cluster, musíš řešit synchronizaci page store mezi nody. U bezestavového REST serveru tenhle problém vůbec není, UI operace se dělají na počítači uživatele (takový velký cloud :) )...

Typescript není Java (hodila by se možnost vypnout typovou inferenci), ale je "close enough". Jak říkám, Microsoft za celá svá desetiletí existence vyprodukoval jen dvě opravdu dobré věci. Typescript a Age of Empires.

A když to postavíš třeba na kombinaci React / Redux, tak se dostaneš tomu, že máš stav aplikace ne rozstrkaný po modelech v jednotlivých komponentách, ale hezky v jednom objektu (stromu objektů), od kterého máš historii "stav 1 => akce 1 => stav 2 => akce 2 => stav 3 ..." a když se ti aplikace dostane do špatného stavu, můžeš z historie rychle zjistit, kde se stala chyba - jestli přišla špatná akce, měla špatná data, nebo se na jejím základě data špatně změnil stav.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: noef 15. 09. 2017, 10:27:40
...
Typescript není Java (hodila by se možnost vypnout typovou inferenci), ale je "close enough".
...

V jazycich jako Haskell mam typovou inferenci hrozne rad. Bohuzel holy TypeScript je dost (typove) slabota. Urcite vypnout implicit any (prepinac tusim noImplicitAny, jsou i dalsi uzitecne) a take doporucuji pouzit TSLint a vynutit napr. explicitni navratove typy, typy u verejnych fieldu atp. IMO to dost zlepsi vyvoj, co se tyce typove kontroly (se to zacina i blizit jazykum jako Java). Samozrejme clovek nesmi byt prase a musi se pouzivat nejvhodnejsi typ - zadne any (to je potreba jen opravdu vyjmecne) na kazdem kroku v podstate vypinajici typovou kontrolu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 09. 2017, 11:06:17
Zajímavé, díky za hinty a držím palce. Wicket máme v méně zatížené admin části, takže věřím, že než přijde čas na převážně client-side řešení, bude v tom zase o kus dál a zůstaneme v javě. Dynamické komponenty ve wicketstuff přibývají.  Prostoru k optimalizaci máme pořád spoustu. Nikdo si nechce dobrovolně komplikovat vývoj přepisováním kusů systémů do jiné technologie, když může zdroje věnovat na něco užitečnějšího - samozřejmě pokud stávající technologie splňuje předpokládané požadavky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 15. 09. 2017, 13:12:15
Wicket máme v méně zatížené admin části, ...

Jasně, na admin systémy je Wicket ideální, zvlášť když není požadována responzivita. Abych osvětlil, co tím myslím, zrovna teď řeším jednu takovou věc:

- Máme formulář se čtyřmi pevnými hodnotami a N hodnotami zadávanými uživatelem
- Ve chvíli kdy uživatel vepíše hodnotu, provede se nad všemi hodnotami výpočet
- Pokud je hodnota výpočtu < 0, má se zobrazit (nemodálni) tooltip, kde uživatel může potvrdit, že to je tak OK, nebo přepíše hodnotu/hodnoty a provede se nový výpočet
- Pokud není hodnota > 0 nebo není potvrzeno, že je to OK, nejde formulář odeslat
- Explicitně dvoufázové řešení, že uživatel vepíše hodnoty, klikne na "odeslat" a až pak se mu zobrazí výsledný hodnota a případně tooltip není přípustné - musí se to zobrazovat co nejdřív, rozhodně bez klikání

Výše uvedené ve Wicketu samozřejmě udělat jde, tak, že se na input pole navěsí JS na keypress a když uživatel delší dobu nepíše, tak se formulář odešle a zobrazí se výsledek a případně tooltip. Jenže tam musí být timeout aby se zjistilo "už nepíše" a pak ještě nějakou dobu trvá, než server vrátí požadavek. A mezitím uživatel začne třeba zase psát... prostě to není ono.

V Reactu tohle může fungovat prakticky on-line.

Samozřejmě se to i ve Wicketu dá napsat za použití JS, jenže pak musíte řešit, že máte business logiku rozdělenou mezi JS a Javu, přicházíte o typovou kontrolu, musíte nějak obcházet případnou potřebu vytváření komponent (ten tooltip tady) atp.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 09. 2017, 16:12:55
Možná jsi potkal něco jako JSP/JSF, tam bych ten odsudek docela chápal, to je fakt dost humus. Ale Wicket je geniální právě tím, že na to jde z úplně jiné strany.

Wicket neznám, myslel jsem, že je to něco jako JSF nebo WebForms.

A když to postavíš třeba na kombinaci React / Redux, tak se dostaneš tomu, že máš stav aplikace ne rozstrkaný po modelech v jednotlivých komponentách, ale hezky v jednom objektu (stromu objektů), od kterého máš historii "stav 1 => akce 1 => stav 2 => akce 2 => stav 3 ..." a když se ti aplikace dostane do špatného stavu, můžeš z historie rychle zjistit, kde se stala chyba - jestli přišla špatná akce, měla špatná data, nebo se na jejím základě data špatně změnil stav.

přesně to jsem měl na mysli, když jsem psal o testovatelnosti. Používám React / Redux / Flow. Backend v podobě API se také snadno testuje a umožňuje tunit cachování.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 15. 09. 2017, 18:58:38
Wicket neznám, myslel jsem, že je to něco jako JSF nebo WebForms.

No to právě není :) Ve Wicketu píšeš webovou aplikaci spíš jako normální desktopovou aplikaci, stavíš ji z Java komponent, akorát se pak nerenderuje na obrazovku OS, ale do HTML.

přesně to jsem měl na mysli, když jsem psal o testovatelnosti. Používám React / Redux / Flow. Backend v podobě API se také snadno testuje a umožňuje tunit cachování.

Já si pod "testovatelnost" představím spíš "automatickou testovatelnost". A ta je u Javy (a Wicketu) právě výborná. Tedy s tím, že je to UI. Jinak si uvnitř té java aplikace typicky uděláš nějaké vrstvy (UI, servisní, DAO), které jsou vlastně v místě, kde v SPA máš API, a můžeš je testovat úplně stejně.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 09. 2017, 19:43:51
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é.

A není jednodušší a správnější ten timer do instance třídy prostě injektovat?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 09. 2017, 19:57:45
To, že je něco jednoduché neznamená, že je to správné. Že třída implementuje víc rozhraní, to jistě, to je šikovné a velmi často dává smysl. Ale přidávat tam i implementaci mi připadá spíš jako zneužívání dědičnosti (*), které by bylo čistší vyřešit skládáním. Dokážete hodit nějaké ne-za-vlasy-přitažené příklady, kdy je takovéhle využívání mixinů architektonicky správné?

*) Něco jako když si programátor definuje utility funkci v nadtřídě a využívá ji z podtříd, místo co by ji vyčlenil do utility class.

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.

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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Logik 15. 09. 2017, 20:00:50
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"?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 09. 2017, 20:13:38
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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 09. 2017, 21:25:07
- Ve chvíli kdy uživatel vepíše hodnotu, provede se nad všemi hodnotami výpočet
...
 - musí se to zobrazovat co nejdřív, rozhodně bez klikání
...
 Jenže tam musí být timeout aby se zjistilo "už nepíše" a pak ještě nějakou dobu trvá, než server vrátí požadavek. A mezitím uživatel začne třeba zase psát... prostě to není ono.


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?

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

Mně se právě možnost vytváření vlastních komponent s troškou JS líbí. Většinou toho JS není tolik, aby byly problémy s typy atd. Ale jasně že se to snadno řekne, ale někdo to musí udělat :-)

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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 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 :)

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: JSH 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).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: JSH 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 (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 (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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 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ů
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Pavel Tišnovský 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Mirek Prýmek 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%"! ;)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 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#?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 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?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrM 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dvdmchl 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 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.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ondra Satai Nekola 17. 09. 2017, 10:40:29
Tohle nema s interpretovany/kompilovany nic spolecneho.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: v 17. 09. 2017, 10:50:39
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.
moje babička, budiž jí země lehká, by vám řekla "mluvi mluvi a duša v něm spi", já bych dodal, že fakt není jediný kompilovaný jazyk
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Mirek Prýmek 17. 09. 2017, 12:53:48
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.
Což je správně, protože null je legitimní hodnota daného typu. Chyba je právě v tomhle, ne v typovém systému (v tomhle případě).

Citace
I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
T. Hoare
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 13:32:10
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.
Což je správně, protože null je legitimní hodnota daného typu. Chyba je právě v tomhle, ne v typovém systému (v tomhle případě).

PHP 7.0 null za legitimní hodnotu nepovažuje a je to tak správně.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Mirek Prýmek 17. 09. 2017, 13:57:37
PHP 7.0 null za legitimní hodnotu nepovažuje a je to tak správně.
Nejen PHP 7 :) https://stackoverflow.com/a/34570644/3150343

P.S. zásadní jazyk, který tam chybí, je Scala.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 17. 09. 2017, 14:53:03
P.S. zásadní jazyk, který tam chybí, je Scala.

No a pak tam chybí i ta Java, která od verze 8 rovněž má Optional typ.

Ale jak už bylo napsáno výše, problém s NPE opravdu není ve špatné typové kontrole.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Mirek Prýmek 17. 09. 2017, 15:50:39
No a pak tam chybí i ta Java, která od verze 8 rovněž má Optional typ.
Nejde ani tak o to, jestli ho jazyk má, jako spíš nakolik se v něm používá (např. ve standardní knihovně).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 17. 09. 2017, 17:00:28
No a pak tam chybí i ta Java, která od verze 8 rovněž má Optional typ.
Nejde ani tak o to, jestli ho jazyk má, jako spíš nakolik se v něm používá (např. ve standardní knihovně).
Asi tak. On je optional už i v C++ (17), ale proti Rustu kde je jeho použití prakticky nutnost je to krapet jinde.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 17:10:09
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.

s tímhle naprosto souhlasím. Bavíme se zde o webovém frontendu a borci sem tahají C a assembler. K typování - viděl jsem dost projektů ve statických jazycích, na které se bál kdokoliv sáhnout a naopak přehledné a protestované projekty a knihovny v dynamických jazycích. V JS používám flow, ale nevidím v tom jen samé výhody.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 17:29:47
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.

Chyby tohoto typu se často stávají při přehození pořadí parametrů funkce nebo konstruktoru v jazycích neumějících pojmenované parametry.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 17:38:50
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.

Myslíte něco jako typecheck dokorátor? Ten není moc použitelný. Kontrolovat za běhu, že pole intů je skutečně pole intů, by bylo dost neefektivní. Pro statickou kontrolu neslouží testy, ale nástroje jako Mypy.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 17:43:25
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.

Chyby tohoto typu se často stávají při přehození pořadí parametrů funkce nebo konstruktoru v jazycích neumějících pojmenované parametry.

S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz. V Pythonu bude asi vše odkazem, nebo snad ne? Zas tak dalece jsem Python nezkoumal.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 17. 09. 2017, 17:50:48
S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz.

Takže k parametrům přistupuješ přes indexy toho pole? tyjo...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 17:52:08
Myslíte něco jako typecheck dokorátor? Ten není moc použitelný. Kontrolovat za běhu, že pole intů je skutečně pole intů, by bylo dost neefektivní. Pro statickou kontrolu neslouží testy, ale nástroje jako Mypy.

Není náhodou Mypy jen jinou implementací dekorátorů pro typovou kontrolu? Pokud je to jen pro statickou typovou kontrolu, tak se IMHO jedná jen o sadu unifikovaných jednotkových testů, což samozřejmě není špatně.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 17:57:50
S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz.

Takže k parametrům přistupuješ přes indexy toho pole? tyjo...

To není pole, ale slovník či seznam. Pole by mi k ničemu nebylo, neboť by mi chyběly ty názvy.

Ovšem může to být jakákoli struktura, například strom. Vždy si však musím rozmyslet, zda ji potřebuji předat hodnotou či odkazem. Například u $_POST je to vcelku jedno, neboť jeho obsah (snad) nikdo nemění. Přesto ho předávám pro jistotu hodnotou.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 17:59:35
S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz.

Takže k parametrům přistupuješ přes indexy toho pole? tyjo...

v PHP se slovník nazývá pole.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 18:01:10
Myslíte něco jako typecheck dokorátor? Ten není moc použitelný. Kontrolovat za běhu, že pole intů je skutečně pole intů, by bylo dost neefektivní. Pro statickou kontrolu neslouží testy, ale nástroje jako Mypy.

Není náhodou Mypy jen jinou implementací dekorátorů pro typovou kontrolu? Pokud je to jen pro statickou typovou kontrolu, tak se IMHO jedná jen o sadu unifikovaných jednotkových testů, což samozřejmě není špatně.

ne. http://mypy-lang.org/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 17. 09. 2017, 18:03:14
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ů.
V takovém C++ je i dynamické typování, jen to není idiomatické.

Když už někdo touží po typech, ať použije dependent types, tam teprve začíná zábava.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 18:14:22
S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz.

Takže k parametrům přistupuješ přes indexy toho pole? tyjo...

v PHP se slovník nazývá pole.

PHP má pro všechny kolekce jedinou datovou strukturu - je dobré je v diskizi rozlišovat, aby nedocházelo k omylům. Pole má celočíselné indexy a prochází se cyklem "for". Pro ostatní kolekce to neplatí. U seznamu nás indexy nezajímají, u slovníku to jsou klíčem stringy, u množiny nás zajímají jen klíče. Prochází se cyklem "foreach", případně se zpracovávají trojicí map-filter-reduce.

Takže k parametrům přistupuji přes klíče. Je to jednoduché, robustní a svižné.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 17. 09. 2017, 18:16:39
S pojmenovanými parametry je v některých jazycích trochu potíž. V PHP jsem to nahradil předáváním hodnot přes array a dost se mi to osvědčilo. Metoda si snadno zkontroluje, zda má všechna potřebná data a provede požadovanou akci.

Array se v PHP předává hodnotou (líná kopie), objekt odkazem. I to je dobré brát v potaz.

Takže k parametrům přistupuješ přes indexy toho pole? tyjo...

v PHP se slovník nazývá pole.

Ah, ok, dik za pripomenuti, ze je to trosku jiny svet ;-)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 18:52:09
v PHP se slovník nazývá pole.

Ah, ok, dik za pripomenuti, ze je to trosku jiny svet ;-)

Proto se snažím držet sémantického označování, i když je to vše jen "array".

V Pythonu jsou na to samostatné syntaxe, tam to vypadá lépe.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 17. 09. 2017, 20:47:08
Kit: Ukaž nám nějaký tvoje zdrojáky, portfolio, nebo něco.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 20:58:45
Kit: Ukaž nám nějaký tvoje zdrojáky, portfolio, nebo něco.

Stejně bys tomu nerozuměl a jen bys kritizoval...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrM 17. 09. 2017, 21:13:35
Takže k parametrům přistupuji přes klíče. Je to jednoduché, robustní a svižné.

Fakt? Jaká je režie? Jak to vychází v porovnání pro pět stringů proti tomu, když jinde víš, že hodnota je na [SP + 8]?

Jak to šlape, pokud máš v cyklu zavolat 100 000x funkci s čtyřma parametrama, když musíš při každým volání 4x najít příslušnou položku  slovníku, aktualizovat ji, zavolat funkci s odkazem na slovník, najít příslušnou položku slovníku, přečíst ji,...? Jaký je čas v porovnání s klasickýma parametrama funkce?

Jak moc ten slovník žere paměť s porovnáním klasických parametrů ve stacku? Přece jenom, klíče musíš někde uchovávat ... Když máš 50 vnořených funkcí při rekurzi, musí to být opravdu radost.

A jak zajistíš, že ve slovníku pod "teplota" neuložíš před voláním funkce omylem z nějaké proměnné tlak? Se statickým typováním při přehození  parametrů kompilátor mrkne na protoypy a použije polymorfismus, nebo tě pošle do háje.

Co se stane, když do slovníku pod ten klíč vložím string a funkce potřebuje reálný číslo? Co se stane, když tam vložím instanci třídy a ono to chce integer? Přece ve funkci nevíš, co jsi tam narval...

Kit: Ukaž nám nějaký tvoje zdrojáky, portfolio, nebo něco.

Stejně bys tomu nerozuměl a jen bys kritizoval...

Takže ty to kituješ jak sklenářský učedník?  :-\
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 21:35:36
Takže k parametrům přistupuji přes klíče. Je to jednoduché, robustní a svižné.

Fakt? Jaká je režie? Jak to vychází v porovnání pro pět stringů proti tomu, když jinde víš, že hodnota je na [SP + 8]?

Jak to šlape, pokud máš v cyklu zavolat 100 000x funkci s čtyřma parametrama, když musíš při každým volání 4x najít příslušnou položku  slovníku, aktualizovat ji, zavolat funkci s odkazem na slovník, najít příslušnou položku slovníku, přečíst ji,...? Jaký je čas v porovnání s klasickýma parametrama funkce?

Jak moc ten slovník žere paměť s porovnáním klasických parametrů ve stacku? Přece jenom, klíče musíš někde uchovávat ... Když máš 50 vnořených funkcí při rekurzi, musí to být opravdu radost.

A jak zajistíš, že ve slovníku pod "teplota" neuložíš před voláním funkce omylem z nějaké proměnné tlak? Se statickým typováním při přehození  parametrů kompilátor mrkne na protoypy a použije polymorfismus, nebo tě pošle do háje.

Co se stane, když do slovníku pod ten klíč vložím string a funkce potřebuje reálný číslo? Co se stane, když tam vložím instanci třídy a ono to chce integer? Přece ve funkci nevíš, co jsi tam narval...

Kit: Ukaž nám nějaký tvoje zdrojáky, portfolio, nebo něco.

Stejně bys tomu nerozuměl a jen bys kritizoval...

Takže ty to kituješ jak sklenářský učedník?  :-\

Kit zde občas píše šílenosti, ale tohle je dobrá praktika. Mnohem lepší než poziční parametry, ve kterých se snadno dělají chyby a není na první pohled vidět, co který parametr znamená. Vytváření speciálního typu pro všechno by bylo zbytečně pracné.

Zabývat se mikrooptimalizacemi má smysl možná u funkce, kterou voláte 10000+-krát.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 21:38:36
Takže k parametrům přistupuji přes klíče. Je to jednoduché, robustní a svižné.

Fakt? Jaká je režie? Jak to vychází v porovnání pro pět stringů proti tomu, když jinde víš, že hodnota je na [SP + 8]?

Režie je v porovnání s ostatními běžně používanými technikami velmi nízká. Co s tím má společného [SP + 8]? V assembleru už nedělám.

Jak to šlape, pokud máš v cyklu zavolat 100 000x funkci s čtyřma parametrama, když musíš při každým volání 4x najít příslušnou položku  slovníku, aktualizovat ji, zavolat funkci s odkazem na slovník, najít příslušnou položku slovníku, přečíst ji,...? Jaký je čas v porovnání s klasickýma parametrama funkce?

Proč bych to proboha dělal? Takové věci se dělají možná v Céčku, ale v PHP by to bylo jen plýtvání výkonem.

Jak moc ten slovník žere paměť s porovnáním klasických parametrů ve stacku? Přece jenom, klíče musíš někde uchovávat ... Když máš 50 vnořených funkcí při rekurzi, musí to být opravdu radost.

Na matematické výpočty si PHP neberu. Ten slovník si nebere žádnou paměť navíc, na vrcholu zásobníku je pouze přidán další odkaz. Ke kopírování dochází teprve ve chvíli, kdy se ten slovník snažíš modifikovat. Je snad jasné že by to byl hloupý postup a plýtval bys přitom nejen pamětí, ale i výkonem.

A jak zajistíš, že ve slovníku pod "teplota" neuložíš před voláním funkce omylem z nějaké proměnné tlak? Se statickým typováním při přehození  parametrů kompilátor mrkne na protoypy a použije polymorfismus, nebo tě pošle do háje.

Jednoduše:
Kód: [Vybrat]
$stav = array('teplota' => 36.7, 'tlak' => '120/60');
$pacient->update($stav);

V reálu to vypadá ještě jednodušeji:
Kód: [Vybrat]
$pacient->update($_POST);
Jak si metoda update() může splést takto zadané údaje?

Co se stane, když do slovníku pod ten klíč vložím string a funkce potřebuje reálný číslo? Co se stane, když tam vložím instanci třídy a ono to chce integer? Přece ve funkci nevíš, co jsi tam narval...

Tohle si přece ta metoda zkontroluje sama při validaci. Pokud se jí něco nelíbí, tak vyhodí výjimku.

Prosím, abys toto vlákno, které je o Pythonu, nezatěžoval dodazy na PHP.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ondra Satai Nekola 17. 09. 2017, 21:48:44
Prehlidka code smellu, co se prezentuje jako chvalyhodna technika.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 17. 09. 2017, 22:04:11
Prehlidka code smellu, co se prezentuje jako chvalyhodna technika.

moderní PHP neznám. V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 17. 09. 2017, 22:18:10
...
https://docs.microsoft.com/en-us/dotnet/core/index (https://docs.microsoft.com/en-us/dotnet/core/index)
To nemeni nic na tom ze Python je multiplatformnejsi ako .NET.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 17. 09. 2017, 22:22:08
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Jako v Pythonu jsou ty pojmenované parametry šikovná věc. Ale alespoň ti to hlídá platné argumenty. Bez toho je to tak nějak naprd.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: moud 17. 09. 2017, 22:23:57
Prehlidka code smellu, co se prezentuje jako chvalyhodna technika.

moderní PHP neznám. V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

To asi jo, ale co napriklad to predavani tlaku (tedy dvou hodnot se znamym rozsahem) ve forme retezce? A zrovna ve vlaknu, ktere se tyka datovych typu :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 17. 09. 2017, 22:25:20
Když už někdo touží po typech, ať použije dependent types, tam teprve začíná zábava.

Neměl by si po ruce nějaké texty? Jsem si to studoval, ale furt jsem podle všeho nepochopil tu pointu. Měl bych chápat Haskellovské typy, třídy a víceméně kinds, ale furt mě míjí jaký typ problémů řeší tyhlencty závislostní typy.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 17. 09. 2017, 22:34:44
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.
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 22:35:20
moderní PHP neznám. V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Ano, v PHP options objects používám i s těmi defaultními parametry. Jen to nevypadá tak hezky jako v tom Javascriptu. Pokud je to vhodné, tak si array uvnitř metody přetypuji na (object), například pokud chci data přímo použít v šabloně. Pro array má však PHP víc použitelných funkcí.

V Pythonu by se to dalo použít také, ale pojmenované parametry přeci jen vypadají elegantněji. Otázkou je, zda by to vypadalo stejně elegantně i pro 42 parametrů a jak by to vypadalo, pokud by se ty parametry načítaly z configu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 09. 2017, 22:58:31
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Jako v Pythonu jsou ty pojmenované parametry šikovná věc. Ale alespoň ti to hlídá platné argumenty. Bez toho je to tak nějak naprd.

Tohle se musí podchytit v jednotkových testech, jinak se případná chyba hledá blbě. Spešl objekt (např. Messenger) můžeš použít také a chovat se to bude prakticky stejně.

Otázkou je, zda potřebuješ validovat vstupní hodnoty ještě předtím, než je předáš metodě. Mně se osvědčila validace uvnitř metody, resp. validátor se dá injektovat jako druhý parametr.

Metody, které taková data zpracovávají, si vždy ta data kontrolují a sanitují do takové míry, jakou potřebují. Jiné požadavky bude mít insert(), jiné search() a jiné find(). Vstupní data však mohou být pokaždé stejná.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Lemming 17. 09. 2017, 23:43:12
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Typescript tohle vzhledem k typové kontrole dává na další level. Je tam možno napsat signaturu ve stylu:

Citace
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 18. 09. 2017, 00:11:52
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Typescript tohle vzhledem k typové kontrole dává na další level. Je tam možno napsat signaturu ve stylu:

Citace
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.

Jo, tohle by šlo.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 18. 09. 2017, 02:26:53
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.
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.
Když člověk hledá vývojáře, tak je pak otázka, jak najít ty sečtělé...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Aoidhghean 18. 09. 2017, 02:55:47
Když už někdo touží po typech, ať použije dependent types, tam teprve začíná zábava.

Neměl by si po ruce nějaké texty? Jsem si to studoval, ale furt jsem podle všeho nepochopil tu pointu. Měl bych chápat Haskellovské typy, třídy a víceméně kinds, ale furt mě míjí jaký typ problémů řeší tyhlencty závislostní typy.
Tady je to názorně popsáno: http://www.cse.chalmers.se/~peterd/papers/DependentTypesAtWork.pdf
nicméně z čistě praktického pohledu jsou podle mě důležitější druhy (kinds), ty závislé typy jsou dost akademické. Na druhou stranu, když mám důkaz správnosti programu, nepotřebuju jednotkové testy :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: jpu 18. 09. 2017, 10:56:59
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.
v knizkach vsetko nenajdes, a niektore veci sa vyriesia skusenostami. ale mas pravdu, dnes je to modny trend napisat niekam.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: noef 18. 09. 2017, 11:21:02
...
Kód: [Vybrat]
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.

+1

Options object v TS je dost hezky, nepovinne veci staci oznacit "?" a pokud se uzivatel funkce preklepne v nazvu klice, tak mu to TS hned vrati s chybou :).

K tem path dep. types - pokud chces nejake prakticke ukazky, tak treba tato prednaska (https://www.youtube.com/watch?v=gonVdPyVwQQ) o Idris mi prijde dobra (Idris syntaxi vychazi z Haskellu).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 18. 09. 2017, 19:16:54
Víte co je průser v PHP? Že neumí tohle:

function f(array<int> cisla) {}

Přitom tohle jde už i v Pythonu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dvdmchl 18. 09. 2017, 19:46:02
Víte co je průser v PHP? Že neumí tohle:

function f(array<int> cisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php (http://php.net/manual/en/functions.arguments.php) pole jdou předávat od PHP 5.1
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 18. 09. 2017, 19:55:00
Víte co je průser v PHP? Že neumí tohle:

function f(array<int> cisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php (http://php.net/manual/en/functions.arguments.php) pole jdou předávat od PHP 5.1

Vaše deklarace funkce, či dokonce metody je ale prasárna, co se stane, když s tím int už nevystačíte a budete potřebovat změnit typ?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: DotNetGuy 18. 09. 2017, 20:07:32
Víte co je průser v PHP? Že neumí tohle:

function f(array<int> cisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php (http://php.net/manual/en/functions.arguments.php) pole jdou předávat od PHP 5.1

Nemůžeš si říct pole čeho.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 18. 09. 2017, 20:20:42
Víte co je průser v PHP? Že neumí tohle:

function f(array<int> cisla) {}

Přitom tohle jde už i v Pythonu.

Je to průser i v C#, protože tam to jde také.

V PHP by mi tato konstrukce byla jaksi k ničemu, protože PHP je slabě typovým jazykem.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 04. 12. 2017, 10:57:45
Nechci vám kazit radost, ale ta statistika nepredikuje růst Pythonu podle počtu dotazů, ale podl počtu návštěv. A důležitý není ani tak aktuální počet, jako kontinuálně a prudce rostoucí trend. A ten se nedá vysvětlit jinak, než rostoucí popularitou jazyka.

A není divu, je ti jazyk přehledný, flexibilní, robustní, jednoduchý a se spoustou užitečných knihoven. Díky tomu se etabloval ve spoustě oblastech. Systémové skripty, cli aplikace, jednoduché gui aplikace jak systémové (gui konfigurátory) tak uživatelské, matematika a akademická sféra, webové aplikace, skriptovací jazyk pro psaní pluginů jiných aplikací (vim, gedit, gimp, open office,  civilization iv, world of tanks, maya, inkscape, blender, ...), hobby elektronice (raspberry pi, micropython pro mikrokontrolery) a v neposední řadě se etabloval jako jazyk pro výuku programování. Pro děti je jako první jazyk ideální, mám s tím dobré zkušenosti, je použitelný cca od 8 let, výborný zvláště ve spojení s věcmi jako raspberry pi sense hat a podobnými hmatatelnými věcmi.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 04. 12. 2017, 11:03:43
Mě se Python líbí a to už jsem vyzkoušel spoustu často obskurních jazyků.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PedroKV 10. 12. 2017, 09:42:46
jo, ale to odsazování zleva je peklo.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 10. 12. 2017, 10:31:31
jo, ale to odsazování zleva je peklo.

jde o zvyk. Znáte %paste?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 10. 12. 2017, 13:21:13
jo, ale to odsazování zleva je peklo.
Používejte Pycharm, ten bude odsazovat za vás.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 10. 12. 2017, 14:51:43
jo, ale to odsazování zleva je peklo.

V čem to píšete, že to neumí odsazovat "samo"?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: soriako 10. 12. 2017, 15:32:27
já programuju v mousepadu ;D mám zvýrazněnou syntaxi ale odsazovat i psát musím sám, nenavrhuje mi to při psaní všemožný kraviny, mám to radši čistý
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 10. 12. 2017, 16:12:44
já programuju v mousepadu ;D mám zvýrazněnou syntaxi ale odsazovat i psát musím sám, nenavrhuje mi to při psaní všemožný kraviny, mám to radši čistý

A v Pythonu to bylo zavedeno proto, aby lidi co to "mají rádi radši čistý" odsazovat museli a to odszaování bylo stejné pro všechny :-)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: D.A. Tiger 10. 12. 2017, 16:27:24
[Stefan]
Muj nazor je, ze Python je modni vystrelek, ktery zase casem prejde. Tak jako tu byla vlna TCL, C#, Javy a ja nevim ceho vseho. Casem se omrzi a prijde jina vlna. Treba Go. To je jedno. Hlavne, ze se budou mit lide o cem hadat, a pripadne prechytrali manageri nad cim on***at.   

Osobne mam k PPP jazykum docela averzi. Nejmensi k Perlu a nejvetsi prave k Pythonu. Dovedes si prestavit, jakou radost mi udelali tvurci Godot Enginu, kdyz Godot script je v podstate skoro klon Pythonu :-D  Trvalo mi to leta, ale pochopil jsem jednu vec. Programator by mel v prve rade umet programovat. Jazyk je potom az druha vec... Nemusim ho myt zrovna v lasce, ale pokud umim programovat , naucit se dalsi jazyk je podobne jak naucit se ridit dalsi typ vozidla.

A co se tyce Zive.cz... Ja to radeji ani nectu.

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 10. 12. 2017, 18:08:00
[Stefan]
Muj nazor je, ze Python je modni vystrelek, ktery zase casem prejde. Tak jako tu byla vlna TCL, C#, Javy a ja nevim ceho vseho. Casem se omrzi a prijde jina vlna. Treba Go. To je jedno. Hlavne, ze se budou mit lide o cem hadat, a pripadne prechytrali manageri nad cim on***at.   

Osobne mam k PPP jazykum docela averzi. Nejmensi k Perlu a nejvetsi prave k Pythonu. Dovedes si prestavit, jakou radost mi udelali tvurci Godot Enginu, kdyz Godot script je v podstate skoro klon Pythonu :-D  Trvalo mi to leta, ale pochopil jsem jednu vec. Programator by mel v prve rade umet programovat. Jazyk je potom az druha vec... Nemusim ho myt zrovna v lasce, ale pokud umim programovat , naucit se dalsi jazyk je podobne jak naucit se ridit dalsi typ vozidla.

A co se tyce Zive.cz... Ja to radeji ani nectu.

A co se vám na Pythonu nelíbí?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 10. 12. 2017, 19:01:03
Nechci vám kazit radost, ale ta statistika nepredikuje růst Pythonu podle počtu dotazů, ale podl počtu návštěv. A důležitý není ani tak aktuální počet, jako kontinuálně a prudce rostoucí trend. A ten se nedá vysvětlit jinak, než rostoucí popularitou jazyka.

A není divu, je ti jazyk přehledný, flexibilní, robustní, jednoduchý a se spoustou užitečných knihoven. Díky tomu se etabloval ve spoustě oblastech. Systémové skripty, cli aplikace, jednoduché gui aplikace jak systémové (gui konfigurátory) tak uživatelské, matematika a akademická sféra, webové aplikace, skriptovací jazyk pro psaní pluginů jiných aplikací (vim, gedit, gimp, open office,  civilization iv, world of tanks, maya, inkscape, blender, ...), hobby elektronice (raspberry pi, micropython pro mikrokontrolery) a v neposední řadě se etabloval jako jazyk pro výuku programování. Pro děti je jako první jazyk ideální, mám s tím dobré zkušenosti, je použitelný cca od 8 let, výborný zvláště ve spojení s věcmi jako raspberry pi sense hat a podobnými hmatatelnými věcmi.

Python je basic 21. storocia, tak sa aj pouziva. Na viac nema, lebo je vdaka pouzivatelskej privetivosti  gramblavy na zlozitejsie projekty a je pomaly.  S tym som sa naucil zit, kriticke casti sa daju prepisat do c-cka. Standardna kniznica by mohla byt v pythone krapatek vacsia.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 10. 12. 2017, 19:13:55
já programuju v mousepadu ;D mám zvýrazněnou syntaxi ale odsazovat i psát musím sám, nenavrhuje mi to při psaní všemožný kraviny, mám to radši čistý

I "obyčejný" mcedit a spousta dalších "obyčejných" editorů umí autoindent. :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 10. 12. 2017, 19:33:38
Python je basic 21. storocia, tak sa aj pouziva. Na viac nema, lebo je vdaka pouzivatelskej privetivosti  gramblavy na zlozitejsie projekty a je pomaly.  S tym som sa naucil zit, kriticke casti sa daju prepisat do c-cka. Standardna kniznica by mohla byt v pythone krapatek vacsia.

Co vám přesně chybí ve standartní knihovně? Podle mě Python vůbec neznáte.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 10. 12. 2017, 20:22:28
A co se vám na Pythonu nelíbí?
Mě se například nelíbí, že se o něm šíří fámy, jako že je Python přehledný. Přitom proti jiným jazykům je strašně nepřehledný, někdo dokonce tvrdí (s nadsázkou), že není rozdíl mezi komprimovaným Javascriptem a Pythonem.

Pokud se podívám na nějakou funkci, ať už v jakémkoliv C, nebo v Javě, PHP, Javascriptu, tak nějak dokážu přehledně zjistit, o co ve funkci jde. Python, bez základů jako jsou závorky, je pro mě zcela nečitelný. Spoléhat na odsazení, tedy postavit funkčnost jazyka na designu (odsazení) je podle mě s prominutím prasárna. Je to jako postavit funkčnost na základě barevného schématu.

Já osobně Python vůbec nechápu, a to jsem dokonce psával skripty pro Gimp v LISPu :-(
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 10. 12. 2017, 20:35:51
Spoléhat na odsazení, tedy postavit funkčnost jazyka na designu (odsazení) je podle mě s prominutím prasárna. Je to jako postavit funkčnost na základě barevného schématu.

Váš názor chápu, protože jsem měl svého času podobný a pak jsem jej změnil, protože odsazování při programování (ač jsem si to původně myslel) ničemu nevadí a kód to opravdu zpřehledňuje. Uvědomil jsem si, že to co mi na tom vadilo byl jen zvyk z Céčka ap.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: webař 10. 12. 2017, 20:37:33
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 10. 12. 2017, 20:45:32
Spoléhat na odsazení, tedy postavit funkčnost jazyka na designu (odsazení) je podle mě s prominutím prasárna. Je to jako postavit funkčnost na základě barevného schématu.

Váš názor chápu, protože jsem měl svého času podobný a pak jsem jej změnil, protože odsazování při programování (ač jsem si to původně myslel) ničemu nevadí a kód to opravdu zpřehledňuje. Uvědomil jsem si, že to co mi na tom vadilo byl jen zvyk z Céčka ap.

No v Pythonu píšete právě jen to, co vnímáte v Cčku, závorky mozek vypouští, zůstává jen informace o blocích, a to se mi na něm právě líbí.Dřív jsem míval strach, že posunutím celého bloku na jinou úroveň odsazení může znamenat chybu, která se bude těžce hledat, ale za roky programování v Pythonu se mi to stalo snad jen jednou.

Programovat bez odsazování? To si zase nedovedu představit já. Odsazoval jsem i ve Fortranu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 10. 12. 2017, 20:59:32
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.

Typování použít můžete, ale nemusíte. Mypy už funguje docela dobře.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: webař 10. 12. 2017, 21:03:03
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.

Typování použít můžete, ale nemusíte. Mypy už funguje docela dobře.

A proč bych ho nepoužil? Není žádný důvod nevědět, co v kódu mám za typy. A už má i rozhraní a abstraktní třídy? Totiž dodnes nechápu, jak v něm někdo něco většího dělá, když půlku věcí to nemá. Jsme přece dospělí, tak to není třeba :D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 10. 12. 2017, 21:04:11
Jediný problém s odsazováním, na který jsem narazil, bylo pasteování do ipythonu, než jsem objevil příkaz %paste. V editoru s tím nikdy nebyl problém.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: c++man 10. 12. 2017, 21:14:18
Mě Python přestal bavit před několika lety, kdy jsem v něm programoval na fulltime (Django). Souvisí to taky s nástupem Node.js a všech těch Angulárů a Reactů. Prostě s Djangem jsme přestávali stačit, ujížděl nám vlak.

Než naskakovat do rozjetého JS vlaku, úplně jsem opustil weby a vrhnul se do C++. Šablony, smart pointry a všechny tyhle vychytávky, tam je stále co objevovat. U Pythonu jsem měl již vše objevené.

Suma sumárum, Python je fajn, ale časem se omrzí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 10. 12. 2017, 21:37:42
Python je basic 21. storocia, tak sa aj pouziva. Na viac nema, lebo je vdaka pouzivatelskej privetivosti  gramblavy na zlozitejsie projekty a je pomaly.  S tym som sa naucil zit, kriticke casti sa daju prepisat do c-cka. Standardna kniznica by mohla byt v pythone krapatek vacsia.

Co vám přesně chybí ve standartní knihovně? Podle mě Python vůbec neznáte.

Co sa tyka problemov, ktore som zaznamenal, je slaba podpora spracovania xml a chybali mi thread safe kolekcie. Vseobecne, slaba podpora multithreadingu. Svoje dojmy, "co neznam" si nechajte pre staru blazkovu prosim.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ladislav Jech 10. 12. 2017, 21:43:36
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.

To je nesmysl protoze asi nemas moc poneti co se deje, naopak python v kombinaci s high peformance libs v c/c++ je zakladem mnoha AI frameworku, viz napr. flagship Googlu TensorFlow.

Dalsi nesmysl je dynamicky typovany...to je samozrejme option 1, option 2 je staticky typovany.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 10. 12. 2017, 22:13:47
Co sa tyka problemov, ktore som zaznamenal, je slaba podpora spracovania xml a chybali mi thread safe kolekcie. Vseobecne, slaba podpora multithreadingu. Svoje dojmy, "co neznam" si nechajte pre staru blazkovu prosim.

doporučený způsob komunikace mezi vlákny je pomocí front, které jsou thread safe. Můžete potom snadno nahradit vlákna procesy. I ostatní standardní kolekce jsou AFAIK threadsafe.

Nejbezpečnější je nahradit vlákna koroutinami a blokující volání obalit run_in_executor.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 10. 12. 2017, 23:14:05
Co sa tyka problemov, ktore som zaznamenal, je slaba podpora spracovania xml a chybali mi thread safe kolekcie. Vseobecne, slaba podpora multithreadingu. Svoje dojmy, "co neznam" si nechajte pre staru blazkovu prosim.

doporučený způsob komunikace mezi vlákny je pomocí front, které jsou thread safe. Můžete potom snadno nahradit vlákna procesy. I ostatní standardní kolekce jsou AFAIK threadsafe.

Nejbezpečnější je nahradit vlákna koroutinami a blokující volání obalit run_in_executor.

Nie su "ostatni kolekce" thread safe, to len cpython nezvlada paralelizmus :(
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: y, 11. 12. 2017, 05:24:48
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.

To je nesmysl protoze asi nemas moc poneti co se deje, naopak python v kombinaci s high peformance libs v c/c++ je zakladem mnoha AI frameworku, viz napr. flagship Googlu TensorFlow.

Dalsi nesmysl je dynamicky typovany...to je samozrejme option 1, option 2 je staticky typovany.
Souhlasi. Pikantni je, ze numpy/scipy a dalsi bindingy jsou na takove urovni, ze perl ani dalsi jazyky nesahaji pythonu ani nad podrazku barefoot botek. V oblasti kombinace ML a scientific computation je to v zasade golden standard (a ne, R ani Matlab vam neuznam, prave proto, ze rikam "kombinace ML a SC").
Osobne asi nikdy neodpustim vyvojarum schizma python2 a python3, ale to uz je jen muj soukromy boj. Nehlede na to, ze   na tom maji lvi podil i distribuce -- navzdory PEP maji nektere linkovane python na python2 a nektere na python3 (ArchLinuxi, ja te vidim!).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 11. 12. 2017, 06:33:47
Nie su "ostatni kolekce" thread safe, to len cpython nezvlada paralelizmus :(

Python běží v jednom systémovém vlákně, ale to neznamená, že jsou operace s kolekcemi automaticky atomické. Queue používá threading.Condition.

https://github.com/python/cpython/blob/2.7/Lib/Queue.py

Volání funkcí implementovaných v C je defaultně atomické. Proto i standardní kolekce by měly být thread safe.

Kolekce z knhovny collections thread safe nejsou.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 11. 12. 2017, 08:10:06
je slaba podpora spracovania xml

co konkrétně chybí?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 11. 12. 2017, 09:13:05
Citace
Programovat bez odsazování?
Aby nedošlo k nedorozumění, já nemám nic proti odsazování, já samozřejmě odsazuji, vadí mi, že u Pythonu se spoléhá jen na odsazení. Asi opravdu záleží na každém, ale já mám v mozku zakořeněno, že bloky jsou rozdělené závorkami, nevím jak to vysvětlit, ale je to jako čtení Matrixu (i když to může být pro někoho úsměvné), prostě podívate se na kód a díky závorkám máte hned přehled, co kde začíná a končí. Vyznat se v nějaké smyčce v Pythonu, kde je více podsmyček, více podmínek, vyskakování pomocí breaků - to je peklo pro oči. :-( Když jsem viděl Python poprvé, hned jsem hledal, jak používat závorky, atd. No a samozřejmě jsem se dostal na diskuze, kde toto byl hlavní diskutovaný problém a kde jej lidí přirovnávali ke komprimovanému javascriptu. To už raději překousnu "ukecanost" u jiných jazyků, než číst Python.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 11. 12. 2017, 10:03:26
Vyznat se v nějaké smyčce v Pythonu, kde je více podsmyček, více podmínek, vyskakování pomocí breaků - to je peklo pro oči. :-(

Souhlas, od toho je potřeba takové špagety rozdělovat do krátkých vhodně pojmenovaných metod. Obvykle není důvod míchat různé úrovně abstrakce do jedné metody.

Ale je mi jasné, že s cizím kódem nic neuděláš...

Odsazování mi u pythonu až tak nevadí. Je pravda, že někdy při kopírování do vimu dochází k přidávání mezer na novém řádku a to pythonní kód zlikviduje. Narozdíl od bloků vymezených závorkami, kde informace zůstala zachována a  stačí zavolat automatické přeformátování.

Mně na pythonu zásadně vadí chybějící typy parametrů metod. Čtení cizího kódu je silně nepřehledné, protože nikdy nevím, co do metody vstupuje za typy, zda metoda něco vrací, jaký datový typ. V pythonu 2 je peklo s textovými typy - vyleze z knihovny bytes, string nebo unicode? Z os funkcí leze bytes, z xml funkcí rovnou unicode string, z něčeho neunicode string. Dokud si to člověk nespustí (třeba v testu, to je jedno), neví, jak to dopadne. Musí zkoušet různé řetězce, zda mu to nepadne na unicode znaku. A konverze z python2 do 3 není právě z těchto důvodů nijak jednoduchá, i když jsou na to nástroje. Do googlu musí člověk vždy zadávat, který python má na mysli, rozsáhlých projektů jen pro python2 je pořád spoustu a žijí dál (pro mě např. https://github.com/mopidy/mopidy ).

Typehinty v projektech skoro nikdo nepoužívá (ani v nových pro python3), stačí se podívat na github...

Zrovna včera jsem v PyCharmu řešil přejmenování fieldu třídy - v půlce výskytů to dal, druhou půlku nenašel, protože byl ve starším kódu, který ještě nepoužíval type hinty. A vůbec se mu nedivím, to by musel být kouzelník. Takhle pro mě nevypadá příjemné programování...

Python má krásné konstrukce, je příjemně stručný, jednoduché/jednorázové věci jsou v něm rychle hotové (asi proto se tolik používá pro prototyping a výzkum), ale chybějící uvedené typy a schizma mezi verzemi mu u mě hodně škodí. Ve svém kódu důsledně používám typehinty, abstraktní třídy (abc), generika (Generic), ale python ve svých domácích projektech používám kvůli dostupnosti knihoven pro vše možné a tam je to vždy otravný pokus/omyl.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 13:43:22
Hlavně je dynamicky typovaný, tak na seriózní použití k ničemu. Ale na hraní a webíky je to fajn. Jinak mi přijde čitelný, ale to mu moc nepomůže.
Dynamicky typovaný jazyk lze také používat seriózně.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 13:50:56
Citace
Programovat bez odsazování?
Asi opravdu záleží na každém, ale já mám v mozku zakořeněno, že bloky jsou rozdělené závorkami, nevím jak to vysvětlit, ale je to jako čtení Matrixu (i když to může být pro někoho úsměvné), prostě podívate se na kód a díky závorkám máte hned přehled, co kde začíná a končí. Vyznat se v nějaké smyčce v Pythonu, kde je více podsmyček, více podmínek, vyskakování pomocí breaků - to je peklo pro oči.

To je jenom o zvyku, já na Python přešel z C a zvykl jsem si velmi rychlel. Naopak už bych se nechtěl vracet k C.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 13:54:00
Vyznat se v nějaké smyčce v Pythonu, kde je více podsmyček, více podmínek, vyskakování pomocí breaků - to je peklo pro oči. :-(
Je pravda, že někdy při kopírování do vimu dochází k přidávání mezer na novém řádku a to pythonní kód zlikviduje. Narozdíl od bloků vymezených závorkami, kde informace zůstala zachována a  stačí zavolat automatické přeformátování.

Od toho má vim režim paste.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 11. 12. 2017, 14:00:28
Od toho má vim režim paste.

Zajímavé, jak se používá při vkládání textu zkopírovaného prostředním tlačítkem myši? Díky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 14:00:53
A co se vám na Pythonu nelíbí?
Mě se například nelíbí, že se o něm šíří fámy, jako že je Python přehledný. Přitom proti jiným jazykům je strašně nepřehledný, někdo dokonce tvrdí (s nadsázkou), že není rozdíl mezi komprimovaným Javascriptem a Pythonem.

Pokud se podívám na nějakou funkci, ať už v jakémkoliv C, nebo v Javě, PHP, Javascriptu, tak nějak dokážu přehledně zjistit, o co ve funkci jde. Python, bez základů jako jsou závorky, je pro mě zcela nečitelný. Spoléhat na odsazení, tedy postavit funkčnost jazyka na designu (odsazení) je podle mě s prominutím prasárna. Je to jako postavit funkčnost na základě barevného schématu.

Já osobně Python vůbec nechápu, a to jsem dokonce psával skripty pro Gimp v LISPu :-(
Python je přehledný až intuitivní.  A to i díky odsazování. Že se najde pár jedinců, kterým to vadí na věci nic nemění.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 11. 12. 2017, 14:06:20
Osobně na povinném odsazování žádnou intuitivnost nevidím, protože odsazený je každý slušně napsaný kód, to umí každý editor. Akorát tam ty závorky drží strukturu napevno, což také považuji za výhodu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 14:06:26
Od toho má vim režim paste.

Zajímavé, jak se používá při vkládání textu zkopírovaného prostředním tlačítkem myši? Díky.
Úplně normálně, je vidět, že to vůbec nepoužíváte. Vymýšlíte teoretické problémy, které v praxi nevadí. V GUI se paste zapíná automaticky, protože vim dokáže rozlišit mezi psaním na klávesnici a kopírováním.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 14:22:42
Osobně na povinném odsazování žádnou intuitivnost nevidím, protože odsazený je každý slušně napsaný kód, to umí každý editor. Akorát tam ty závorky drží strukturu napevno, což také považuji za výhodu.

Ta intuitivnost je videt prave na tom, ze odsazuje kazdy i kdyz nemusi a podporuji to vsechny ide, vyzaduji vsechny coding style. A kdyz stejne kazdy strukturuje svuj kod takto (protoze je to intuitivni a prehledne), je zbytecne strukturu kodu dublovane vymezovat jesté nejakymi znackami.

Kdyby to bylo k necemu, budou si programatori v pythonu paralelne vyznacovat strukturu kodu znackami a ide to budou podporovat. Ale realna potreba, na rozdil od odsazovani, to proste a jednoduse neni.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 11. 12. 2017, 14:57:19
Úplně normálně, je vidět, že to vůbec nepoužíváte. Vymýšlíte teoretické problémy, které v praxi nevadí. V GUI se paste zapíná automaticky, protože vim dokáže rozlišit mezi psaním na klávesnici a kopírováním.

Normálně si v terminálu pustím vim a pokud je vzdáleně přes SSH (na serveru), velice často při vkládání myší vkládá na každém dalším řádku odsazení, takže se to celé rozjede. Problém to je a velice nepříjemný. Ale našel jsem si to https://unix.stackexchange.com/questions/199203/why-does-vim-indent-pasted-code-incorrectly , takže už vím, jak to paste mode zapnout.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 11. 12. 2017, 18:48:09
Citace
Python je přehledný až intuitivní.  A to i díky odsazování. Že se najde pár jedinců, kterým to vadí na věci nic nemění.

Jak jsem psal už asi dvakrát, nejde o "odsazování", ale o "jen odsazování". Pro mě je "jen odsazení" bez závorek prostě nečitelné a nepřehledné. Při čtení cizího robustního kódu je to prostě problém. Na Pythonu mi bohužel nic přehledného nepříjde a už vůbec ho nevnímám jako intuitivní.

Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 11. 12. 2017, 19:05:05

Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

Ohraničení začátku bloku tam máš, to je ta dvojtečka :-) Hele dej tomu den, dva, potom ti to připadne nádherně elegantní. Vím o čem mluvím, taky jsem tomu zpočátku moc nevěřil (pořád jsem hledal přesná pravidla, jak to ten intepret pozná, kde je konec bloku a tak), ale skutečně JE to čitelné bez těch balastních závorek okolo.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 11. 12. 2017, 19:06:46
Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic.

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
Zvyk. Nic jiného.

Jen tak pro zajímavost, odsazují i další jazyky. Například Haskell, Idris, a další. Uštří se spousta balastu, a čtenář se může soustředit na podstatu problému. To je motivace.

Proč to tedy rovnou nepsat v jednom řádku?
Jde to taky. Ale pak se tam musí dávat ty závorky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 11. 12. 2017, 19:10:47
Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: D.A. Tiger 11. 12. 2017, 19:43:13
Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

Pletete se. Me to treba prijde taky hure citelne a mam radsi kdyz jsou bloky ohraniceny. Byt pitomim Begin-End, Zahlavy-End, nebo zavorkami.  Nerikam, ze to neni o zvyku a ze se to neda prekaonat, ale to jeste neznamena, ze se mi to tak musi libit a, ze kdyz to neni problem pro Vas, tak to nemusi byt problem pro nikoho dalsiho.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 11. 12. 2017, 20:01:27
Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

Pletete se. Me to treba prijde taky hure citelne a mam radsi kdyz jsou bloky ohraniceny. Byt pitomim Begin-End, Zahlavy-End, nebo zavorkami.  Nerikam, ze to neni o zvyku a ze se to neda prekaonat, ale to jeste neznamena, ze se mi to tak musi libit a, ze kdyz to neni problem pro Vas, tak to nemusi byt problem pro nikoho dalsiho.

já jsem netvrdil, že to každému přijde lépe čitelné nebo že je to lepší. Má to své výhody i nevýhody, ale určitě ta pravidla nejsou složitá. PetrN se o porozumění podle všeho ani nesnažil.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dotaz 11. 12. 2017, 20:07:13
A už se dá v Pythonu dělat refactoring? V běžných jazycích věc pár vteřin a u Pythonu to nikdy nefungovalo. Vážně se to pak hodí na větší věci?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: armabeton 11. 12. 2017, 20:52:12
A už se dá v Pythonu dělat refactoring? V běžných jazycích věc pár vteřin a u Pythonu to nikdy nefungovalo. Vážně se to pak hodí na větší věci?

Definuj napřed běžný jazyk :-) Podle Tiobe i podle OpenHubu je Python běžným jazykem, běžnějším než například JavaScript (ale asi na Root chodí hodně develů webovek a málo lidí z ML a podobných oborů).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dotaz 11. 12. 2017, 21:16:55
Na root evidentně chodí jen patlalové frčící na Python vlně, která už ani není v módě. Už to tu někdo psal. Udělal refactoring a půlka kódu přestala fungovat. Tak mě jen napadlo, jestli už to v Pythonu jde a nebo je to jako v každém dynamicky typovaném jazyce - nejde. Tím by pak bylo řečené úplně vše a není třeba řešit, jestli je na něco použitelný.

Takže běžný jazyk je ten, ve kterém se dají dělat velké věci a funguje tam refactoring ;D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 21:18:18
Citace
Python je přehledný až intuitivní.  A to i díky odsazování. Že se najde pár jedinců, kterým to vadí na věci nic nemění.

Jak jsem psal už asi dvakrát, nejde o "odsazování", ale o "jen odsazování". Pro mě je "jen odsazení" bez závorek prostě nečitelné a nepřehledné. Při čtení cizího robustního kódu je to prostě problém. Na Pythonu mi bohužel nic přehledného nepříjde a už vůbec ho nevnímám jako intuitivní.

Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

Má to začátek i konec a je z toho krásně zřejmé, kde začíná nový blok. Jestli to nevidíš, tak máš nějakou vzácnou poruchu vnímání. Naopak spousta vnořených závorek u C, JavaScriptu atd. je evidentně nepřehledná, a proto si stejně každý programátor pomáhá odsazováním, tedy grafickým způsobem.

Pythonu lze vyčíst, že jeho kód nelze 'komprimovat' po vzoru *.min.js, ale rozhodně ne nepřehlednost.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 21:24:47
Na root evidentně chodí jen patlalové frčící na Python vlně, která už ani není v módě. Už to tu někdo psal. Udělal refactoring a půlka kódu přestala fungovat. Tak mě jen napadlo, jestli už to v Pythonu jde a nebo je to jako v každém dynamicky typovaném jazyce - nejde. Tím by pak bylo řečené úplně vše a není třeba řešit, jestli je na něco použitelný.

Takže běžný jazyk je ten, ve kterém se dají dělat velké věci a funguje tam refactoring ;D
Snaha ohnout realitu. Běžný jazyk je ten, který se běžně používá. A celý tento thread vzniknul právě na popud toho, že Python je čím dál tím víc populárnější.

Refactoring je věc IDE nikoliv jazyka a světe div se, řada programátorů ho nepotřebuje, protože dobrovolně používá IDE, který ho neumí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dotaz 11. 12. 2017, 21:29:48
OK, tak je to třeba dobrý jazyk pro neprogramátory. Jako třeba Baltík. Víc populární? Asi jako Bitcoin. Kdo ho asi používá...

Aha, takže IDE by to mohlo umět, ale neumí. Jakou magii by IDE použilo? Černou? A "programátor" nechce vyvíjet, tak radši nepoužije vhodné nástroje. Jako zabít hřebík jde i trubkou od topení, že jo, ale profík to dělat běžně nebude.

Přijde mi, že podobné nesmysly tu čtu pokaždé. Nemám nic proti Pythonu, jen se ptám. Ale tohle přece nemůže nikdo myslet vážně.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 21:45:50
Určitě je to dobrý jazyk pro neprogramátory, např. v akademické sféře se uchytil velmi dobře. A určitě ne pro svoji kryptičnost a nečitelnost, z které ho někteří obviňují. Zrovna tak je to výborný první jazyk pro výuku programování.

Obecně se uchytil tam, kde není potřeba úspornost a vysoký výkon, byť začal pronikat i na mikročipy. Jeho výhodou je jednoduchost a vysoká efektivita vývoje. Proto se hodně používá.

S nadsázkou lze říct, že refactoring je potřeba pro nezkušené programátory, pro začátečníky, kteří nedovedou odhadnout potřeby a neustále prasí a místo vývoje předělávají svůj kód.

Co se týče hřebíků, ty se nezabíjejí, ale zatloukají nebo nastřelují. A Python je pořádné kladivo na spoustu problémů a profíci ho proto běžně použíají. To je fakt, se kteým se budete muset smířit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 11. 12. 2017, 22:07:47
A už se dá v Pythonu dělat refactoring? V běžných jazycích věc pár vteřin a u Pythonu to nikdy nefungovalo. Vážně se to pak hodí na větší věci?

Proč by to nemělo fungovat? http://www.pydev.org/manual_adv_refactoring.html
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 11. 12. 2017, 22:27:05
A už se dá v Pythonu dělat refactoring? V běžných jazycích věc pár vteřin a u Pythonu to nikdy nefungovalo. Vážně se to pak hodí na větší věci?

Proč by to nemělo fungovat? http://www.pydev.org/manual_adv_refactoring.html
Protože jemu v nějakém jeho IDE něco nefungovalo a tak je jasné, že to Python neumí. Ono toto tvrzení samo o sobě je nesmyslné a vyplývající z nepochopení, co to refactoring vlastně je. Každý jazyk umožňuje refactoring. Řeč by tak měla jít o automatizovaném rf, kde je to hlavně o schopnostech ide. Ale někteří lidé, zvyklí na bloatware IDE, si bez jeho pomoci už neumí refactoring ani ředstavit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 11. 12. 2017, 23:00:14
Protože jemu v nějakém jeho IDE něco nefungovalo a tak je jasné, že to Python neumí.

Jo všiml jsem si u jeho dalších příspěvků, že to nechápe. Refactoring je opravdu věcí IDE nikoli jazyka, pokud si někdo myslí, že to má/musí podporovat jazyk, je úplně mimo.

Z Wikipedie:

Citace
Podpora refaktoringu

Některé postupy při refaktorování je možné přesně definovat a zcela automatizovat a dnes je již v moderních vývojových prostředích jako je Eclipse a další nabízena podpora při refaktoringu. Technika vyjmout metodu z dlouhé metody již tedy není vůbec složitá a prakticky u něj nemusíte ani moc přemýšlet, udělá jej za vás program. Někteří si při psaní kódu ani neuvědomují, že např. změna názvu proměnné je také refaktoring, který za nás provede program, avšak dříve tato změna byla velmi náročná.

Na stejné stránce je také upozornění, že se s refactoringem musí opatrně...

Citace
Jak správně refaktorovat

Pokud refaktoring zcela neovládáme, může být velice riskantní, jelikož upravujeme funkční kód a touto úpravou si do kódu můžeme zavést velice záludné chyby a program již nemusí být funkční. Proto mezi hlavní zásadu patří mít před samotným refaktorováním připravenou dobrou sadu testů, kterou spustíme po každé změně.

Další důležitá zásada je refaktorovat po malých krocích a to neustále a ihned testovat, zda nám někde nevznikla chyba. Většina programátorů provádí refaktoring, aniž by o něm věděla, jelikož jedna z nejdůležitějších zásad programátora je, aby ve svém kódu neměl duplicity. Když nějakou duplicitu objeví, snaží se jí zbavit, a to většinou nevědomky refaktoringem, a to konkrétně postupem vyjmout metodu.

Takže pokud si někdo něco refactoringem rozbil, tak to bude spíš než chyba jazyka (vyloučeno, jazyk refactoring na starosti nemá) nebo chyba IDE (refactoring je velmi nebezpečná věc a měla by se s tímto vědomím používat) s největší pravděpodobností jeho vlastní neznalost a nešikovnost jak takovou mocnou věc používat.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: D.A. Tiger 11. 12. 2017, 23:02:08
[Ivan Nový]
Ptal jste se mne "A co se vám na Pythonu nelíbí?". Chtel jsem Vam odpovedet reakci na prispevek kolegy

[dotaz]
"OK, tak je to třeba dobrý jazyk pro neprogramátory."

Ale zjistil jsem, ze je to jednak na dlouho (a ja zitra vstavam do rachoty :-D ) a jednak si to jeste poradne promyslim. Docela kandidat na zapisek do blogu. Dik za inspiraci a az bude hotov pastnu sem link. Doufam, ze to nevadi...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 11. 12. 2017, 23:14:22
[Ivan Nový]
Ptal jste se mne "A co se vám na Pythonu nelíbí?". Chtel jsem Vam odpovedet reakci na prispevek kolegy

[dotaz]
"OK, tak je to třeba dobrý jazyk pro neprogramátory."

Ale zjistil jsem, ze je to jednak na dlouho (a ja zitra vstavam do rachoty :-D ) a jednak si to jeste poradne promyslim. Docela kandidat na zapisek do blogu. Dik za inspiraci a az bude hotov pastnu sem link. Doufam, ze to nevadi...
Budu se těšit
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 11. 12. 2017, 23:36:00
To je jenom o zvyku, já na Python přešel z C a zvykl jsem si velmi rychlel. Naopak už bych se nechtěl vracet k C.
To je "nevyhoda" Pythonu. Kto raz v nom zacne robit a zvykne si na tu obrovsku produktivitu oproti inym jazykom, tak uz nema chut robit v inom jazyku.
Jedine na com som sa ja Pythone popalil bolo odsadzovanie. Treba sa tam rozhodnut mefzi TAB a SPACE a potom to dodrziavat. Pracoval som na viacerych pocitacoch v rozne nastavenych editoroch a pomiesali sa mi TAB a SPACE . Potom ked sa ten zdrojak otvoril v nejakom inom editore (kde boli inac nastavene TABy) bolo odsadzovanie rozbite. Zistilo sa to az po dlhsej dobe a potom som to musel opravovat. Preto si myslim, ze ak Python vyriesi tento problem, bude to najlepsi jazyk. Uvital by som, keby v buducej verzii Pythonu  namiesto odsadzovania bola aj moznost davat tam end - podobne ako je to napr. v Ruby - t.j. napr, namiesto:
Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
takto
Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
    end
end
Tych par riadkov navyse by mi nevadilo  :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 11. 12. 2017, 23:44:40
Jedine na com som sa ja Pythone popalil bolo odsadzovanie.

To je zajímavé, protože přesně z toho jsem měl největší obavy než jsem se s Pythonem začal pořádně kamarádit a přitom jsem s tím za ty roky nikdy problém neměl...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 00:28:07
Jedine na com som sa ja Pythone popalil bolo odsadzovanie.

To je zajímavé, protože přesně z toho jsem měl největší obavy než jsem se s Pythonem začal pořádně kamarádit a přitom jsem s tím za ty roky nikdy problém neměl...
Zrejme si svoje zdrojaky editoval vzdy na tom istom PC, kde si mal nejake jendoznacne nastavenie. Ja som editoval ten isty zdrojak vselikde - v praci na PC, doma na PC, alebo na notebooku a zrejme som nemal vsade rovnako nastaveny vim.
Napodiv vsecko fungovalo, len sa zistilo, ze ked sa zdrojak otvoril v nejakom inom editore, tak bol nespravne odsadeny. Ja som vtedy pouzival vim. Pouzival som nastavenie 1TAB = 2SPACEs a k tomu este nahradzovat TAB za SPACEs, ale zrejme na inom PC (kde som to pisal) som to zabudol nastavit, takze v kode boli v konecnom dosledku aj taby aj spacy, a ked to otvorili v inom editore, kde bolo nstavenie napr TAB = 4 SPACEs tak to bolo rozhadzane. Vyslo to najavo az po niekolkych rokoch, co tie utility fungovali. Dalo sa to dost jednoducho aj opravit (vo Vime), ale predsa - opravovat takto odsadenie v starych programoch, ktore uz par rokov chodia je dost adrenalinove. Odvtedy to vnimam ako nedostatok Pythonu a nieco naco si treba davat poriadny pozor a co by bolo v buducnosti vhodne zlepsit. Odvetdy na odsadzovanie pouzivam SPACEs a po kazdej malej zmene vzdy checkujem, ci nie je v zdrojaku zabudnuty nejaky TAB.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 12. 12. 2017, 00:50:59
Zrejme si svoje zdrojaky editoval vzdy na tom istom PC, kde si mal nejake jendoznacne nastavenie. Ja som editoval ten isty zdrojak vselikde - v praci na PC, doma na PC, alebo na notebooku a zrejme som nemal vsade rovnako nastaveny vim.

Chybný předpoklad... Naopak editoval jsem na různých PC v různých editorech/IDE, překopírovával i mezi nimi přes clipboard, zkoušel si různé kusy kódy kopírované z netu ap. Možná jen jiná sada editorů/IDE než u vás, že se mi to nikdy neprojevilo nebo jsem věděl přesněji co dělám, kdo ví...
Nevylučuji, že se problémy nemůžou stát při konverzi TAB → SPACE ap., ale problém vzniká spíše zřídka za zřejmě nestandardních podmínek.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: wsh 12. 12. 2017, 00:53:40
Zrejme si svoje zdrojaky editoval vzdy na tom istom PC, kde si mal nejake jendoznacne nastavenie. ...  Odvetdy na odsadzovanie pouzivam SPACEs a po kazdej malej zmene vzdy checkujem, ci nie je v zdrojaku zabudnuty nejaky TAB.

Ideálně si do projektu commitnout .editorconfig. A v rámci CI (nebo jako git hook) používat flake8. A je po problémech.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 05:48:58
Uvital by som, keby v buducej verzii Pythonu  namiesto odsadzovania bola aj moznost davat tam end - podobne ako je to napr. v Ruby - t.j. napr, namiesto:
Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
takto
Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x
    end
end
Tych par riadkov navyse by mi nevadilo  :)
Tak mě by to vadilo, zhoršuje to přehlednost kodu, protože skrz to člověk vidí méně informací pohromadě. Proto platí doporučení psát krátké metody, a velké rozdělovat. Takže tyto řádky navíc vedou k větší fragmentaci kódu. Ale klidně si je tam doplňuj pomocí komentářů, pokád ti to přijde přehlednější
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 06:09:48
Jedine na com som sa ja Pythone popalil bolo odsadzovanie.

To je zajímavé, protože přesně z toho jsem měl největší obavy než jsem se s Pythonem začal pořádně kamarádit a přitom jsem s tím za ty roky nikdy problém neměl...
Zrejme si svoje zdrojaky editoval vzdy na tom istom PC, kde si mal nejake jendoznacne nastavenie. Ja som editoval ten isty zdrojak vselikde - v praci na PC, doma na PC, alebo na notebooku a zrejme som nemal vsade rovnako nastaveny vim.
Napodiv vsecko fungovalo, len sa zistilo, ze ked sa zdrojak otvoril v nejakom inom editore, tak bol nespravne odsadeny. Ja som vtedy pouzival vim. Pouzival som nastavenie 1TAB = 2SPACEs a k tomu este nahradzovat TAB za SPACEs, ale zrejme na inom PC (kde som to pisal) som to zabudol nastavit, takze v kode boli v konecnom dosledku aj taby aj spacy, a ked to otvorili v inom editore, kde bolo nstavenie napr TAB = 4 SPACEs tak to bolo rozhadzane. Vyslo to najavo az po niekolkych rokoch, co tie utility fungovali. Dalo sa to dost jednoducho aj opravit (vo Vime), ale predsa - opravovat takto odsadenie v starych programoch, ktore uz par rokov chodia je dost adrenalinove. Odvtedy to vnimam ako nedostatok Pythonu a nieco naco si treba davat poriadny pozor a co by bolo v buducnosti vhodne zlepsit. Odvetdy na odsadzovanie pouzivam SPACEs a po kazdej malej zmene vzdy checkujem, ci nie je v zdrojaku zabudnuty nejaky TAB.
Stacilo by, kdybys dodrzoval oficialni Style Guide, ktere stanovuji, ze u python codu se pouzivaji pro odsazeni 4 mezery. https://www.python.org/dev/peps/pep-0008/

Ja programuji napric platformami a napric pocitaci, v ruznych editorech. A to velmi intenzivne, kod sdilim pres dropbox na nekolika pocitacich a prubezne ho upravuji z rady pocitacu, dokonce i na android tabletu jsem toho uz dost napsal a nemam s tim sebemensi problem. Nepredstzvuje to realny problem, nestoji to ani za rec, staci akorat zacatecnikovi rict, odsazuj ctyrma mezerama, at jsi kompatibilni se svetem a to je cele.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 06:15:02
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 06:20:51
A kdybys to myslel s Pythonem opravdu vazne, pak doporucuji pouzivat https://www.pylint.org, rozumne editory to umoznuji automaticky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 07:23:05
A kdybys to myslel s Pythonem opravdu vazne, pak doporucuji pouzivat https://www.pylint.org, rozumne editory to umoznuji automaticky.

Doporučuji ten výše zmíněný flake8. Pylint je moc přísný. Je to integrované ve všech lepších editorech a IDE.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 07:24:00
Stacilo by, kdybys dodrzoval oficialni Style Guide, ktere stanovuji, ze u python codu se pouzivaji pro odsazeni 4 mezery. https://www.python.org/dev/peps/pep-0008/
odsadzujem vzdy iba o 2 medzery, pretoze nemam rad moc dlhe riadky.
Pouzivam dlzku riadku iba do 80 znakov (okrem Javy - tam to nejde) .
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 07:25:19
python3 uz kombinaci mezer a tabu nedovoluje vubec.
Pouzivam iba python 2.x
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 07:37:27
Stacilo by, kdybys dodrzoval oficialni Style Guide, ktere stanovuji, ze u python codu se pouzivaji pro odsazeni 4 mezery. https://www.python.org/dev/peps/pep-0008/
odsadzujem vzdy iba o 2 medzery, pretoze nemam rad moc dlhe riadky.
Pouzivam dlzku riadku iba do 80 znakov (okrem Javy - tam to nejde) .

to je špatně. Takový kód bude nekompatibilní se vším ostatním. Délku řádku lze dodržet i při odsazování 4 mezery.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 07:45:27
A kdybys to myslel s Pythonem opravdu vazne, pak doporucuji pouzivat https://www.pylint.org, rozumne editory to umoznuji automaticky.

Doporučuji ten výše zmíněný flake8. Pylint je moc přísný. Je to integrované ve všech lepších editorech a IDE.

Pylint je konfigurovatelný, takže je tak přísný, jak je potřeba.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 07:50:25
Stacilo by, kdybys dodrzoval oficialni Style Guide, ktere stanovuji, ze u python codu se pouzivaji pro odsazeni 4 mezery. https://www.python.org/dev/peps/pep-0008/
odsadzujem vzdy iba o 2 medzery, pretoze nemam rad moc dlhe riadky.
Pouzivam dlzku riadku iba do 80 znakov (okrem Javy - tam to nejde) .

Uvedený PEP08 stanovuje konvenci 4 mezery pro odsazení, délka řádku 79 pro kód a 72 pro docstring. Takže 4 mezery pro odsazení se nejen že nevylučují s krátkými řádky, vyžaduje se naopak obojí. Ale proč nečůrat proti větru a kolektivní prověřené zkušenosti a následně si navíc na důsledky stěžovat, že?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 07:53:58
python3 uz kombinaci mezer a tabu nedovoluje vubec.
Pouzivam iba python 2.x
No a co? I pro python 2 jsem uvedl řešení. Evidentně si pleteš nejde a nechci. Nepopisuješ objektivní problém, ale subjektivní postojl
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 10:02:51
A kdybys to myslel s Pythonem opravdu vazne, pak doporucuji pouzivat https://www.pylint.org, rozumne editory to umoznuji automaticky.

Doporučuji ten výše zmíněný flake8. Pylint je moc přísný. Je to integrované ve všech lepších editorech a IDE.

Pylint je konfigurovatelný, takže je tak přísný, jak je potřeba.

flake8 funguje rozumně i v defaultním nastavení a integruje víc checkerů dohromady.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 11:31:29
Stacilo by, kdybys dodrzoval oficialni Style Guide, ktere stanovuji, ze u python codu se pouzivaji pro odsazeni 4 mezery. https://www.python.org/dev/peps/pep-0008/
odsadzujem vzdy iba o 2 medzery, pretoze nemam rad moc dlhe riadky.
Pouzivam dlzku riadku iba do 80 znakov (okrem Javy - tam to nejde) .

to je špatně. Takový kód bude nekompatibilní se vším ostatním. Délku řádku lze dodržet i při odsazování 4 mezery.
Ked budem nabuduce nieco robit v pythone skusim 4 medzery.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 12:03:07
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Diky za upozornenie. Budem pouzivat command line option
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)

A este otazka. nedaju sa kontroly zapnut aj vo vnutri kodu akoby importovanim nejakeho modulu  ?
napr. v perle zvyknem pouzivat pragmy: strict a warnings, asi takto:
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...
Je mozne nieco podobne aj v Pythone ?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 12:35:19
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Diky za upozornenie. Budem pouzivat command line option
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)

A este otazka. nedaju sa kontroly zapnut aj vo vnutri kodu akoby importovanim nejakeho modulu  ?
napr. v perle zvyknem pouzivat pragmy: strict a warnings, asi takto:
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...
Je mozne nieco podobne aj v Pythone ?

Přímo v jazyku ne, ale už několikrát zmiňovaný pylint slouží ke kontrole kódu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 12:41:38
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Diky za upozornenie. Budem pouzivat command line option
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)

A este otazka. nedaju sa kontroly zapnut aj vo vnutri kodu akoby importovanim nejakeho modulu  ?
napr. v perle zvyknem pouzivat pragmy: strict a warnings, asi takto:
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...
Je mozne nieco podobne aj v Pythone ?

lepší editory nebo IDE vám to označí jako chybu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 12. 12. 2017, 14:13:11
Citace
začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

Myslel jsem si, že jsme na diskuzním fóru Root.cz ne na Novinky.cz?

Já v Pythonu napsal pouze krátký program na zálohování, když už se stával robustnějším, přepsal jsem si ho v jiném jazyce, protože jsem prostě ztrácel přehlednost. Zajímalo mě, jestli se jenom mě zdá, že je Python nečitelný a tak jsem navšívil pár diskuzních fór, z těch jsem zjistil, že rozhodně nejsem sám.

Každpoádně spíš jde o to, že každému vyhovuje něco jiného, proto se najde hodně zastánců, ale také odpůrců. Já bych rád uvítal něco stručného, co není zase tak ukecané, ale také bych rád za to, aby mě nelimitovaly nesmysly, co se týče formátování. Pokud je Python určen na nějaký rychlý a jednoduchý skript, proč mám kontrolovat, jestli zrovna v daném editoru (a že jich na různých místech používám) je správně nastaven tabulátor (4 nebo 5 mezer) a to dokonce tam, kde nemám možnost toto měnit.

Závorky jsou pro mě důležité: (2 + 5) * 3 není 2 + 5 * 3 a stejně tak to mám s bloky a {} ... } jasně určuje konec bloku, bez toho aniž bych musel trápit mé oči neviditelnými znaky. A je mi jedno, jestli napíšu:

Kód: [Vybrat]
if (a == b) {
  ...
}
nebo
Kód: [Vybrat]
if (a == b) { ... }
Tím ale samozřejmě neříkám, že pro někoho je prostě Python přehledný, pro mě prostě není. A protože se zde v diskuzi opět objevili argumenty obhajující odsazení, po třetí píšu: Nemám nic proti odsazení, také odsazuji ve všech jazycích, které používám, mě ale vadí "jen odsazování".
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 14:40:48
Citace
začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

Myslel jsem si, že jsme na diskuzním fóru Root.cz ne na Novinky.cz?

Právě proto. Technik se takovou věc naučí i kdyby se mu nelíbila.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 15:08:17
Citace
začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

Myslel jsem si, že jsme na diskuzním fóru Root.cz ne na Novinky.cz?
To jsme, dostalo se vám věcné a správné odpovědi.

Já v Pythonu napsal pouze krátký program na zálohování,
Ano, to je docelá vidět, že s ním máte minimální zkušenosti. Já jsem v pythonu napsal desítky tisíc řádků kódu. Kdyby bylo odsazování objektivní problém, věděl bych o tom.

Zajímalo mě, jestli se jenom mě zdá, že je Python nečitelný a tak jsem navšívil pár diskuzních fór, z těch jsem zjistil, že rozhodně nejsem sám.
Zdát se to může i někomu jinému. Ale ve skutečnosti je návržen právě s ohledem na přehlednost, aby nebyl plný podivných znaků. To, že někomu přijde přehlednější změť znaků není přirozené, je to něco jako nemoc z povolání. Připomeňme si:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Já bych rád uvítal něco stručného, co není zase tak ukecané, ale také bych rád za to, aby mě nelimitovaly nesmysly, co se týče formátování.
Python je promyšlený komunitní projekt a žádné nesmysly vás nelimitují, limituje vás vaše předpojatost.

Pokud je Python určen na nějaký rychlý a jednoduchý skript, proč mám kontrolovat, jestli zrovna v daném editoru (a že jich na různých místech používám) je správně nastaven tabulátor (4 nebo 5 mezer) a to dokonce tam, kde nemám možnost toto měnit.
Python je flexibilní a vhodný i ná větší projekty. U krátkého skriptu můžete jednoduše používat mezerník. Ostatně python nikomu nebrání používat 5 mezer a matlal si je používat může. Ale style guide hovoří jásně, odsazuje se 4 mezerami, to je standard. Co ovšem matlal už nemůže je prasit kód a odsazovat v rámci bloku nejednotně.

Závorky jsou pro mě důležité: (2 + 5) * 3 není 2 + 5 * 3 a stejně tak to mám s bloky a {} ... } jasně určuje konec bloku, bez toho aniž bych musel trápit mé oči neviditelnými znaky.
Proč jste nenapsal 2 + (5 * 3) když jsou pro vás závorky důležité? Evidentně to není pravda. Trápení očí je nesmysl, odsazování je přirozeně přehledné strukturování kódu, dělají to všichni aniž by museli. Je to jediné přehledné řešení pro člověka. Závorky jsou pro stroj. Python se přizpůsobuje člověku a respektuje jeho způsob. Nenutí člověka do dublovaného redundantního strukturování.

Ale když budu hrát vaši hru, a dělat, že vám to věřím, tak python nikomu nebrání si v kodu dělat vlastní závorky. Akorát to nikdo nikdy nepoužil, co vím, což myslím jasně vypovídá o tom, že to je k ničemu na rozdíl od odsazování, které naopak dodržuje každý i v případech, že je to nepovinné. A to pro zvýšení přehlednosti. Máte racionální vysvětlení, proč si lidé obdobně kód v pythonu nezpřehledňují nepovinnými závorkami?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Inkvizitor 12. 12. 2017, 17:24:22
Ale když budu hrát vaši hru, a dělat, že vám to věřím, tak python nikomu nebrání si v kodu dělat vlastní závorky. Akorát to nikdo nikdy nepoužil, co vím, což myslím jasně vypovídá o tom, že to je k ničemu na rozdíl od odsazování, které naopak dodržuje každý i v případech, že je to nepovinné. A to pro zvýšení přehlednosti. Máte racionální vysvětlení, proč si lidé obdobně kód v pythonu nezpřehledňují nepovinnými závorkami?

Kód: [Vybrat]
if 1 + 1 == 2:
#{
    while True:
    #{
        print("Tohle fakt funguje!")
    #}
#}
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Vykook 12. 12. 2017, 17:49:44
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Diky za upozornenie. Budem pouzivat command line option
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)

A este otazka. nedaju sa kontroly zapnut aj vo vnutri kodu akoby importovanim nejakeho modulu  ?
napr. v perle zvyknem pouzivat pragmy: strict a warnings, asi takto:
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...
Je mozne nieco podobne aj v Pythone ?

lepší editory nebo IDE vám to označí jako chybu.

Akorát že hlavní pointou(alespoň pro mě) jsou právě ta varování za běhu, takže kontrola v IDE je vcelku k ničemu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 12. 12. 2017, 18:24:08
Mimíchodem, kdyby sis https://www.python.org/dev/peps/pep-0008/ precetl, vedel bys o parametrech -t a -tt a take bys vedel, ze python3 uz kombinaci mezer a tabu nedovoluje vubec.
Diky za upozornenie. Budem pouzivat command line option
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)

A este otazka. nedaju sa kontroly zapnut aj vo vnutri kodu akoby importovanim nejakeho modulu  ?
napr. v perle zvyknem pouzivat pragmy: strict a warnings, asi takto:
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...
Je mozne nieco podobne aj v Pythone ?

lepší editory nebo IDE vám to označí jako chybu.

Akorát že hlavní pointou(alespoň pro mě) jsou právě ta varování za běhu, takže kontrola v IDE je vcelku k ničemu.

Kód: [Vybrat]
from pylint.lint import Run
Run([__file__])
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Cikáda 12. 12. 2017, 18:46:10
Já v Pythonu napsal pouze krátký program na zálohování,
Ano, to je docelá vidět, že s ním máte minimální zkušenosti. Já jsem v pythonu napsal desítky tisíc řádků kódu. Kdyby bylo odsazování objektivní problém, věděl bych o tom.

Tak jistě  :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 12. 12. 2017, 20:11:15
Zdá se vám to moc nebo co? Nedělám to ani na plný úvazek, jen sem tam něco, spíše menší projekty cca 2 až 7 tisíc řádků, akorát to dělám dlouho. S Pythonem jsem začal, když se přecházelo na druhou verzi, a kdy se z něj stal velmi užitečný nástroj. Před tím jsem programoval v C a někdy v té době jsem koketoval s kde čím a hledal něco efektivnějšího, zkoušel jsem tcl, perl, ruby, dokonce i javu a později c#, a lua. Python to vyhrál na plné čáře. Akorát na webu bylo jednu dobu lepší používat php a dodnes je nenahraditelný javascript, ten naopak nabývá stále víc na významu. Dnes se mi osvědčuje dělat aplikace v pythonu a gui k nim ve webovém prohlížeči přes websocket. Dělal jsem věci v týmu i čistě soukromé one man show. Weby, gui aplikace, cli utility, aplikační multithreadové servery, zpracování dat z měřících serverů, data mining. Některé věci jednorázové, některé beží přes patnáct let. Myslím že mi to za ty roky dalo hodně poznání a zkušeností, abych si mohl dovolit říct, že povinné odsazování Pythonu nepředstavuje pro programátora žádný reálný problém. Byť si někteří, co už v tom jednou něco zkusili, myslí opak a přesvědčují o tom ostatní.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 12. 12. 2017, 20:12:54
Citace
začátek bloku je :, konec je řádek s menší úrovní odsazení. Nikomu jinému to nedělá problém.

    Myslel jsem si, že jsme na diskuzním fóru Root.cz ne na Novinky.cz?

To jsme, dostalo se vám věcné a správné odpovědi.

No pokud je odpověď: "Nikomu jinému to nedělá problém" věcná a správná, pak asi nemá smysl nadále pokračovat v diskuzi.

Citace
Ale když budu hrát vaši hru
O jaké hře mluvíte? Vyjadřuji zde můj názor, proč zrovná já mám problém s Pythonem. Žádnou hru zde nahraji.

Citace
Ano, to je docelá vidět, že s ním máte minimální zkušenosti. Já jsem v pythonu napsal desítky tisíc řádků kódu. Kdyby bylo odsazování objektivní problém, věděl bych o tom.

No kromě toho, že mi prostě Python nesedí, jsem také zjistil, že něktěří Pythonisti jsou hodně arogantní.

Každopádně děkuji všem, co se drželi věcné debaty.

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 12. 12. 2017, 20:17:14
Citace
Byť si někteří, co už v tom jednou něco zkusili, myslí opak a přesvědčují o tom ostatní.

Já bych ani neřekl, že někdo chce někoho přesvědčovat. Já opravdu nemám nic proti Pythonu, zkoušel jsem ho vícekrát použít, protože, jak jsem psal, hledal jsem něco stručného, pokud jde o mé komentáře, komentuji můj pohled na Python (proč já osobně s ním mám problém) a rozhodně nikomu nedoporučuji se tím řídit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mln 12. 12. 2017, 20:33:37
 Ludia ktorý radšej použivajú C/C++ jazyk (napr ak ste embedded programator) nemusia zúfať alebo zabíjať čas učením sa Pythonu alebo skriptovacimi jazykmi. V CERNE pre Linux vytvorili zaujimavý softver s názvom Cling interaktívny interpreter C/C++ . Stručné video https://www.youtube.com/watch?v=Lbi7MLS03Yc (https://www.youtube.com/watch?v=Lbi7MLS03Yc)

dlhé video  https://www.youtube.com/watch?v=f9Xfh8pv3Fs (https://www.youtube.com/watch?v=f9Xfh8pv3Fs)

Daju sa stiahnuť skompilovane baliky pre najpopularnejšie distribucie. Samotný Cling netreba inštalovať (stačí mať nainštalovaný g++ a nejaké jeho zavislosti) a cely cling zaberie 1,3 GB.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Cikáda 12. 12. 2017, 21:13:03
Myslím že mi to za ty roky dalo hodně poznání a zkušeností, abych si mohl dovolit říct, že povinné odsazování Pythonu nepředstavuje pro programátora žádný reálný problém.

Odsazování asi ne, horší čitelnost z něj* vycházející asi ano (aspoň tak to předpokládám autor myslel ;) ). Python není špatný, ale na větší projekt bych se mu spíš vyhnul, klidně i ve prospěch Perlu.

*pouze odsazování - bez závorek

Byť si někteří, co už v tom jednou něco zkusili, myslí opak a přesvědčují o tom ostatní.

Spíš mi přijde, že přesvědčuješ ty. Všechny, kteří vyjádřili jen svůj názor.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 12. 12. 2017, 21:19:33
Myslím že mi to za ty roky dalo hodně poznání a zkušeností, abych si mohl dovolit říct, že povinné odsazování Pythonu nepředstavuje pro programátora žádný reálný problém.

Odsazování asi ne, horší čitelnost z něj* vycházející asi ano (aspoň tak to předpokládám autor myslel ;) ). Python není špatný, ale na větší projekt bych se mu spíš vyhnul, klidně i ve prospěch Perlu.

*pouze odsazování - bez závorek

Můj názor:
- Odsazování (bez závorek) rozhodně zvyšuje čitelnost. To je jedna z věcí, která se mi na něm opravdu moc líbí.
- Python je debilní, a na větší projekty bych se mu vyhnul, protože nemá typy a má GIL.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: armabeton 12. 12. 2017, 22:33:26
Daju sa stiahnuť skompilovane baliky pre najpopularnejšie distribucie. Samotný Cling netreba inštalovať (stačí mať nainštalovaný g++ a nejaké jeho zavislosti) a cely cling zaberie 1,3 GB.

Tyjo to je asi 13x vic nez cela JRE a 3x vic ne Rust s celym ekosystemem :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 12. 12. 2017, 23:45:43
Ludia ktorý radšej použivajú C/C++ jazyk (napr ak ste embedded programator) nemusia zúfať alebo zabíjať čas učením sa Pythonu alebo skriptovacimi jazykmi. V CERNE pre Linux vytvorili zaujimavý softver s názvom Cling interaktívny interpreter C/C++ .
Naco sa zaoberat novym C-like skriptovacim jazykom, ked najlepsi je Perl. Je nainstalovany vsade, rokmi overeny a ma tolko modulov ze ziadny novy jazyk ho tak lahko nedozenie. Dalsi zaujimavy kandidat je D, ktory sa da pouzit aj ako skriptovaci jazyk. Po naisntalovani dmd je k dispozicii prikaz rdmd <source.d> , ktory skompiluje D-zdrojak a hned ho aj spusti. Je to velmi sikovne - vytvorene na skriptovanie.   
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 13. 12. 2017, 00:08:55
Ano, to je docelá vidět, že s ním máte minimální zkušenosti. Já jsem v pythonu napsal desítky tisíc řádků kódu. Kdyby bylo odsazování objektivní problém, věděl bych o tom.
A proč by to měl být objektivní problém? Vždyť i PetrN upozorňuje na to, že to je čistě jeho subjektivní pocit z jazyka. Osobně mám Python ráda, v poslední době jsem se zamilovala do Rustu a naopak nesnáším Javu. Prostě se mi v ní nepíše dobře. Sto lidí mi může vysvětlovat že s ní mám jen minimální zkušenosti, ale můj pocit to nezmění.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 09:06:03
A proč by to měl být objektivní problém? Vždyť i PetrN upozorňuje na to, že to je čistě jeho subjektivní pocit z jazyka.

Já si myslím, že pánové mají spor v tom, že PertN naznačuje, že to je chyba jazyka (přestože to je jeho subjektivní "pocit") a Hildebert správně naznačuje, že chyba je v PetrN ne v jazyku :).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 09:13:11
Ano, to je docelá vidět, že s ním máte minimální zkušenosti. Já jsem v pythonu napsal desítky tisíc řádků kódu. Kdyby bylo odsazování objektivní problém, věděl bych o tom.
A proč by to měl být objektivní problém? Vždyť i PetrN upozorňuje na to, že to je čistě jeho subjektivní pocit z jazyka. Osobně mám Python ráda, v poslední době jsem se zamilovala do Rustu a naopak nesnáším Javu. Prostě se mi v ní nepíše dobře. Sto lidí mi může vysvětlovat že s ní mám jen minimální zkušenosti, ale můj pocit to nezmění.

subjektivní dojmy v technice neexistují. Pouze znalost a neznalost. PetrN sám přiznává, že Python nezná. To stejné balki a micron. Objektivní kritiku uvedl pouze BoneFlute.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 09:17:20
Je v diskuzích na rootu zvykem, že diskutující kritizují technologie, které neznají. Podívejte se na libovolnou diskuzi o Javascriptu/Kotlinu/Rustu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 13. 12. 2017, 09:37:55
Je v diskuzích na rootu zvykem, že diskutující kritizují technologie, které neznají. Podívejte se na libovolnou diskuzi o Javascriptu/Kotlinu/Rustu.

Ale to vůbec nevadí, můžete si alespoň udělat obrázek o tom, co a jaký bude budit odpor, když to budete chtít zavést v týmu, nebo použít k vývoji.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: jjjj 13. 12. 2017, 13:08:57
Můj názor:
- Odsazování (bez závorek) rozhodně zvyšuje čitelnost. To je jedna z věcí, která se mi na něm opravdu moc líbí.
- Python je debilní, a na větší projekty bych se mu vyhnul, protože nemá typy a má GIL.

+1

Plus nemožnost refactoringu z toho dělá jazyk maximálně na skriptíky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 13:38:05
Můj názor:
- Odsazování (bez závorek) rozhodně zvyšuje čitelnost. To je jedna z věcí, která se mi na něm opravdu moc líbí.
- Python je debilní, a na větší projekty bych se mu vyhnul, protože nemá typy a má GIL.

+1

Plus nemožnost refactoringu z toho dělá jazyk maximálně na skriptíky.

Odkud pořád tihle tydýti s tímhle nesmyslem vylízají? Vyvrátí se jim to v diskuzi a oni po čase přijdou s touhle kravinou znovu. Kdyby si aspoň tu diskuzi přečetli pořádně a nedělali ze sebe hlupáky! :o
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 13. 12. 2017, 13:42:55
A proč by to měl být objektivní problém? Vždyť i PetrN upozorňuje na to, že to je čistě jeho subjektivní pocit z jazyka.

Já si myslím, že pánové mají spor v tom, že PertN naznačuje, že to je chyba jazyka (přestože to je jeho subjektivní "pocit") a Hildebert správně naznačuje, že chyba je v PetrN ne v jazyku :).

Citace
Já v Pythonu napsal pouze krátký program na zálohování, když už se stával robustnějším, přepsal jsem si ho v jiném jazyce, protože jsem prostě ztrácel přehlednost. Zajímalo mě, jestli se jenom mě zdá, že je Python nečitelný a tak jsem navšívil pár diskuzních fór, z těch jsem zjistil, že rozhodně nejsem sám.

Každpoádně spíš jde o to, že každému vyhovuje něco jiného, proto se najde hodně zastánců, ale také odpůrců. “

V tomhle fakt nevidím náznak že je to chyba jazyka, jen že některým lidem přístup Pythonu nemusí vyhovovat.

subjektivní dojmy v technice neexistují. Pouze znalost a neznalost. PetrN sám přiznává, že Python nezná. To stejné balki a micron. Objektivní kritiku uvedl pouze BoneFlute.

Ale existují. Každý jazyk má některé objektivní vlastnosti, ale to jestli uživateli budou nebo nebudou vadit je čistě subjektivní metrika. Objektivní vlastnost pythonu: Odsazování kódu pro uvození bloku. Mně to vyhovuje, líbí se mi to, ale znám lidi kterým vůbec. PHP má (alespoň ve starších verzích) objektivně dost nekonzistentní standardní knihovnu. Někomu to absolutně nevadí, já byla ráda, že se toho jazyka můžu zbavit a už v něm nikdy nic nepsat. Prostě mi nesedí. Znám člověka co se učil Rust delší dobu než já, ale moc mu svým přístupem nesedl. Tam se dokonce v některých věcech dojmem lišíme natolik, že nesnáší věci ze kterých jsem nadšená.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 13:58:25
V tomhle fakt nevidím náznak že je to chyba jazyka, jen že některým lidem přístup Pythonu nemusí vyhovovat.

Já v tomhle kusu vytrženém z kontextu taky ne... A?

subjektivní dojmy v technice neexistují. Pouze znalost a neznalost. PetrN sám přiznává, že Python nezná. To stejné balki a micron. Objektivní kritiku uvedl pouze BoneFlute.

Ale existují. Každý jazyk má některé objektivní vlastnosti, ale to jestli uživateli budou nebo nebudou vadit je čistě subjektivní metrika.

Dovolím si tvrdit, že kolega myslel ne že v technice "neexistují", ale že v technice nemají co dělat, protože to je k ničemu. ;)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kate 13. 12. 2017, 14:04:13
Dovolím si tvrdit, že kolega myslel ne že v technice "neexistují", ale že v technice nemají co dělat, protože to je k ničemu. ;)
Proč by to bylo k ničemu? Zvlášť momentálně není v IT moc problém dělat s nástrojem který mi vyhovuje a netýrat se jazykem co mi nesedne. Jasně, pokud mi nevadí že mě práce nebaví, můžu se znova doučit Javu nebo PHP, rozšířit si o něco možnost výběru zaměstnání a nejspíš v nich nebudu o moc méně produktivní… Ale proč to dělat, když mě baví jiné věci?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 14:07:53
Dovolím si tvrdit, že kolega myslel ne že v technice "neexistují", ale že v technice nemají co dělat, protože to je k ničemu. ;)
Proč by to bylo k ničemu? Zvlášť momentálně není v IT moc problém dělat s nástrojem který mi vyhovuje a netýrat se jazykem co mi nesedne. Jasně, pokud mi nevadí že mě práce nebaví, můžu se znova doučit Javu nebo PHP, rozšířit si o něco možnost výběru zaměstnání a nejspíš v nich nebudu o moc méně produktivní… Ale proč to dělat, když mě baví jiné věci?

My se bavíme o "technice" ne o "Kate" ;) to bude asi to nedorozumění, ne?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: v 13. 12. 2017, 14:16:44
Dovolím si tvrdit, že kolega myslel ne že v technice "neexistují", ale že v technice nemají co dělat, protože to je k ničemu. ;)
Proč by to bylo k ničemu? Zvlášť momentálně není v IT moc problém dělat s nástrojem který mi vyhovuje a netýrat se jazykem co mi nesedne. Jasně, pokud mi nevadí že mě práce nebaví, můžu se znova doučit Javu nebo PHP, rozšířit si o něco možnost výběru zaměstnání a nejspíš v nich nebudu o moc méně produktivní… Ale proč to dělat, když mě baví jiné věci?

My se bavíme o "technice" ne o "Kate" ;) to bude asi to nedorozumění, ne?
nebo možná fachidiotismus (viz "turing tar pit")
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 14:20:30
Dovolím si tvrdit, že kolega myslel ne že v technice "neexistují", ale že v technice nemají co dělat, protože to je k ničemu. ;)
Proč by to bylo k ničemu? Zvlášť momentálně není v IT moc problém dělat s nástrojem který mi vyhovuje a netýrat se jazykem co mi nesedne. Jasně, pokud mi nevadí že mě práce nebaví, můžu se znova doučit Javu nebo PHP, rozšířit si o něco možnost výběru zaměstnání a nejspíš v nich nebudu o moc méně produktivní… Ale proč to dělat, když mě baví jiné věci?

vyhovuje vám to, protože to znáte, je to vhodné pro váš projekt, pro váš způsob práce. Neměla byste problém přeučit se na něco jiného.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 14:31:33
diskuze začala kvůli příspěvku

Takový zápis je pro mě noční můra, žádný začátek, žádný konec, žadné ohraničení for, prostě nic. Proč to tedy rovnou nepsat v jednom řádku?

Kód: [Vybrat]
for list in list_of_lists:
    for x in list:
        print x

,který dost přehání. Tak možná vyvolal přehnané reakce.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr 13. 12. 2017, 14:31:40
Můj názor:
- Odsazování (bez závorek) rozhodně zvyšuje čitelnost. To je jedna z věcí, která se mi na něm opravdu moc líbí.
- Python je debilní, a na větší projekty bych se mu vyhnul, protože nemá typy a má GIL.

+1

Plus nemožnost refactoringu z toho dělá jazyk maximálně na skriptíky.
Každý jazyk umožňuje refactoring. Jediné co ho omezuje, jsou rom paměti a neznalost programátora.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 14:57:36
Můj názor:
- Odsazování (bez závorek) rozhodně zvyšuje čitelnost. To je jedna z věcí, která se mi na něm opravdu moc líbí.
- Python je debilní, a na větší projekty bych se mu vyhnul, protože nemá typy a má GIL.

+1

Plus nemožnost refactoringu z toho dělá jazyk maximálně na skriptíky.

Odkud pořád tihle tydýti s tímhle nesmyslem vylízají? Vyvrátí se jim to v diskuzi a oni po čase přijdou s touhle kravinou znovu. Kdyby si aspoň tu diskuzi přečetli pořádně a nedělali ze sebe hlupáky! :o

Tyhle "kraviny" a "nesmysly" řeším už pár let pořád dokola, když dělám na svých domácích projektech. Zrovna včera jsem vytahoval třídu do samostatného souboru. Konkrétně třídu Handler z tohoto zdrojáku (https://github.com/mopidy/mopidy/blob/develop/mopidy/audio/actor.py#L177 - předělávám to pro své účely ) To, co je v javě u vnitřní třídy práce na pár sekund (F6 Move v idee), jsem v Pycharmu dělal možná půl hodiny. Společné struktury mezi třídami jsem musel vytáhnout úplně jinam, jinak se cyklické importy nedaly vyřešit.

Samozřejmě doplňuji všude typehinty - opět po spuštění cyklické importy. OK, dám  do podmínky if TYPE_CHECKING - ejhle interpretu se nelíbí dvojtečkové typehinty - nezná import, který je jen pro IDE. Proč mu to chybí netuším, když s nimi stejně nepracuje. Takže pěkně názvy tříd do apostrofů, aby to IDE pochopilo a interpret neřval, stringy v typehintech neřeší. Super práce pokus/omyl.

Původní proměnné byly protected (audio._playbin) a protože byl Handler v jednom souboru s Audio, nijak mu to nevadilo. Po vytažení už na ně samozřejmě nevidí - další runtime chyba. Opět v javě nehrozí, IDE to rovnou zkontroluje a nedovolí takový refaktoring, příp. rovnou změní viditelnost na public. Nevadí, přejmenuji z _playbin na playbin. Ale chyba - kde proměnná audio nemá uvedený typehint na Audio, tam nepřejmenuje. Takže v původním souboru je audio.playbin, ve druhém zůstává audio._playbin. Dozvím se po spuštění. Kdybych však měl typehint včas, věděl by, že proměnná audio v Handleru je třídy Audio, jejíž field _playbin zrovna přejmenovávám, a přejmenoval by mi i ty v Handleru. Jenže jsem bohužel zvolil opačný postup...

Ještě mohu při přejmenování zaškrtnout i "search in comments and strings". Pak by to přejmenoval OK, ovšem úplně všude, což je samozřejmě zcela špatně. Obzvláště při dodržování zde tolik propagovaných krátkých stručných názvů je to chuťovka - třeba přejmenovat close jedné třídy na closeFile zmrví celý echt pythonní zdroják dle PEPxxx s úspornými názvy. To je přesně důvod, proč v pythonu jednoslovné metody (tedy jedno sloveso) nepoužívám takřka vůbec, vše se snažím mít jedinečné, aby to šlo dohledat a nemotaly se tam nijak nesouvisející výskyty stejného slova.

Když důsledně všude používám typehinty, IDE dává přejmenování a přesuny jakžtakž spolehlivě a nemusím po každé změně půl hodiny opravovat nesmysly. Bohužel jsem nepřišel třeba na to, jak například typehintem přetypovat stávající proměnnou jinak, než

Kód: [Vybrat]
def method(param: Message)-> None:
  if isinstance(param, SpecialMessage):
    param = param # type: SpecialMessage
    param.metoda_definovana_ve_special_message()

Konkrétní ukázku mám třeba https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 . Ví někdo, jak to udělat jednodušeji? Moc rád se poučím.

Metody v API knihoven bez typehintů začínají kontrolou datových typů, např. https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L465 nebo dokonce https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L1497 . To je přece peklo...

Typehinty jsou v pythonu teprve v posledních verzích, sláva bohu za to. Bohužel bude ještě chvíli trvat, než je IDE začnou pořádně používat. Třeba Generic + TypeVar - pro přehlednost samozřejmě používám, ale typehint se ani v nejnovějším PyCharmu stejně nechytá, konkrétní hodnotu to stejně nepozná (např. https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L22 vs. jeho vzdálený potomek https://github.com/pavhofman/aio/blob/master/sources/filesource.py#L23 či https://github.com/pavhofman/aio/blob/master/sources/cdsource.py#L26 ).

Tohle není příjemné programování, na jaké jsem zvyklý z javy. Na psaní skriptu je to rychlé, ale zpětně docela lituji, že jsem do pythonu šel. Přepisovat už se mi to nechce, tak skřípu zuby a doufám, že při stávajícím tempu vývoje bude za pár let o kus dál a budu si moci užívat pohody generátorů, práce se slovníky, mixinů, knihoven na úplně vše, tedy toho, co mě na pythonu baví.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 15:00:56
To, co je v javě u vnitřní třídy práce na pár sekund (F6 Move v idee), jsem v Pycharmu dělal možná půl hodiny. Společné struktury mezi třídami jsem musel vytáhnout úplně jinam, jinak se cyklické importy nedaly vyřešit.

Takže to shrnu, podle vás:

1. Idea refaktoring umí → Java je skvělá

2. Pycharm refactoring neumí → Python je špatný

...

No to jsou ale příšerné a hloupé závěry, sorry jako :D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 15:20:47
No to jsou ale příšerné a hloupé závěry, sorry jako :D

Plácáš nesmysly. Mě zajímá, jak snadno se mi v tom vyvíjí. Změny se budou dělat pořád a pokud nemám nástroj, jak je dělat bezpečně, je to pro mě špatně. A pro python díky zavádění typů (typehintů) až v posledních verzích takový nástroj není, protože jej jednoduše nebylo možné vytvořit. PyCharm se snaží, to je vidět, a stejně je mu to houby platné.

Idea umí refaktoring, protože jí java díky uvedeným typům umožňuje vytvořit si vnitřní strukturu projektu a s tím pak pracuje. Pycharm to dělá všechno odhadem, víc mu python nedává.

Očividně to autoři pythonu pochopili a postupně na tom dělají. Zatím to pro velké projekty opravdu není příjemné používat. Takže souhlasím s předřečníky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 15:30:32
No to jsou ale příšerné a hloupé závěry, sorry jako :D

Plácáš nesmysly.

Jasně... Doporučuji změnit IDE, když zvolíte správně, nejspíše změníte i váš názor, protože u vás nevidím výtky na Python, ale na IDE, které přenášíte na jazyk.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 15:35:55
.......

jak by to podle vás mělo fungovat?

IDE má vyčíst typ z toho testu

Kód: [Vybrat]
elif msg.typeID == MsgID.REQ_PARENT_NODE:
?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 15:42:23
zkoušel jste testovat přímo typ? to by mělo fungovat.

https://www.jetbrains.com/help/pycharm/type-hinting-in-pycharm.html
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 15:44:43
něco jako

Kód: [Vybrat]
elif isinstance(msg, IntegerMsg):
       self._sendParentNodeInfo(msg.value)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 16:07:45
pro přetypování existuje funkce cast. Mypy jí rozumí, nevím jak PyCharm.

Kód: [Vybrat]
from typing import cast, Any
y = cast(Any, x)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 16:28:30
Samozřejmě doplňuji všude typehinty - opět po spuštění cyklické importy. OK, dám  do podmínky if TYPE_CHECKING - ejhle interpretu se nelíbí dvojtečkové typehinty - nezná import, který je jen pro IDE. Proč mu to chybí netuším, když s nimi stejně nepracuje. Takže pěkně názvy tříd do apostrofů, aby to IDE pochopilo a interpret neřval, stringy v typehintech neřeší. Super práce pokus/omyl.

ty cyklické importy jsou úplně zbytečné. Tvrdohlavě dáváte každou třídu do vlastního souboru jako v Javě i když vám to komplikuje život.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 17:01:14
@gll:

Co kdybychom šli programovat v Javě a aplikovali bychom tam zvyky z Pythonu a pak se děsně čílili jak je ta Java pitomá? :D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: armabeton 13. 12. 2017, 17:27:08
Osobně mám Python ráda, v poslední době jsem se zamilovala do Rustu a naopak nesnáším Javu.

OT: uz existuji zajimave pracovni pozice na Rust? Protoze na tak mlady jazyk to znamena, ze nepujde o korporatni sto let stary kod :)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 17:30:01
@gll:

Co kdybychom šli programovat v Javě a aplikovali bychom tam zvyky z Pythonu a pak se děsně čílili jak je ta Java pitomá? :D

On má problém s cyklickými importy, protože předkům předává typ potomka. To se nepoužívá ani v Javě. Nevím, kde na to přišel.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 17:34:49
Jasně... Doporučuji změnit IDE, když zvolíte správně, nejspíše změníte i váš názor, protože u vás nevidím výtky na Python, ale na IDE, které přenášíte na jazyk.

Rád se nechám poučit, které bude v tomto ohledu dokonalejší. Prosím o návrhy vycházející z praktických zkušeností.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 17:39:04
Jasně... Doporučuji změnit IDE, když zvolíte správně, nejspíše změníte i váš názor, protože u vás nevidím výtky na Python, ale na IDE, které přenášíte na jazyk.

Rád se nechám poučit, které bude v tomto ohledu dokonalejší. Prosím o návrhy vycházející z praktických zkušeností.

Podle autorů mypy funguje v některých ohledech lépe než PyCharm.

https://github.com/python/mypy/issues/3053
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 17:40:53
pro přetypování existuje funkce cast. Mypy jí rozumí, nevím jak PyCharm.

Díky, cast funguje dobře.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 17:48:18
ty cyklické importy jsou úplně zbytečné. Tvrdohlavě dáváte každou třídu do vlastního souboru jako v Javě i když vám to komplikuje život.

Nedávám každou třídu, ale jen ty větší. Nebudu kvůli hloupým problémům s importy vytvářet obrovský soubor, jako je např. https://github.com/dddomodossola/remi/blob/master/remi/gui.py

Nejvíce problémů vzniká při používání nových nekomentářových typehintů. Co jsem viděl, tak většina projektů tento problém nemá, protože jednoduše žádné typehinty nepoužívá. To ovšem není řešení, ale znouzecnost.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 17:57:17
On má problém s cyklickými importy, protože předkům předává typ potomka. To se nepoužívá ani v Javě. Nevím, kde na to přišel.

Ale houby, jsou to normální závislosti tříd, které nejsou v rodičovském vztahu. Akorát v jednom souboru to funguje, zatímco ve dvou na sebe bez importu nevidí a vznikne cyklický import. Řeší se to workaroundem tak, že se konfliktní prvek vytáhne do třetího souboru. U typehintů naštěstí jednodušeji tak, že se typehint uvede do apostrofů a pro IDE se příslušný import dá do podmínky if TYPE_CHECKING, kterou nemá interpret nastavenou. Opět zjistíš až po spuštění.

Zajímalo by mě, kolik máš s typehinty zkušeností. Vsadil bych se, že je jako skoro každý "kovaný" pythonista z historických i jiných důvodů nepoužíváš. A opravdu mě nikdo nepřesvědčí, že je bez nich kód přehlednější a rychlejší na vývoj.  To nemá s javou nic společného.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 18:01:41
Podle autorů mypy funguje v některých ohledech lépe než PyCharm.

Mluvím o IDE, jaké IDE používá mypy přímo při psaní kódu? Informace o špatném názvu metody po napsání kódu a kontrole mypy je sice lepší, než až po spuštění, ale pořád to není postup, který by měl něco společného s efektivním vývojem složitějšího projektu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 18:08:33
Podle autorů mypy funguje v některých ohledech lépe než PyCharm.

Mluvím o IDE, jaké IDE používá mypy přímo při psaní kódu? Informace o špatném názvu metody po napsání kódu a kontrole mypy je sice lepší, než až po spuštění, ale pořád to není postup, který by měl něco společného s efektivním vývojem složitějšího projektu.

mypy je integrované ve flake8 i v Python Language Server.

používá ho třeba VS Code.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 18:21:41
A to funguje tak, že napíšu naslepo kód, zmáčknu klávesovou zkratu a z výpisu se dozvím, kde jsem se seknul v názvu proměnné/metody/typu parametru atd.? Nebo je to integrované a opravdu to pomáhá přímo při psaní kódu, nabízí a doplňuje typově správné parametry, hned zvýrazňuje chybné/neznámé názvy, varuje před nekompatibilními typy atd., jak je standardní funkcí IDE vč. Pycharmu?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 18:35:41
@gll:

Co kdybychom šli programovat v Javě a aplikovali bychom tam zvyky z Pythonu a pak se děsně čílili jak je ta Java pitomá? :D

On má problém s cyklickými importy, protože předkům předává typ potomka. To se nepoužívá ani v Javě. Nevím, kde na to přišel.

Já myslel třeba to "co třída to soubor"...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 18:36:05
A to funguje tak, že napíšu naslepo kód, zmáčknu klávesovou zkratu a z výpisu se dozvím, kde jsem se seknul v názvu proměnné/metody/typu parametru atd.? Nebo je to integrované a opravdu to pomáhá přímo při psaní kódu, nabízí a doplňuje typově správné parametry, hned zvýrazňuje chybné/neznámé názvy, varuje před nekompatibilními typy atd., jak je standardní funkcí IDE vč. Pycharmu?

nemusíte mačkat klávesovou zkratku. Běží to jako server na pozadí a reaguje na každou změnu.

PyCharm integruje flake8 také. Zkuste si to zapnout.

https://foxmask.trigger-happy.eu/post/2016/02/17/pycharm-running-flake8/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 19:23:03
Postupoval jsem přesně podle návodu a opravdu nechápu, v čem by mi to mělo pomoci více než integrovaný lint v PyCharmu.

Vůbec to není interaktivní, prostě napíšu kód, z lokálního menu spustím flake8 (--max-complexity 10, jak bylo v tutoriálu), vidím, co je blbě. Ta integrace ani nedělá klikací skok na řádek, je to jenom výpis do konzole.

Bohužel to vůbec nekontroluje typehinty (možná se to musí nějak zapnout). V takto triviální metodě

Kód: [Vybrat]
    def _isLeaf(self, path: Path) -> bool:
        return path.is_file() or not hasSubitems(path)

změním hint na str:

Kód: [Vybrat]
    def _isLeaf(self, path: str) -> bool:
        return path.is_file() or not hasSubitems(path)

Pycharm samozřejmě hned podtržením označí is_file a parametr hasSubitems(path) jako chybu, protože str nemá is_file() a nepasuje do hasSubitems(path: Path). flake8 si toho vůbec nevšimne.  A to navíc je _isLeaf implementace abstrakní metody _isLeaf(PATH), kde PATH je generická a nadefinovaná v této třídě jako třída Path. O tom flake8 vůbec netuší (což Pycharm bohužel také ne, ač je to jasně v definici třídy napsané "class FileSource(MPVTreeSource[Path])"). Pokud někdo považuje generika jako javovský styl, pak s ním není moc co řešit, pro typový popis je něco takového zásadní.

_isLeaf jsem smazal, flake8 vůbec nezdetekoval chybějící implementaci abstraktní metody (označená přes @abc.abstractmethod). Pycharm to hned samozřejmě označí a přes Alt+Enter nabízí implementaci všech chybějících abstrakních metod, jako standardní IntelliJ.

Stejně jako flake8 nepochopil ifovaný import a řve "F401 'dispatcher.Dispatcher' imported but unused", přestože je Dispatcher v typehintu.

Sorry, ale tohle nemá s usnadněním vývoje v IDE nic společného.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 19:32:43
nejspíš musíte mít nainstalovaný plugin flake8-mypy. Nevím, jestli to v PyCharmu stojí za námahu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: refactoring 13. 12. 2017, 20:01:09
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 20:01:34
A to pak mypy pozná chybný typehint, chybějící abstraktní metodu, nesoulad s generikem atd.? IMO tam poběží pořád to samé mypy a bude kontrolovat ten samý zdroják, akorát to třeba bude jinak propojené.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 20:09:17
A to pak mypy pozná chybný typehint, chybějící abstraktní metodu, nesoulad s generikem atd.? IMO tam poběží pořád to samé mypy a bude kontrolovat ten samý zdroják, akorát to třeba bude jinak propojené.

ja myslim, ze PyCharm ma nejakou vlastni implementaci. Muze fungovat rozdilne. Kazdopadne s https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 vam nepomuze nic.

Ty generiky nevim.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 20:23:48
Kazdopadne s https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 vam nepomuze nic.

Zrovna ten doporučený cast to řeší. Stačí pak jen

Kód: [Vybrat]
self._sendParentNodeInfo(cast(msg, IntegerMsg).value)
Pro kontrolu typehintů opravdu stačilo jen přes pip3 doinstalovat flake8-mypy. Bohužel hláška "T484 Incompatible types in assignment (expression has type "Optional[str]", variable has type "None")" mi nedává smysl, protože od toho specifikuju Optional, aby tam mohl být None. Pycharm Optional samozřejmě kontroluje správně (bez něj explicitní None neakceptuje).

Generika ani abstraktní metodu mypy nepozná (pycharm alespoň tu abstraktní metodu, která je pro mě  důležitější).

Nevidím v používání tohoto v pycharmu žádný přínos, jeho interní linter je interaktivní a odchytí toho víc. Bohužel pořád jsou to všechno workaroundy kolem chybějících uvedených typů a při vývoji je to hodně znát.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 13. 12. 2017, 20:24:51
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: refactoring 13. 12. 2017, 20:33:59
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 21:08:43
Kazdopadne s https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 vam nepomuze nic.

Zrovna ten doporučený cast to řeší. Stačí pak jen

Kód: [Vybrat]
self._sendParentNodeInfo(cast(msg, IntegerMsg).value)
Pro kontrolu typehintů opravdu stačilo jen přes pip3 doinstalovat flake8-mypy. Bohužel hláška "T484 Incompatible types in assignment (expression has type "Optional[str]", variable has type "None")" mi nedává smysl, protože od toho specifikuju Optional, aby tam mohl být None. Pycharm Optional samozřejmě kontroluje správně (bez něj explicitní None neakceptuje).

Generika ani abstraktní metodu mypy nepozná (pycharm alespoň tu abstraktní metodu, která je pro mě  důležitější).

Nevidím v používání tohoto v pycharmu žádný přínos, jeho interní linter je interaktivní a odchytí toho víc. Bohužel pořád jsou to všechno workaroundy kolem chybějících uvedených typů a při vývoji je to hodně znát.

můžete poslat to přiřazení u kterého to hlásí?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 13. 12. 2017, 21:13:03
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".

Proč byste musel něco předělávat? To se mi často nestává, většinou mi stačí věc změnit na jednom místě. Vám ne? Pokud je rozhraní logicky úplné a jeho uzávěr dostatečně pokrývá aplikační doménu, předělávat není potřeba. Občas ho stačí rozšířit.

Ovšem když to jen tak napatláte, s vědomím, že to později refaktorujete, není divu.

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: refactoring 13. 12. 2017, 21:18:11
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".

Proč byste musel něco předělávat? To se mi často nestává, většinou mi stačí věc změnit na jednom místě. Vám ne? Pokud je rozhraní logicky úplné a jeho uzávěr dostatečně pokrývá aplikační doménu, předělávat není potřeba. Občas ho stačí rozšířit.

Ovšem když to jen tak napatláte, s vědomím, že to později refaktorujete, není divu.

Sorry, kámo. Ke všemu tady píšeš píčoviny, které nemají hlavu ani patu a budeš mi tvrdit, že umíš vyvíjet? To fakt nevyjde. Takže dík za info, ale jsi na úrovni těch lemplů tady, kteří tvrdí, že v Pythonu jdou dělat větší projekty. Oni totiž nikdy nic nedělali a jen blbě kecají.

Určitě budu mít rozhraní hotové na první nástřel...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 13. 12. 2017, 21:32:46
@refaktoring

A čím tu velikost projektu měříte? Když budete po sté psát podobné rozhraní, jen s malými změnami, tak to zrovna optimální není.

Ale samozřejmě, záleží na prioritách, pokud jde o to, rychle napatlat co nejvíce kódu, pak se refaktorování hodí, a ano tak se vyvíjí, je to ale dáno jen dnešním průmyslovým charakterem vývoje. Nic špatného na tom není, ale vědu bych z toho nedělal.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 21:34:52
gll:

Kód: [Vybrat]
    def initMakeAvailable(self, rootPath: Path, label: str, deviceName: Optional[str]) -> 'FileSource':
        xxx
        self._deviceName = deviceName
        xxx

Nelíbí se mu, že v konstruktoru třídy (__init()__) bylo self._deviceName = None. Bere to jako typ None. Nevím.

Ale pravda je, že našel jeden výskyt, kde se jako parametr metody method(param:str) posílá field, který je původně v konstruktoru nastavený typem Optional[str]. Před voláním method(param) je to vždy již nenulový str, ale chápu, že se mu to úplně nelíbí. S tímhle by byl asi problém všude....
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: refactoring 13. 12. 2017, 21:48:29
@refaktoring

A čím tu velikost projektu měříte? Když budete po sté psát podobné rozhraní, jen s malými změnami, tak to zrovna optimální není.

Ale samozřejmě, záleží na prioritách, pokud jde o to, rychle napatlat co nejvíce kódu, pak se refaktorování hodí, a ano tak se vyvíjí, je to ale dáno jen dnešním průmyslovým charakterem vývoje. Nic špatného na tom není, ale vědu bych z toho nedělal.

A co na to říkají ještěří lidé? Určitě by k dané věci také měli velmi zajímavý názor založený jen na fantazii a pohádkách.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 13. 12. 2017, 22:00:56
gll:

Kód: [Vybrat]
    def initMakeAvailable(self, rootPath: Path, label: str, deviceName: Optional[str]) -> 'FileSource':
        xxx
        self._deviceName = deviceName
        xxx

Nelíbí se mu, že v konstruktoru třídy (__init()__) bylo self._deviceName = None. Bere to jako typ None. Nevím.

Ale pravda je, že našel jeden výskyt, kde se jako parametr metody method(param:str) posílá field, který je původně v konstruktoru nastavený typem Optional[str]. Před voláním method(param) je to vždy již nenulový str, ale chápu, že se mu to úplně nelíbí. S tímhle by byl asi problém všude....

neměl by v tom konstruktoru být specifikovaný typ?

Kód: [Vybrat]
self._deviceName = None # Optional[str]
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 13. 12. 2017, 22:05:12
@refaktoring

Vy refaktorujete a nevíte proč, berete to jako zjevené dogma :-))) Nic proti vaší metodice nemám, je potřebná, protože je třeba rychle napatlat spousty kódu a místo věci dopředu promýšlet, je ekonomicky efektivnější, je ad hoc refaktorovat. Jinak to dnes nejde.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 13. 12. 2017, 22:06:37
To jsem již předtím zkoušel, nic se nezměnilo. Nechám to plavat, IDE s tím problém nemá. Ale díky.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 13. 12. 2017, 22:26:51
Mám tomu rozumět tak (podle některých diskutujících), že refaktoring je zbytečný a dělá se jen na "zpatlaném" kódu?

To mi chcete tvrdit, že se mám stydět za to, že součástí mého vývoje je refactoring? A častý refactoring?

Co proboha píšete za kód, že se dokážete vyhnout refactoringu? Něco jako program pro čekárny ordinací, kde se na obrazovce objevuje zpráva: "Vítejte v naší ordinaci, posaďte se a vyčkejte příchodu sestry"?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 22:39:24
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Honza 13. 12. 2017, 22:49:16
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
... v utopickém světě, kde se nerozšiřuje ani nemění zadání... Jinak je to best practice i pro takové vývojáře!
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: ByCzech 13. 12. 2017, 23:24:20
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
... v utopickém světě, kde se nerozšiřuje ani nemění zadání... Jinak je to best practice i pro takové vývojáře!

Tak ony nejsou jen projekty, které vývojář dostane nařízeny od vedoucího, že? ;)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 13. 12. 2017, 23:41:53
Mám tomu rozumět tak (podle některých diskutujících), že refaktoring je zbytečný a dělá se jen na "zpatlaném" kódu?

To mi chcete tvrdit, že se mám stydět za to, že součástí mého vývoje je refactoring? A častý refactoring?

Refaktoring je naprosto běžnou součástí vývoje. Jen je dobré rozlišit, v kterém okamžiku dělám na feature a v kterém refaktoring. Změna zadání je feature, která si často refaktoring vyžádá, aby se feature dala udělat.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Cikáda 13. 12. 2017, 23:43:35
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.

Spíš bych viděl rozdíl v tom, jestli (příp. jak dlouho) se kód/aplikace/program nějak dále udržuje... Je jasné, že pokud někdo něco napíše, "předá to" a pak už to nikdy "neuvidí", tak asi k refactoringu nedojde... Pokud někdo vyvíjí komplexní systém patnáct let, tak se mu asi těžko vyhne, i kdyby byl génius.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 13. 12. 2017, 23:59:23
No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Proč byste musel něco předělávat? To se mi často nestává, většinou mi stačí věc změnit na jednom místě. Vám ne? Pokud je rozhraní logicky úplné a jeho uzávěr dostatečně pokrývá aplikační doménu, předělávat není potřeba. Občas ho stačí rozšířit.
Ovšem když to jen tak napatláte, s vědomím, že to později refaktorujete, není divu.

@refaktoring

A čím tu velikost projektu měříte? Když budete po sté psát podobné rozhraní, jen s malými změnami, tak to zrovna optimální není.

Ale samozřejmě, záleží na prioritách, pokud jde o to, rychle napatlat co nejvíce kódu, pak se refaktorování hodí, a ano tak se vyvíjí, je to ale dáno jen dnešním průmyslovým charakterem vývoje. Nic špatného na tom není, ale vědu bych z toho nedělal.

@refaktoring

Vy refaktorujete a nevíte proč, berete to jako zjevené dogma :-))) Nic proti vaší metodice nemám, je potřebná, protože je třeba rychle napatlat spousty kódu a místo věci dopředu promýšlet, je ekonomicky efektivnější, je ad hoc refaktorovat. Jinak to dnes nejde.

Presne ste to vystihol  :D
+1
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: refactoring 14. 12. 2017, 00:05:40
Spíše vám tady kolega naznačil, že každý, kdo někdy něco dělal, tak ví, jak to je. Že Ivan má nějakou nemoc a ty s ním souhlasíš, to asi moc nezmění na reálných faktech, kdy Python nemá podporu skoro ničeho, co bys u většího projektu mohl použít.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 06:27:49
Já se nestačím divit. Problém je evidentně v tom, že někdo se Python snaží používat jako Javu a dělá zjevné nesmysly, kterým ho naučil tento jazyk. Problém není v Pythonu, ale v tom, že dotyčný Python neumí používat. Ale samozřejmě je jednoduší nadávat na jazyk, než se zamyslet sám nad sebou a tím, co dělám špatně. Za celou svou dlouhou a bohatou praxi jsem nemě problém s cyklickým importem, dokonce jsem ani nevěděl, že nějaký tákový problém existuje, i literatura o tom mlčí a nevaruje před tím. Jak je to možné? Prostě Python nepoužívám jako Javu.

Ale děkuji vám, konečně jsem pochopil, co znamená 'Thinking In Python'. Jestli chcete používat Python, pak se naučte myslet v Pythonu, naučte se myslet dynamicky.

Pravděpodobně to nedokážete,  jako levičák nedokáže myslet pravicově a naopak nebo jako se Babiš nedokáže naučit myslet demokraticky. Máte ze statických jazyků spoustu 'zlozvyků', které vám v Pythonu nejen že nic nepřináší, naopak vám jen komplikují život. Jste toho s vašimi potížemi nádhernou živoucí ukázkou. Zkuste si představit, že bych já naopak chtěl programovat v Javě a vyžadoval důsledně, aby všechny proměnné měly dynamické typy, a další zvyky, na které jsem zvyklý z Pythonu. Těžce by to skřípalo, byl bych z toho akorát nešťastný. Nebyl bych v ní schopen dělat velké pojekty, narážel bych na nedynamické knihovny, a tak dále. Vše co tady popisujete. Ale byla by to chyba Javy nebo nesprávného používání?

Doporučuji vám návrat ke statickým jazykům, buďe to méně bolestivé, než pochopit nové paradigma, dynamický jazyk a jak v něm programovat, naučit se myslet dynamicky. Toto doporučení je tím víc silnější, čím hlubší máte Thinking in (C|C++|Java|...).

Máte pocit, že jste zkušení vývojáři, že programování rozumíte, ale mýlíte se, v dynamickém programování jste záčátečnící a vyvíjet dynamicky neumíte. A jste na tom ve skutečnosti ještě hůř než ty začátečníci, protože ti k tomu přistupují s čistou otevřenou myslí, bez předpojatosti, předsudků a naučených 'osvědčených' postupů, jenž jsou ve světě Pythonu zlozvyky.

Začátečníci nepotřebují přeformátovat způsob programátorského myšlení jako vy. Když se naučíte myslet dynamicky, pochopíte, že type hinty a podobné věci nepotřebujete, že je to u dynamického jazyku chodítko pro malé děti a chodit se dá i bez něj. A dokonce i běhat (což jsou ty velké projekty, které si v pythonu neumíte představit, přestože kolem vás reálně existují), což s chodítkem nejde.

Pokud chcete začít myslet a programovat dynamicky, zapomeňte na všechno ci umíte a na všechy nástroje, které používáte. Zapomeňte na ide, které programuje za vás a mění vám současně třicet zdrojáků, přestaňte spoléhat na tyto berličky. Vezměte si obyčejný textový editor, stačí aby uměl odsazovat a zvýrazňovat syntaxi. Pokud bude umět i folding a při uložení souboru jej prožene pylintem, bude to luxus.


Ano, ztratíte produktivitu, ale tu začátečníci prostě nemají, teprve se učí, objevují.  Místo toho začněte přemýšlet, jak to udělat, abyste se bez berliček, na které nyní spoléháte (ať v ide nebo jazyce), obešli. Začněte o programování přemýšlet jinak, dynamicky. Využívejte silných vlastností, které vám Python dává, nepotlačujte je, přjměte je a naplno využijte.

Bude to těžké, změna myšlení bolí, ale jde to. A pokud to zvládnete, stanete se lepšími programátory, programátory, kteří se na věci umí dívat různě a problémy řešit různým způsbem. Zjistíte, že nepotřebujete ani statické typy ani automatický refactoring, což jsou myslím spojené nádoby, protože i drobné změny ve statickém návrhu vyžadují rozsáhlé změny kódu. Pak teprve objevíte a pochopíte krásu jazyka Python.

Pokud to chcete mít jednoduché, prostě se vraťte do světa statického programování, který už znáte a zapomeňte na Python. Je to hodně flexibilní jazyk, ale statický z něj prostě neuděláte, s tím narazíte. Na statické programování programování to vážně není dobrý nástroj.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 07:56:48
Hm, netušil jsem, že kouzelným mávnutím proutku nepotřebuji znát, jaké má který objekt metody, že rázem mohu metodě do parametru předávat jakýkoliv typ a ona si to nějak sama vyřeší, že vlastně nepotřebuji vytvořit obecný model a pak jej konkretizovat reálnými objekty se svým chováním (generika, abstraktní vs. konkrétní metody), atd. A přitom stačí jenom vše zapomenout a otevřít svou mysl krásám dynamickému programování a odhodit tu starost, jestli jsem použil správný datový typ. Dokonce nemusím řešit, jestli někde nemám v řetězci souborů křížový import, protože k cyklickému importu za dlouhou bohatou praxi někoho ještě nikdy nedošlo, dokonce ani netuší, že něco takového může nastat.

Ale takhle se můj interpret pythonu nechová. Při každé neznámé proměnné/metodě či nekompatibilním datovém typu, při každém pokusu o import souboru, jehož celé načtení někde v minulosti ještě nedokončil, mi to pěkně nechá sežrat. Asi máme každý jiný. Kde roste ten kouzelný, co mu nic nevadí? Jak rád jej budu používat a nechám se hýčkat pohodlím skutečného dynamického programování.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 07:58:15
Tak ony nejsou jen projekty, které vývojář dostane nařízeny od vedoucího, že? ;)

A v soukromých projektech se zadání nemění a vše píšeš na první dobrou? Asi žijeme každý v jiném světě...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: harrison314 14. 12. 2017, 08:08:07
Já se nestačím divit. Problém je evidentně v tom, že někdo se Python snaží používat jako Javu a dělá zjevné nesmysly, kterým ho naučil tento jazyk. Problém není v Pythonu, ale v tom, že dotyčný Python neumí používat. Ale samozřejmě je jednoduší nadávat na jazyk, než se zamyslet sám nad sebou a tím, co dělám špatně. Za celou svou dlouhou a bohatou praxi jsem nemě problém s cyklickým importem, dokonce jsem ani nevěděl, že nějaký tákový problém existuje, i literatura o tom mlčí a nevaruje před tím. Jak je to možné? Prostě Python nepoužívám jako Javu.

Ale děkuji vám, konečně jsem pochopil, co znamená 'Thinking In Python'. Jestli chcete používat Python, pak se naučte myslet v Pythonu, naučte se myslet dynamicky.

Pravděpodobně to nedokážete,  jako levičák nedokáže myslet pravicově a naopak nebo jako se Babiš nedokáže naučit myslet demokraticky. Máte ze statických jazyků spoustu 'zlozvyků', které vám v Pythonu nejen že nic nepřináší, naopak vám jen komplikují život. Jste toho s vašimi potížemi nádhernou živoucí ukázkou. Zkuste si představit, že bych já naopak chtěl programovat v Javě a vyžadoval důsledně, aby všechny proměnné měly dynamické typy, a další zvyky, na které jsem zvyklý z Pythonu. Těžce by to skřípalo, byl bych z toho akorát nešťastný. Nebyl bych v ní schopen dělat velké pojekty, narážel bych na nedynamické knihovny, a tak dále. Vše co tady popisujete. Ale byla by to chyba Javy nebo nesprávného používání?

Doporučuji vám návrat ke statickým jazykům, buďe to méně bolestivé, než pochopit nové paradigma, dynamický jazyk a jak v něm programovat, naučit se myslet dynamicky. Toto doporučení je tím víc silnější, čím hlubší máte Thinking in (C|C++|Java|...).

Máte pocit, že jste zkušení vývojáři, že programování rozumíte, ale mýlíte se, v dynamickém programování jste záčátečnící a vyvíjet dynamicky neumíte. A jste na tom ve skutečnosti ještě hůř než ty začátečníci, protože ti k tomu přistupují s čistou otevřenou myslí, bez předpojatosti, předsudků a naučených 'osvědčených' postupů, jenž jsou ve světě Pythonu zlozvyky.

Začátečníci nepotřebují přeformátovat způsob programátorského myšlení jako vy. Když se naučíte myslet dynamicky, pochopíte, že type hinty a podobné věci nepotřebujete, že je to u dynamického jazyku chodítko pro malé děti a chodit se dá i bez něj. A dokonce i běhat (což jsou ty velké projekty, které si v pythonu neumíte představit, přestože kolem vás reálně existují), což s chodítkem nejde.

Pokud chcete začít myslet a programovat dynamicky, zapomeňte na všechno ci umíte a na všechy nástroje, které používáte. Zapomeňte na ide, které programuje za vás a mění vám současně třicet zdrojáků, přestaňte spoléhat na tyto berličky. Vezměte si obyčejný textový editor, stačí aby uměl odsazovat a zvýrazňovat syntaxi. Pokud bude umět i folding a při uložení souboru jej prožene pylintem, bude to luxus.


Ano, ztratíte produktivitu, ale tu začátečníci prostě nemají, teprve se učí, objevují.  Místo toho začněte přemýšlet, jak to udělat, abyste se bez berliček, na které nyní spoléháte (ať v ide nebo jazyce), obešli. Začněte o programování přemýšlet jinak, dynamicky. Využívejte silných vlastností, které vám Python dává, nepotlačujte je, přjměte je a naplno využijte.

Bude to těžké, změna myšlení bolí, ale jde to. A pokud to zvládnete, stanete se lepšími programátory, programátory, kteří se na věci umí dívat různě a problémy řešit různým způsbem. Zjistíte, že nepotřebujete ani statické typy ani automatický refactoring, což jsou myslím spojené nádoby, protože i drobné změny ve statickém návrhu vyžadují rozsáhlé změny kódu. Pak teprve objevíte a pochopíte krásu jazyka Python.

Pokud to chcete mít jednoduché, prostě se vraťte do světa statického programování, který už znáte a zapomeňte na Python. Je to hodně flexibilní jazyk, ale statický z něj prostě neuděláte, s tím narazíte. Na statické programování programování to vážně není dobrý nástroj.

Mna by tiez zaujimalo, ake je to tajomstvo dynamickeho programovania.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 12. 2017, 08:15:09
dynamické programování je optimalizační metoda. S pythonem nesouvisí.

https://en.wikipedia.org/wiki/Dynamic_programming
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 12. 2017, 08:31:40
Hm, netušil jsem, že kouzelným mávnutím proutku nepotřebuji znát, jaké má který objekt metody, že rázem mohu metodě do parametru předávat jakýkoliv typ a ona si to nějak sama vyřeší, že vlastně nepotřebuji vytvořit obecný model a pak jej konkretizovat reálnými objekty se svým chováním (generika, abstraktní vs. konkrétní metody), atd. A přitom stačí jenom vše zapomenout a otevřít svou mysl krásám dynamickému programování a odhodit tu starost, jestli jsem použil správný datový typ. Dokonce nemusím řešit, jestli někde nemám v řetězci souborů křížový import, protože k cyklickému importu za dlouhou bohatou praxi někoho ještě nikdy nedošlo, dokonce ani netuší, že něco takového může nastat.

Ale takhle se můj interpret pythonu nechová. Při každé neznámé proměnné/metodě či nekompatibilním datovém typu, při každém pokusu o import souboru, jehož celé načtení někde v minulosti ještě nedokončil, mi to pěkně nechá sežrat. Asi máme každý jiný. Kde roste ten kouzelný, co mu nic nevadí? Jak rád jej budu používat a nechám se hýčkat pohodlím skutečného dynamického programování.

máte 0% testové pokrytí.

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: harrison314 14. 12. 2017, 08:43:21
dynamické programování je optimalizační metoda. S pythonem nesouvisí.
Ragoval osom na post vysie, kde to doticny tak nazyva. tak inak, ake je to tajomstvo programovania v dynamicky typovanom jazyku?

máte 0% testové pokrytí.

Zas a znovu https://twitter.com/mattgumbley/status/727140296912441345
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 08:49:22
máte 0% testové pokrytí.

A co jako, to mi umožní typy neřešit? Ten projekt je ve vývoji, na svém kompu mám desítky nepušnutých commitů, kde je řada tříd úplně jinak. Přehrávání řeším nyní úplně jiným softwarem (gstreamer místo mpv, které žere 100% CPU při přehrávání 192kHz), zdroje hudby se nyní vytvářejí dynamicky dle připojených médií, všechny zdroje jsou nyní typu TreeSource atd. atd. Řada tříd vyhozena, přejmenována, struktury změněny, atd.

Ukaž mi svůj projekt, který je ve vývoji, děláš v něm zásadní změny a máš tam vysoké pokrytí testy. Jestli jsou testy odpovědí na "krásy dynamického programování", pak opět žijeme každý v jiném světě. A nebo nic prakticky neděláš a řešíš jenom teorii. To mi zatím přijde výrazně pravděpodobnější...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: kdr 14. 12. 2017, 10:25:57
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
... v utopickém světě, kde se nerozšiřuje ani nemění zadání... Jinak je to best practice i pro takové vývojáře!

V "utopickém světě TM" existuje jeden programovací jazyk na vše. V reálném světě je jich více.

A nevím, kde se bere s prominutím debilní implicitní představa, že programují jenom programátoři. Fakt si myslíte, že neprogramují strojaři, elektro, ekonomové, matfyzáci... dokonce i sociologové?? To máte tedy fakt hodně zůžený pohled na svět. :o

Mnohdy využívají Python a klidně hádejte proč to (většinou kód pro svoje výpočty) nepíšou třeba v C++?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 10:31:45
Ale takhle se můj interpret pythonu nechová. Při každé neznámé proměnné/metodě či nekompatibilním datovém typu, při každém pokusu o import souboru, jehož celé načtení někde v minulosti ještě nedokončil, mi to pěkně nechá sežrat. Asi máme každý jiný. Kde roste ten kouzelný, co mu nic nevadí? Jak rád jej budu používat a nechám se hýčkat pohodlím skutečného dynamického programování.
Cítím velké nepochopení z tvé reakce. Python máme stejný, jen ho každý používáme jinak, proto ty s ním máš problémy a já ne. Chce to změnu myšlení. Ale pro někoho je asi nepochopitelná i samotná existence možnosti změny myšlení. Nehledej jiný interpret Pythonu, s pokorou hledej změnu svého přístupu. Ale cítím z tvé reakce neochotu přistoupit na změnu svého myšlení, už máš koleje vyjeté příliš hluboko. Pro tebe proto platí ta druhá rada, vrať se do světa statických programovacích jazyků a modelů. Nesnaž se aplikovat svůj statický přístup v dynamickém jazyku. To tě radostí nenaplní.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 10:40:58
Tak ukaž svůj rozsáhlejší projekt, kde python používáš tím "správným způsobem", ať se poučím. Samozřejmě mě nezajímají skripty o pár metodách či třídách. Za svou "dlouhou a bohatou praxi" jsi jich jistě již vyprodukoval celou řadu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 10:49:02
dynamické programování je optimalizační metoda. S pythonem nesouvisí.
Ragoval osom na post vysie, kde to doticny tak nazyva. tak inak, ake je to tajomstvo programovania v dynamicky typovanom jazyku?

máte 0% testové pokrytí.

Zas a znovu https://twitter.com/mattgumbley/status/727140296912441345
Ano, to je moje chyba a můj termín, nevěděl jsem, že už je obsazený. Takže místo dynamické programování musím říkat programování v dynamickém jazyku. Není to tajemství, je to umění, jak už to kdysi pojal i Donald E. Knuth ve své monografii. A jako umění se přirozeně vyvíjí a nadále i bude. Proto se vyvíjí i paradigma programování, kterému je potřeba přizpůsobovat způsob myšlení.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 11:01:48
Tak ukaž svůj rozsáhlejší projekt, kde python používáš tím "správným způsobem", ať se poučím. Samozřejmě mě nezajímají skripty o pár metodách či třídách. Za svou "dlouhou a bohatou praxi" jsi jich jistě již vyprodukoval celou řadu.
Ano, podílel jsem se i na větších projektech, většinou v průmyslu, nejsou veřejné. Je to naivní požadavek. Velké projekty financuje někdo a patří dotyčnému, nebývají veřejné, pokud nejde o open source. Není to můj případ, ale představ si, že bych pracoval v bance a tys po mě chtěl, abych zveřejňoval své bankovní it projekty. Já pracuji v ještě specifičtějším prostředí. Ale veřejně se třeba ví, že mj. Python ve velkém používal třeba Google, byť ten už překročil hranici a vydal se cestou vývoje vlastních prostředků. Není to dostatečnou zárukou použitelnosti na velké projekty?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 11:21:32
V čem tedy ten rozdíl, to umění spočívá? Fakt by mě to zajímalo, protože v pythonu už pár let docela intenzivně dělám, java mě živí, a zatím jsem ten zásadní rozdíl ve způsobu vývoje nenašel. Ukaž srovnání na jiném kódu, když veškerý tvůj kód zaplatili klienti a sám pro sebe nic nevyvíjíš.

Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 14. 12. 2017, 11:27:04
V čem tedy ten rozdíl, to umění spočívá? Fakt by mě to zajímalo, protože v pythonu už pár let docela intenzivně dělám, java mě živí, a zatím jsem ten zásadní rozdíl ve způsobu vývoje nenašel. Ukaž srovnání na jiném kódu, když veškerý tvůj kód zaplatili klienti a sám pro sebe nic nevyvíjíš.

Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

Boty se nedávají na ruce, proto se není třeba ptát, zda máte na rukách boty. Když omylem dáte boty na ruce místo rukavic, vyskočí výjimka, protože to je chyba.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 11:36:28
Tak to by mě rozhodně nenapadlo, teď už vidím tu změnu paradigmatu...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: wsh 14. 12. 2017, 11:38:01
Může někdo z těch, co říkají, jak je Python nepoužitelný na velké projekty, definovat, co u něj znamená "velký projekt"? Ty známé příklady (Dropbox, BitBucket, Discuss, Mozilla Add-ons) já osobně za celkem velké považuju.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 14. 12. 2017, 11:44:24
Může někdo z těch, co říkají, jak je Python nepoužitelný na velké projekty, definovat, co u něj znamená "velký projekt"? Ty známé příklady (Dropbox, BitBucket, Discuss, Mozilla Add-ons) já osobně za celkem velké považuju.

Dropbox ma asi vela penazi na hardware. S dobrym load balancerom moze byt na backende hoci aj ruby.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 12. 2017, 11:49:34
příklad "refaktoringu" velkého projektu v Ruby je třeba github.

http://shayfrendt.com/posts/upgrading-github-to-rails-3-with-zero-downtime/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: wsh 14. 12. 2017, 11:58:01

Dropbox ma asi vela penazi na hardware. S dobrym load balancerom moze byt na backende hoci aj ruby.

Však taky nikdo neříká, že Python exceluje ve výkonosti. Ostatně proto YouTube experimentuje s převodem Python kódu do Go. Ale všechny ty řeči o nepoužitelnosti kvůli podpoře refaktoringu, absenci statickému typování apod. jsou vyvráceny pár konkrétními příklady.

Pro velké projekty má Python určité nevýhody (proto se třeba Dropbox hodně zabývá těmi type hinty), ale nepoužitelný určitě není.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 12:02:58
V čem tedy ten rozdíl, to umění spočívá? Fakt by mě to zajímalo, protože v pythonu už pár let docela intenzivně dělám, java mě živí, a zatím jsem ten zásadní rozdíl ve způsobu vývoje nenašel. Ukaž srovnání na jiném kódu, když veškerý tvůj kód zaplatili klienti a sám pro sebe nic nevyvíjíš.

Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

Nemám pedagogické nadání, neumím přenést svou zkušenost a ani nevím jestli to jde. Opravdu je to o způsobu uvažování. Když jsem si tu přečetl, jak se někteří lidé snaží Python používat, instinktivně se mi ježily chlupy a běhal mráz po zádech. Celé je to špatně a nedivím se, že se jim Python s tímto způsobem používání příčí.

Je potřeba vyjít ze samotné podstaty dynamického jazyka. A tou podstatou je, že na rozdíl od statického jazyka je datový typ přiřazen hodnotě, nikoliv proměnné.  A tihle lidé se snaží v pythonu staticky typovat proměnné, protože neumí pracovat a přemýšlet jinak. Nepracujte s proměnnými, pracujte s hodnotami, dynamicky. Od tohoto paradigmatu odvíjejte návrh programu. Vím snadno se mi to řekne, ale vy nevíte jak, jde to proti vaší dosavadní zkušenosti a já nevím, jak to vysvětlit, když váš pohled na data je statický. Na typ objektu, či spíše rozhraní je dobré se ptát, ale až když ho potřebuješ, není nutné a naopak je kontraproduktivní ho definovat předem a zakazovat proměnné, aby přenášela hodnoty jiných typů. Pak kvůli tomu musíte předělávat půlku programu, když to chcete změnit, přitom stačí lehce upravit příjemce. Aby to fungovalo dobře, je potřeba si inteligentně navrhnout rozhraní, aby bylo pokud možno univerzální a flexibilní, a k tomu je zapotřebí mít zkušenost. Stejně jako ke stanovení vhodného rozvržení kódu a jeho granularity, aby obstál erozi časem.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 14. 12. 2017, 12:03:44
Pro velké projekty má Python určité nevýhody (proto se třeba Dropbox hodně zabývá těmi type hinty), ale nepoužitelný určitě není.

Vždyť o tom celou dobu mluvím - proto řeší typehinty, aby s tím měli méně práce. Začít od nuly s něčím jiným je obrovský náklad a riziko.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: pp 14. 12. 2017, 12:16:37
Pro velké projekty má Python určité nevýhody (proto se třeba Dropbox hodně zabývá těmi type hinty), ale nepoužitelný určitě není.

Vždyť o tom celou dobu mluvím - proto řeší typehinty, aby s tím měli méně práce. Začít od nuly s něčím jiným je obrovský náklad a riziko.

A nebo rovnou můžeš použít jakyk, který to umí rovnou a nemusíš to nějak obcházet. Python frčí, protože v IT jsou i lidi, kteří nikdy vývoj neviděli a Python jim přijde fajn. Proč ho vůbec používáš?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 12:19:02
Tady je na to pěkná úvaha, sice jiný jazyk, ale stejný problém, programátoři (javy), kteří nechtějí přijmout jiné paradigma: http://radify.io/blog/type-hinting-in-php-good-or-bad-practice/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: pp 14. 12. 2017, 12:29:05
Tady je na to pěkná úvaha, sice jiný jazyk, ale stejný problém, programátoři (javy), kteří nechtějí přijmout jiné paradigma: http://radify.io/blog/type-hinting-in-php-good-or-bad-practice/

Vidím tam jen lopatu, která si myslí, že bez typů lze vyvíjet. Hlavně tam píše nesmysly o DI. Rozhraní se používala ještě před DI a to dost značně. Python je nepotřebuje, protože je to jen taková dětská hračka. Asi jako kolo s přídavnými kolečky, aby sis trochu osahal jízdu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 14. 12. 2017, 12:35:29

Dropbox ma asi vela penazi na hardware. S dobrym load balancerom moze byt na backende hoci aj ruby.

Však taky nikdo neříká, že Python exceluje ve výkonosti. Ostatně proto YouTube experimentuje s převodem Python kódu do Go. Ale všechny ty řeči o nepoužitelnosti kvůli podpoře refaktoringu, absenci statickému typování apod. jsou vyvráceny pár konkrétními příklady.

Pro velké projekty má Python určité nevýhody (proto se třeba Dropbox hodně zabývá těmi type hinty), ale nepoužitelný určitě není.

Ako sa u nas zvykne vraviet "Jedna lastovicka jar nerobi". Ak sa najde v nejakej firme dost nadsencov, tak pouziju bars aj python so vstekymi jeho vyhodami a nevyhodami.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: pp 14. 12. 2017, 12:45:48
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 14. 12. 2017, 13:38:15
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Nejsem hardcore Pythonista, ale na jeden projekt ho celkem uspesne pouzivame, takze se jen kratce zeptam:

* A komu vlak neujel? (v porovnani s Pythonem, tedy se soucasnymi verzemi)

* Jinak kdo je tedy podle tve definice amater? clovek, ktery dela napriklad i v tom Pythonu a je za to placeny?

* Pomaly napriklad ve chvili, kdy "jen" spousti procesy v CUDA? Nebo pomaly ve chvili, kdy spoustim skripty z CLI (narazim trosku na JRE :-).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 14:26:04
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.
Jo, a proto jeho popularita prudce roste a antipython trolové běsní :-).

Nevypadá to, že by Pythonu ujel vlak. Spíše naopak, oproti minulosti z ničeho neustoupil, drží se v akademické sféře, v linuxu, na webu a tak dále. Oproti minulosti pronikl i do škol a na jednodeskové počítače zvláště Rasppbery, což je super. Aktuální trendy jako IoT, AI, DM, tam všude se s úspěchem používá. A když se podívám na knižní trh a literaturu o Pythonu, nemohu být nespokojen.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: kdr 14. 12. 2017, 14:59:47
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 14. 12. 2017, 18:24:25
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.

To je asi pravda, že jednoduché jazyky jako Python umožňují programovat i chytrým lidem z jiných oborů, kteří tak přestávají být závislí na IT lidech a mají své výsledky levněji a efektivněji.  Možná i to je důvod, proč některým lidem tak vadí, ztrácí tím svou výlučnost a monopol. To docela dobře vysvětluje místní zášť vůči Pythonu a jeho uživatelům.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 14. 12. 2017, 18:45:02
Python vadí lidem, kteří jsou "experti" na řešení problémů, které v Pythonu neexistují.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Prasečí hyena 14. 12. 2017, 22:54:01
Zajímavý pohled na statické typování, pokrytí kódu testy a možná falešná očekávání: https://medium.com/javascript-scene/the-shocking-secret-about-static-types-514d39bf30a3 (https://medium.com/javascript-scene/the-shocking-secret-about-static-types-514d39bf30a3)

(https://cdn-images-1.medium.com/max/1600/1*Pq05eqqd_hKLumrklArEbw.png)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 15. 12. 2017, 00:04:46
Pořád nechápu, jak se vyhneš otázkám na typ objektů,...
Jakejm otázkám? Jako instanceof? To potřebuju jednou za uherák, a je to proto, že jsem to zprasil...


Je potřeba vyjít ze samotné podstaty dynamického jazyka. A tou podstatou je, že na rozdíl od statického jazyka je datový typ přiřazen hodnotě, nikoliv proměnné.

To není pravda.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 00:29:12
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: agentura 15. 12. 2017, 01:12:48
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.

Tak tohle vyhrává cenu za hlod dne ;D 8) ;D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 01:48:30
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.

Pokud jsou v proměnné data jiného než očekávaného typu, jistě si to zaslouží výjimku. Pokud jsou však očekávána data různých typů, je lepší využít polymorfismu a funkcionalitu implementovat přímo do nich.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 15. 12. 2017, 01:51:31
Můj názor:

Dynamické jazyky se od statických liší tím, že mohu (snadno) za běhu měnit struktury. Příklad:

Kód: [Vybrat]
class X:
  def config(self):
    def foo():
       print("Great")
    self.foo = foo

def sayGreat(fooable):
  fooable.foo

x = X()

# špatně
sayGreat(x) # výjimka

# správně
x.config()
sayGreat(x)

Z čehož jsem si vyvodil tyto závěry:

1. Výše uvedené chování je v jiných jazycích (C#, Java, PHP) považováno za antipattern (přestože se hojně používá - viz oblíbené flamewar settery versus konstruktor). V jazycích jako Haskell to dokonce skoro ani nejde (schválně).

2. To, na co mají některé jazyky typy, na to má Python testy. Když se v Javě rozhodnete měnit nějakou věc, musíte často změnit spoustu typů. Když v Pythonu chcete změnit nějakou věc, musíte s ní i zohlednit testy.

3. V Javě, nebo v lepších jazycích postavených na typech (Haskell), když se konečně prokoušete všemi těmi změnami, a kompiler vám konečně úspěšně přeloží projekt, máte z velké části vyhráno, a apka často běží jak má. V dynamických jazycích ušetříte spousty času tím, že to velice snadno napíšete, pak to spustíte, a začnou vám padat výjimky víše uvedeného druhu. Což podle typu aplikace, kde se musíte složitě proklikat ke konkrétnímu stavu může být docela dost bolestivé.
Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.

4. V ničem jiném zásadnějším se dynamické od statický jazyků neliší. Jen jednu věc řeší jinak.

Zjistil jsem, že okenní aplikace, kde musím udělat víc jak pět kroků, abych dosáhl stavu a otestoval to je na Python příliš velká aplikace. A psát unittesty na to, zda se atribut jmenuje `vals`, `values`, `items` abych si ověřil, že jsem to napsal dobře, mě nebaví.

Zjistil jsem, že pro víše uvedenou dynamičnost nemám využití. Naopak oceňuji, když mi compiler najde alespoň 50% chyb dříve, než to začnu testovat - nebo nedejbože to jde do produkce.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 02:23:59
2. To, na co mají některé jazyky typy, na to má Python testy. Když se v Javě rozhodnete měnit nějakou věc, musíte často změnit spoustu typů. Když v Pythonu chcete změnit nějakou věc, musíte s ní i zohlednit testy.

Když se v Javě rozhodneš změnit nějakou věc, musíš testy změnit také. V tom není rozdíl.

3. V Javě, nebo v lepších jazycích postavených na typech (Haskell), když se konečně prokoušete všemi těmi změnami, a kompiler vám konečně úspěšně přeloží projekt, máte z velké části vyhráno, a apka často běží jak má. V dynamických jazycích ušetříte spousty času tím, že to velice snadno napíšete, pak to spustíte, a začnou vám padat výjimky víše uvedeného druhu. Což podle typu aplikace, kde se musíte složitě proklikat ke konkrétnímu stavu může být docela dost bolestivé.

V Javě či zmíněném Haskellu úspěšný překlad ještě zdaleka nemusí znamenat výhru. Když píšeš testy v Javě i v Pythonu, tak ty aplikace obvykle jedou na první dobrou, protože všechny možné závady vychytáš už v těch testech.

Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.

Testy se mi spouští automaticky po kompilaci třídy, téměř to nerozlišuji.

Zjistil jsem, že okenní aplikace, kde musím udělat víc jak pět kroků, abych dosáhl stavu a otestoval to je na Python příliš velká aplikace. A psát unittesty na to, zda se atribut jmenuje `vals`, `values`, `items` abych si ověřil, že jsem to napsal dobře, mě nebaví.

Pracovat přímo s atributy objektu je poměrně naivní a dobrý vývojář to nedělá. Na práci s atributy jsou metody. Okolí objektu vůbec nepotřebuje vědět, jaké atributy ten objekt má.

Zjistil jsem, že pro víše uvedenou dynamičnost nemám využití. Naopak oceňuji, když mi compiler najde alespoň 50% chyb dříve, než to začnu testovat - nebo nedejbože to jde do produkce.

Pokud máš spouštění testů oddělené od kompilace, tak se ti ani nedivím. Testy považuji za další level kompilace, který ihned navazuje na úspěšný překlad.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: BoneFlute 15. 12. 2017, 02:35:50
...

Přiznám se, že mě napadlo, že přijde nějaká podobná reakce. Ale pak jsem si řekl, proč se namahat. Kdo chce pochopit, pro toho to může být zajímavé. Zbytek mě nezajímá.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: . 15. 12. 2017, 02:40:18
Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.
Testy se mi spouští automaticky po kompilaci třídy, téměř to nerozlišuji.
Testy se mi spouští automaticky při ukládání souboru v editoru. Je ale důležité si vybrat správný nástroj.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 02:51:17
Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.
Testy se mi spouští automaticky po kompilaci třídy, téměř to nerozlišuji.
Testy se mi spouští automaticky při ukládání souboru v editoru. Je ale důležité si vybrat správný nástroj.

Zřejmě to máme nastavené podobně. Kromě toho však mohu uložit soubor bez kompilace a bez testu. Je to jen o správném nastavení závislostí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Debilove... 15. 12. 2017, 03:23:30
Kód: [Vybrat]
#!/usr/bin/env python3
from typing import Generator

def step_range(start: int, stop: int, step: int) -> Generator[int, None, None]:
    r = start
    while r < stop:
        yield r
        r += step

step_range(1, 10, 2) -> OK

step_range('1', 11, 2)  -> Fail + PyCharm: Unexpected type(s): (str, int, int) Possible types: (int, int, int) (int, int, int)


Naucte se python nez ho budete hejtit, pak nebudete za debily...

https://docs.python.org/3/library/typing.html

Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 15. 12. 2017, 05:40:58
Můj názor:

Dynamické jazyky se od statických liší tím, že mohu (snadno) za běhu měnit struktury. Příklad:

Kód: [Vybrat]
class X:
  def config(self):
    def foo():
       print("Great")
    self.foo = foo
/quote]
Tohle samo o sobě je už na první pohled hnusné a špatné. Čeho tím chcete dosáhnout?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Hilderbert 15. 12. 2017, 06:11:52
Kód: [Vybrat]
def sayGreat(fooable):
  fooable.foo
A tohle je také špatně, člověče.

Kód: [Vybrat]
$ pylint p1.py
No config file found, using default configuration
************* Module p1
W: 12, 0: Cannot decode using encoding "ascii", unexpected byte at position 2 (invalid-encoded-data)
W: 13, 0: Cannot decode using encoding "ascii", unexpected byte at position 16 (invalid-encoded-data)
W: 15, 0: Cannot decode using encoding "ascii", unexpected byte at position 5 (invalid-encoded-data)
W:  2, 0: Bad indentation. Found 2 spaces, expected 4 (bad-indentation)
W:  3, 0: Bad indentation. Found 4 spaces, expected 8 (bad-indentation)
W:  4, 0: Bad indentation. Found 7 spaces, expected 12 (bad-indentation)
W:  5, 0: Bad indentation. Found 4 spaces, expected 8 (bad-indentation)
W:  8, 0: Bad indentation. Found 2 spaces, expected 4 (bad-indentation)
C: 18, 0: Trailing newlines (trailing-newlines)
C:  1, 0: Missing module docstring (missing-docstring)
C:  1, 0: Invalid class name "X" (invalid-name)
C:  5, 4: Black listed name "foo" (blacklisted-name)
C:  1, 0: Missing class docstring (missing-docstring)
C:  1, 0: Old-style class defined. (old-style-class)
W:  1, 0: Class has no __init__ method (no-init)
C:  2, 2: Missing method docstring (missing-docstring)
C:  3, 4: Black listed name "foo" (blacklisted-name)
C:  3, 4: Missing function docstring (missing-docstring)
R:  1, 0: Too few public methods (1/2) (too-few-public-methods)
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)
C:  7, 0: Invalid function name "sayGreat" (invalid-name)
C:  7, 0: Missing function docstring (missing-docstring)
W:  8, 2: Statement seems to have no effect (pointless-statement)
C: 10, 0: Invalid constant name "x" (invalid-name)

-------------------------------------
Your code has been rated at -14.00/10
Na takový krátký kousek kódu 11 warningů, to je výkon.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 09:17:34
Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.

To je asi pravda, že jednoduché jazyky jako Python umožňují programovat i chytrým lidem z jiných oborů, kteří tak přestávají být závislí na IT lidech a mají své výsledky levněji a efektivněji.  Možná i to je důvod, proč některým lidem tak vadí, ztrácí tím svou výlučnost a monopol. To docela dobře vysvětluje místní zášť vůči Pythonu a jeho uživatelům.
[/quote]

To myslíš vážně?

Python je fajn a naprosto chápu, že jej používá mraky lidí pro rychlé a pohodlné vyřešení akutní potřeby, pro vyrobení prototypu, pro naskriptování projektu atd. Sám jej na tyto účely rád používám. To byl i důvod, proč jsem se do něj pustil.

Na triviální skript bash, trochu složitější až docela složitý (desítky souborů/modulů) python. Je to hotové za chvíli, stručný zápis, v IDE funguje špičkové ladění, má to mraky výborných knihoven. Ideální pro tyto účely.

Ale tady je řeč o rozsáhlých systémech, na kterých se dělá roky a další spoustu let se musí udržovat a rozšiřovat dle stále přicházejících nových požadavků. A ty nevyvíjejí vědci, technici, akademici, ale fulltime vývojáři. Držet pohromadě takové projekty bez hlídání typů kompilátorem je velice náročné a nákladné. Ještě navíc ke všem obrovským nákladům, které jsou s vývojem takového projektu spojené.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 09:21:28
Naucte se python nez ho budete hejtit, pak nebudete za debily...

https://docs.python.org/3/library/typing.html

?? Celou dobu tu o typehintech mluvím. A používáš je?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 09:55:19
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 10:05:53
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)

Mimochodem tahle hláška je přesně důvod, proč jsem definoval tu proměnou v __init__ v https://forum.root.cz/index.php?topic=16263.msg239229#msg239229 (pycharm to samozřejmě hlásí také, jen okamžitě během psaní), aby to následně mypy prohlásil za chybný typehint. Zdá se to ještě docela syrové...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 10:13:54
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)

Mimochodem tahle hláška je přesně důvod, proč jsem definoval tu proměnou v __init__ v https://forum.root.cz/index.php?topic=16263.msg239229#msg239229 (pycharm to samozřejmě hlásí také, jen okamžitě během psaní), aby to následně mypy prohlásil za chybný typehint. Zdá se to ještě docela syrové...

nevím jak vypadá celý kód.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 10:21:50
pycharm to samozřejmě hlásí také, jen okamžitě během psaní

můj editor to také zobrazuje během psaní.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 11:02:30
pycharm to samozřejmě hlásí také, jen okamžitě během psaní
můj editor to také zobrazuje během psaní.
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit. Netušíte proč ten člověk tu divnou věc dělá? Hádám, že to bude nějaká Java ojebávka, kterou se snaží používat v Pythonu. Napovídá tomu 4. vyjádření, že není žádný rozdíl mezi statickým a dynamickým jazykem, což je nutno přeložit na to, že on žádný rozdíl nevidí a je to poplatné tomu, na co jsem už upozornil. Pro používání dynamického jazyka je nutno používat jiné paradigma, je nutno myslet jinak. Tihle 'statičtí' programátoři to nedovedou, oni to prostě ani nevidí.
Název: Skoda, ze Python hodnoti ti co ho videli jen z rychliku
Přispěvatel: sarimak 15. 12. 2017, 11:06:10
Ahoj, prekvapila me ta hromada hejtu Pythonu od lidi, kteri v nem zkousi programovat stylem ktery znaji ze staticky typovanych jazyku a divi se, ze to neni ono, popr. si vyberou neco co v Pythonu jde technicky udelat, ale Pythonisti to sami povazuji za praseni - a na tom ukazuji, jak je Python problematicky.

Z meho pohledu jedna z vyhod Pythonu je, ze cloveku neda moc prace se naucit zaklady a diky spouste hotovych a dobre odladenych knihoven dovede s malym usilim vyprodukovat neco uzitecneho. To je uzitecne jak pro data science, tak pro devops, tak pro lidi co se uci programovat. Kod v Pythonu vypada hodne podobne jako pseudokod ve kterem se popisuji algoritmy nezavisle na jazyku, pomoci zabudovanych zakladnich typu pro heterogenni dynamicke seznamy, slovniky a mnoziny se da s malym usilim vyresit spousta uloh. Clovek muze zacit u skriptu (ktery by psal v Bashi) a prejit k funkcim a tridam, jak se projekt preklapi z prototypu do produkcni kvality. Webovy stack pro API server je hodne intuitivni (Flask, Gunicorn, nginx - nebo Tornado/Sanic), stack pro webove GUI ma spoustu typickych uloh uz vyresenou (Django, vcetne ORM). Existuje jak intutitivni orezane active-record ORM (peewee), tak plnotucne Hibernate-like/unit of work ORM (SQLAlchemy), tak klienti pro NoSQL databaze (napr. Mongo), fronty (napr. Redis-based jako rq a Celery, nebo Kafka).

S tim pomuze paradni podpora pro automatizaci testu, paradni podpora pro linting (vcetne coding style), kdo ma rad kontrolu typu tak sahne i po lintingu typu. Vetsina design patternu se da resit mnohem jednoduseji (napr. strategie pomoci slovniku "pointeru" na funkce), ale nektere postupy z C++ like jazyku jsou hodne podobne (dependency injection). Vicenasobna dedicnost se pouziva jen vyjimecne (zminovane mixiny nejsou neco, co by clovek pouzival casto), naopak dekoratory (retry, elapsed time, URL routing, registrace callbacku), context managery (transakce, setup+teardown, zamykani), iteratory a pointery na funkce/metody/tridy se v idiomatickem (pythonic) kodu pouzivaji hodne casto. Hodne se pouziva kompozice misto dedicnosti, interface je spis o kompatibilnich signaturach, kod se pise genericky (dokud argument podporuje operace ktere s nim chci provadet, nezajimam se o jeho typ - trosku podobne s templates v C++). Hodne se iteruje stylem foreach/bez indexu, testy na konkretni typ objektu nebyvaji potreba. Casto se pouziva "funkcionalni" zapis for cyklu ktere generuji data (dict/set/list comprehension, generator expression) a casto se pouzivaji korutiny (yield misto return - reentrantni funkce ktere si podrzi svuj stav a pri dalsim zavolani pokracuje tam kde minule skoncila).

Pomalost a pametova nenazranost je hodne zvelicovana - spousta knihoven ktere jsou narocne na CPU jsou kompilovane z C a obalene rozhranim ktere je umoznuje volat z Pythonu (sklearn, scipy, lxml, ujson apod.), popr. ukladaji data v Cckovych staticky typovanych strukturach (numpy). V dnesni dobe microservices se casto vetsi datove struktury stejne cpou do SQL/NoSQL/Redis-like cache, takze se opet ukladaji usporne (ale samozrejme se k nim pristupuje s overheadem sitoveho spojeni). Podobna situace je u GILu a orezaneho multithreadingu: Kde potrebuju CPU vykon, volim procesy a ozelim sdileny stav, kde potrebuju spoustu paralelnich IO ktere jsou vetsinou idle (websockety), volim kooperativni multitasking (asyncio). Slabiny Pythonu se daji dobre kompenzovat, jen se clovek musi naucit jak - a to chce investovat vetsi usili, nez ktere hateri byli ochotni dat.

Python se navic pouziva pro ovladani Docker ekosystemu a Ansible (cimz se kompenzuje dalsi nedostatek Pythonu - roztristeny deployment), daji se v nem psat ulohy pro distribuovane task schedulery (Dask, Airflow), dobre se v nem ladi (pdb, kvalitni logging knihovna, konektory na externi monitoring typu Sentry) a hlavne, vyborne se v nem prototypuji vedecke vypocty a algoritmy (Jupyter notebook, ipython).

V neposledni rade ma Python super komunitu - jak u nas, tak ve svete. Na konferencich je hodne fajn atmosfera, lidi misto soupereni pomahaji a sdileji, akce nejsou komercni projekty zamerene na vydelek, ale na sireni knowhow. Jazyk se hodne vyviji, konecne uz prestava bolet schizma Python 2 a 3 (a migrace rozumne psaneho projektu z 2.7 na 3.6 neni tak strasna jak to vypada).

Pratele Javiste a Cckari (C#, C++ apod.) vseho druhu, zkuste si prosim o Pythonu vic zjistit, nez ho zacnete pomlouvat. Mozna u sveho jazyka zustanete i nadale, ale aspon budete vedet proc vam vas stavajici jazyk vyhovuje a nebudete se rozhodovat na zaklade fam a dojmu, ktere v diskusi vyses casto zaznivaly. Predem diky!
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 11:08:24
Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.

To je asi pravda, že jednoduché jazyky jako Python umožňují programovat i chytrým lidem z jiných oborů, kteří tak přestávají být závislí na IT lidech a mají své výsledky levněji a efektivněji.  Možná i to je důvod, proč některým lidem tak vadí, ztrácí tím svou výlučnost a monopol. To docela dobře vysvětluje místní zášť vůči Pythonu a jeho uživatelům.

To myslíš vážně?

Python je fajn a naprosto chápu, že jej používá mraky lidí pro rychlé a pohodlné vyřešení akutní potřeby, pro vyrobení prototypu, pro naskriptování projektu atd. Sám jej na tyto účely rád používám. To byl i důvod, proč jsem se do něj pustil.

Na triviální skript bash, trochu složitější až docela složitý (desítky souborů/modulů) python. Je to hotové za chvíli, stručný zápis, v IDE funguje špičkové ladění, má to mraky výborných knihoven. Ideální pro tyto účely.

Ale tady je řeč o rozsáhlých systémech, na kterých se dělá roky a další spoustu let se musí udržovat a rozšiřovat dle stále přicházejících nových požadavků. A ty nevyvíjejí vědci, technici, akademici, ale fulltime vývojáři. Držet pohromadě takové projekty bez hlídání typů kompilátorem je velice náročné a nákladné. Ještě navíc ke všem obrovským nákladům, které jsou s vývojem takového projektu spojené.
[/quote]

To myslím vážně. Všimni si, že oni neuznávají Python vůbec, na nic. Trnem v oku je jim jeho samotná existence, jeho rostoucí popularita, jeho uživatelé. Co se týče velkých projektů, odpovědí je třeba Google nebo Seznam.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 11:17:26
pycharm to samozřejmě hlásí také, jen okamžitě během psaní
můj editor to také zobrazuje během psaní.
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit. Netušíte proč ten člověk tu divnou věc dělá? Hádám, že to bude nějaká Java ojebávka, kterou se snaží používat v Pythonu. Napovídá tomu 4. vyjádření, že není žádný rozdíl mezi statickým a dynamickým jazykem, což je nutno přeložit na to, že on žádný rozdíl nevidí a je to poplatné tomu, na co jsem už upozornil. Pro používání dynamického jazyka je nutno používat jiné paradigma, je nutno myslet jinak. Tihle 'statičtí' programátoři to nedovedou, oni to prostě ani nevidí.

může se stát překlep. Kontrola chyb v editoru je dobrá věc.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 11:28:09
Citace
To myslím vážně. Všimni si, že oni neuznávají Python vůbec, na nic. Trnem v oku je jim jeho samotná existence, jeho rostoucí popularita, jeho uživatelé.

Vždyť děláš to samé ohledně výhod dynamického vs. statického programování. Ty já nevidím vůbec žádné, naopak mi to na jinak příjemném pythonu silně vadí. Kdybychom měli náš středně velký firemní projekt s 10 tis. třídami a 35tis. commity v pythonu místo v javě, už nám z toho dávno hráblo a firma by dávno zkrachovala. Takhle to na pohodu zvládá vyvíjet pár lidí a požadavky na změny jsou od byznysu takřka každý den od r. 2000.

Kód: [Vybrat]
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit.
Když ten kód napíšeš o dvě obrazovky níž, konstruktor třídy v tom okamžiku vůbec nevidíš. Navíc bez detailní znalosti kódu netušíš, zda nebyl field definovaný v konstruktéru některého z předků. Ten intuitivní analyzér bych chtěl vidět...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 11:36:48
OK, protože vidím, že pořád amatéři budou tvrdit, že Python se dá používat i na větší projekty, tak je potřeba to rozseknout. Tak mi teda řeknete, jak se bude dělat jednoduchá věc. Mám rozhraní s metodou send a chci ji změnit na fuck. V profi jazycích věc na pár kliknutí. Jak se to udělá v Pythonu?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 11:42:05
Dozvíš se, že jsi lopata, když sis to nerozmyslel dopředu a že profesionálové tohle dělat nepotřebují...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 11:44:10
pycharm to samozřejmě hlásí také, jen okamžitě během psaní
můj editor to také zobrazuje během psaní.
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit. Netušíte proč ten člověk tu divnou věc dělá? Hádám, že to bude nějaká Java ojebávka, kterou se snaží používat v Pythonu. Napovídá tomu 4. vyjádření, že není žádný rozdíl mezi statickým a dynamickým jazykem, což je nutno přeložit na to, že on žádný rozdíl nevidí a je to poplatné tomu, na co jsem už upozornil. Pro používání dynamického jazyka je nutno používat jiné paradigma, je nutno myslet jinak. Tihle 'statičtí' programátoři to nedovedou, oni to prostě ani nevidí.
může se stát překlep. Kontrola chyb v editoru je dobrá věc.
To je taková až řekněme filosofická záležitost. Na jednu stranu ano, pomáhá to. Ale je ta pomoc dobrá? Je to jako výchova dětí, musíš jim pomáhat, ale ne moc, jinak se neosamostatní a budou z nich lemplové. Je to ve stylu, nekrm je, nauč je chytat ryby. Pomoc je dvousečná záležitost, dává i bere. Čím víc se spoléháš na něčí pomoc, tím jsi závislejší a tím horší je tvoje vlastní dovednost. Míval jsem vedoucího, který měl obrovský čuch na anomálie. Dostal třeba výpis nebo seznam nebo výkresy něčeho, třeba deset stránek, zběžně to prolétl očima a povídá, tohle je divný, proč... A odhalil tak třeba jedinou chybu, jediný překlep, která unikl pečlivým kontrolám řady lidí, než se to k němu dostalo. Velmi užitečné, ale nevypěstuješ si to, když to necvičíš. Ve výsledku tě to možná vede k tomu, že máš víc chyb a že tě to naopak brzdí, i když ti to na první pohled pomáhá. Kdo ví.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 11:45:25
OK, protože vidím, že pořád amatéři budou tvrdit, že Python se dá používat i na větší projekty, tak je potřeba to rozseknout. Tak mi teda řeknete, jak se bude dělat jednoduchá věc. Mám rozhraní s metodou send a chci ji změnit na fuck. V profi jazycích věc na pár kliknutí. Jak se to udělá v Pythonu?

pomocí IDE nbo editoru, úplně stejně jako v javě.

i kdybyste to dělal ručně a udělal chybu, tak to není problém. Protože:

pokud je ta metoda součástí nějakého veřejného API, tak byste ji měnit neměl.

pokud je to interní metoda, její použití je pokryto testy toho veřejného API.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 11:48:20
OK, protože vidím, že pořád amatéři budou tvrdit, že Python se dá používat i na větší projekty, tak je potřeba to rozseknout. Tak mi teda řeknete, jak se bude dělat jednoduchá věc. Mám rozhraní s metodou send a chci ji změnit na fuck. V profi jazycích věc na pár kliknutí. Jak se to udělá v Pythonu?

pomocí IDE nbo editoru, úplně stejně jako v javě.

i kdybyste to dělal ručně a udělal chybu, tak to není problém. Protože:

pokud je ta metoda součástí nějakého veřejného API, tak byste ji měnit neměl.

pokud je to interní metoda, její použití je pokryto testy toho veřejného API.

OK, tak v projektu je použito 3722 method s názvem send a z toho jedna třetina patří k tomu mému rozhraní. Takže?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 11:54:57
OK, protože vidím, že pořád amatéři budou tvrdit, že Python se dá používat i na větší projekty, tak je potřeba to rozseknout. Tak mi teda řeknete, jak se bude dělat jednoduchá věc. Mám rozhraní s metodou send a chci ji změnit na fuck. V profi jazycích věc na pár kliknutí. Jak se to udělá v Pythonu?

pomocí IDE nbo editoru, úplně stejně jako v javě.

i kdybyste to dělal ručně a udělal chybu, tak to není problém. Protože:

pokud je ta metoda součástí nějakého veřejného API, tak byste ji měnit neměl.

pokud je to interní metoda, její použití je pokryto testy toho veřejného API.

OK, tak v projektu je použito 3722 method s názvem send a z toho jedna třetina patří k tomu mému rozhraní. Takže?

zmáčknu M-r, zobrazí se mi výskyty. Upravím. Hotovo.

pokud můj kód není sbírka antipaternů jako ten dustinův, tak to funguje.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 11:56:51

pomocí IDE nbo editoru, úplně stejně jako v javě.

A už jsi to vůbec někdy zkoušel? Protože jinak bys tohle nenapsal. Změna bude úplně všude (když to dáš stringově) - tedy úplně blbě, nebo třeba jen na zlomku výskytů - opět úplně blbě

Citace
pokud je to interní metoda, její použití je pokryto testy toho veřejného API.

Takže vše nahradím a pak hodinu (nebo třeba týden, podle počtu souborů) budu revertovat přejmenování volání systémových API, které mi všepokrývající testy hodí na hlavu. Navíc mi to přejmenuje i metody tříd, které jsem vůbec přejmenovat nechtěl.

Sorry, ale tohle jen ukazuje, že to vůbec nepoužíváš. V pycharmu přejmenovávám dost často, důsledně používám typehinty a dost často se to nepovede napoprvé.

V javě tohle absolutně nehrozí. Máme commity, kde se změna názvu klíčové třídy týká tisícovky souborů (po commitu to musí zůstat kompilovatelné, tudíž vše najednou). A je to na pár sekund.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 15. 12. 2017, 11:57:03
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.

To je asi pravda, že jednoduché jazyky jako Python umožňují programovat i chytrým lidem z jiných oborů, kteří tak přestávají být závislí na IT lidech a mají své výsledky levněji a efektivněji.  Možná i to je důvod, proč některým lidem tak vadí, ztrácí tím svou výlučnost a monopol. To docela dobře vysvětluje místní zášť vůči Pythonu a jeho uživatelům.

Nie je to az tak zle, ze by sa studovani programatori s praxou bali amaterov. Ono vzdy taketo jazyky existovali - visual basic, php, *basic.   

On je problem, ze  java je zlozito napisana. Ale ked nieco potrebujes ohnut podla potrieb zakaznika, tak to proste ohnes a nemusis potom zakaznikovi vysvetlovat, ze "neda sa". Zaklad ti trva spravit dlhsie, ale potom sa ti to vynahradi na udrzbe. Ked chces odladit, zefektivnit a naskalovat aplikaciu, zrefaktorovat kod je tam obrovska podpora na cokolvek.

Python je urceny na jednoduche prototypovanie, preto ho maju radi amateri. (Ja sa radim medzi python amaterov) Ti nepotrebuju dokonaly vysledok, ale staci im vysledok, ktory im ulahci robotu.  A na to je python vacsinou vyborny. Na mission critical systemy uz menej. Chce to potom trpezlivy, skuseny support a tolerantnejsieho zakaznika.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 11:57:16
Takže jak pozná od sebe různé typy? Změní správně jen jednu třetinu?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 11:57:48

zmáčknu M-r, zobrazí se mi výskyty. Upravím. Hotovo.

Ručně upravíš stovky výskytů? Kolik ti platí na hodinu?
Citace
pokud můj kód není sbírka antipaternů jako ten dustinův, tak to funguje.

Plácáš nesmysly.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 11:58:17
V javě tohle absolutně nehrozí. Máme commity, kde se změna názvu klíčové třídy týká tisícovky souborů (po commitu to musí zůstat kompilovatelné, tudíž vše najednou). A je to na pár sekund.

+1
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 11:58:24
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 12:00:32
Python je urceny na jednoduche prototypovanie, preto ho maju radi amateri. (Ja sa radim medzi python amaterov) Ti nepotrebuju dokonaly vysledok, ale staci im vysledok, ktory im ulahci robotu.  A na to je python vacsinou vyborny. Na mission critical systemy uz menej. Chce to potom trpezlivy, skuseny support a tolerantnejsieho zakaznika.

Bohužel i tady Java vede. Celé funkční programy na pár řádek a zabalené v samospustitelném skriptu klidně včetně aplikáče? Tomu říkám rychlý vývoj.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 12:04:05
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).

Nejdřív si to sám prakticky vyzkoušej a pak to komentuj. Očividně vůbec netušíš, o čem je řeč. Nebo se drž pythonu a nevyjadřuj se k postupům při vývoji Javy v kvalitním IDE. Pak se nesmíš divit, že tu padají slova jako "amatér". Sorry.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: zvědavec 15. 12. 2017, 12:04:52
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).

Takže to ten amatérský nástroj neumí, ale vlastně je to v pohodě, ne? Až se naučíš vyvíjet, tak dej vědět, protože píšeš hrozný nesmysly.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 12:24:54
Ručně upravíš stovky výskytů? Kolik ti platí na hodinu?

Když bude výskytů hodně, mohu upravit všechny najednou. Zatím jsem nepřejmenovával nic, co by už mělo stovky výskytů.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 12:29:10
Kolik ti platí na hodinu?

určitě víc než platíte vy v té vaší java firmě.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 12:38:34
Když bude výskytů hodně, mohu upravit všechny najednou.

Tedy znovu - jak  všechny najednou pouze ty, které jsou ty správné?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 12:43:40
určitě víc než platíte vy v té vaší java firmě.

A na tak triviální operaci si můžeš dovolit strávit víc, než jen pár desítek sekund i s commitem?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 15. 12. 2017, 12:51:21
Python je urceny na jednoduche prototypovanie, preto ho maju radi amateri. (Ja sa radim medzi python amaterov) Ti nepotrebuju dokonaly vysledok, ale staci im vysledok, ktory im ulahci robotu.  A na to je python vacsinou vyborny. Na mission critical systemy uz menej. Chce to potom trpezlivy, skuseny support a tolerantnejsieho zakaznika.

Bohužel i tady Java vede. Celé funkční programy na pár řádek a zabalené v samospustitelném skriptu klidně včetně aplikáče? Tomu říkám rychlý vývoj.

Neviem, ked pisem tooly pre seba, radsej to vygrciam v awk-u, alebo v pythone, nez by som mal absolvoval byrokraciu vytvarania noveho javovskeho projektu. Microservice cez ThreadedHttpServer je tam spravitelny smiesne rychlo. Horsie, ked uz je to treba dostat do produkcnej kvality, aby to vyhovovalo systemakom, to az take easy nie je :-/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 12:58:32
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).
Nejdřív si to sám prakticky vyzkoušej a pak to komentuj. Očividně vůbec netušíš, o čem je řeč. Nebo se drž pythonu a nevyjadřuj se k postupům při vývoji Javy v kvalitním IDE. Pak se nesmíš divit, že tu padají slova jako "amatér". Sorry.
Nazývá mě amatérem někdo, kdo potřebuje rutinně měnit tisíce výskytů veřejného rozhraní v tisících souborů? Zjevně máme o amatérismu rozdílné představy. :-)

Já zastávám minimalistickou pozici. I kdybych vyvíjel něco v Javě, používal bych na to rád editor Vim. Otázka zní, šlo by to vůbec? Nebo je to tak špatný jazyk, že ho prakticky nelze používat bez nenažraného neefektivního bloatware, jakým bývají 'kvalitní ide', které programátory vychovávají k tomu, že potřebují pořát dokola přepracovávat kód v tisících souborech?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 13:12:48
Když bude výskytů hodně, mohu upravit všechny najednou.

Tedy znovu - jak  všechny najednou pouze ty, které jsou ty správné?

použiju funkci pro přejmenování.

určitě víc než platíte vy v té vaší java firmě.

A na tak triviální operaci si můžeš dovolit strávit víc, než jen pár desítek sekund i s commitem?

klidně to přejmenuju za 10 sekund, ale opravdu tak velké přejmenování nedělám často.

Už s vámi nebudu dál diskutovat. Nemá to cenu. Python neznáte, ale poučujete všechny jak v něm správně programovat. Podle vaší logiky se člověk nejlépe naučí programovat v Pythonu programováním v Javě. My všichni ostatní si podle vás jen hrajem.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 13:27:03
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).
Takže to ten amatérský nástroj neumí, ale vlastně je to v pohodě, ne? Až se naučíš vyvíjet, tak dej vědět, protože píšeš hrozný nesmysly.
Jaký amatérský nástroj máte na mysli? Python? Ne, ten to neumí, stejně jako to numí Java. Myslíte nějaké IDE? Nevím, nikdy jsem neměl tu potřebu.

Přijde mi zvláštní, že mě k tomu, abych se naučil vyvíjet, vybízí někdo, kdo má potřebu rutinně měnit tisíce výskytů veřejného rozhraní v tisícovkách souborů. Umíte si představit, že by někdo chtěl ve stdio.h přejmenovat rutinně printf na fprint? Znamená to, že C se nehodí na velké projekty? Hodí, ale není určen do ruky amatérům.

To co chcete je, ať se vám to líbí nebo ne, amatérské. Není to a nemůže být běžná potřeba takto měnit veřejné rozhraní. A navíc podle toho posuzovat vhodnost jazyka. Nechci být ošklivý, ale tohle může být důležité pouze pro amatéry a začátečníky, kteří ještě neumí programovat a ti u velkých projektů nemají do dělat. Protože tohle zavání hodně špatným návrhem aplikace, zvláště když je to potřeba dělat významně často. Zajímalo by mě, jaké důvody vás vedou k potřebě měnit široce používané veřejné api. 

Chápu potřebu hromadného předělávání kódu u statického jazyka, když se mění datové typy hodnot se kterými program musí pracovat, to je pro statické programy problém. S tím dynamické jazyky problém nemají. Ale předělávat neustále veřejné rozhraní? To je prasárna, ať se na to člověk dívá jak chce. A to je to, o čem jsem psal, tato možnost vede ke špatným návykům a tyhle špatné návyky si teď obhajujete. To je celé.

Tušíj, že vaše potřeba opět souvisí se statickými typy. Něco ve smyslu, že najednou potřebujete místo obecného send() mít sendType1(), sendType2(). Tedy opět věc, která dynamické jazyky netrápí. Ale i ve statickém jazyku si s tímto lze poradit rozuměji, než neustálým předěláváním veřejného rozhraní. A když už se tím člověk jednou spálí, dá si pozor a příště si rozhraní navrhne flexibilněji. Zvlátě když dělá na velkém projektu, kde je flexibilita nezbytná, pokud má být kód dobře udržovatelný.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 13:30:29
použiju funkci pro přejmenování.

Takže vše.

[quote ]
Už s vámi nebudu dál diskutovat. Nemá to cenu. Python neznáte, ale poučujete všechny jak v něm správně programovat. Podle vaší logiky se člověk nejlépe naučí programovat v Pythonu programováním v Javě. My všichni ostatní si podle vás jen hrajem.
[/quote]

Ale houby, i vývoj projektů v pythonu je užitečný a důležitý. A vše vyžaduje své. Ale nesouhlasím, když tu někdo tvrdí, že typy jsou k ničemu ba dokonce na škodu a že se velký projekt v pythonu vytváří a udržuje úplně stejně snadno, stačí použít "správné paradigma". Nikdo mi tu neporadil, jak mám svůj domácí projekt vyvíjet jinak, abych neztrácel čas otravnými ručními úkony typu přejmenování či přesun třídy. Jo, nepřejmenovávat a nepřesouvat, jsem amatér, protože při změně vnitřní funkce třídy či metody chci její název změnit tak, aby vyjadřoval skutečnost.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 13:38:54
Přijde mi zvláštní, že mě k tomu, abych se naučil vyvíjet, vybízí někdo, kdo má potřebu rutinně měnit tisíce výskytů veřejného rozhraní v tisícovkách souborů. Umíte si představit, že by někdo chtěl ve stdio.h přejmenovat rutinně printf na fprint? Znamená to, že C se nehodí na velké projekty? Hodí, ale není určen do ruky amatérům.

Představ si, že třeba před 15 lety někdo, kdo už na projektu 10 let nedělá, zvolil nějaký název třídy, např. logovací třída Log. A ten název už po 15 letech nevyjadřuje přesně, co ta třída dnes dělá, nebo to nedává gramaticky smysl - anglicky je to Logger.
 Log je skoro ve všech třídách tvého projektu, ale také je tam nějaká třída Log, která opravdu vyjadřuje záznam logu. A to tě po chvíli pěkně leze na nervy. Profesionál o to bude zakopávat dál. Amatér se domluví s ostatními členy týmu, aby s tím počítali a přejmenuje logovací Log na Logger. Projekt nikdo další nevyvíjí, nezávisejí na něm žádné externí knihovny, klidně si to může dovolit. Narozdíl od uvedeného extrémního příkladu libc.

A pak holt během pár desítek sekund vyleze commit s tisíci změněných souborů. Velice amatérské.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: armabeton 15. 12. 2017, 13:39:57
Kdybychom měli náš středně velký firemní projekt s 10 tis. třídami a 35tis. commity v pythonu místo v javě, už nám z toho dávno hráblo a firma by dávno zkrachovala.

Tyjo to fakt mate prumerne jen 3,5 commitu na tridu? Nejake divne pocty, to pisete kod na prvni dobrou?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Sajfi 15. 12. 2017, 13:42:53
Vždyť děláš to samé ohledně výhod dynamického vs. statického programování. Ty já nevidím vůbec žádné, naopak mi to na jinak příjemném pythonu silně vadí. Kdybychom měli náš středně velký firemní projekt s 10 tis. třídami a 35tis. commity v pythonu místo v javě, už nám z toho dávno hráblo a firma by dávno zkrachovala. Takhle to na pohodu zvládá vyvíjet pár lidí a požadavky na změny jsou od byznysu takřka každý den od r. 2000.

A neměl by ten středně velký projekt, kdyby byl psaný jak se píše v Pythonu, místo 10 tis. tříd třeba jen 2 tis. tříd? Ty jazyky jsou opravdu jiné a tak by se k nim mělo přistupovat. Pěkné porovnání je třeba jak napsat nějakou síťovou service ve Twisted a v Tornadu. Twisted je v podstatě Java, ale syntaxe je Python, použití je takové... těžkopádné (pro Pythonistu, Javista na to bude koukat jinak). V Tornadu je kód dělající to samé úspornější.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 13:46:25
Už s vámi nebudu dál diskutovat. Nemá to cenu. Python neznáte, ale poučujete všechny jak v něm správně programovat. Podle vaší logiky se člověk nejlépe naučí programovat v Pythonu programováním v Javě. My všichni ostatní si podle vás jen hrajem.

On má pravdu, přejmenovat široce používané rozhraní je asi v Javě jednodušší. Byť by mě zajímalo, jak by se mu automaticky vyřešil případ, že někde přijímá objekty dvou typů se stejným rozhraním a najednou se mu u jednoho typu to rozhraní přejmenuje. Čili něco, co je v dynamickém jazyku typické. Opět se dostáváme k postřehu, že tito lidé myslí výhradně staticky.

V čem se mýlí je, že tuto činnost považuje za správnou a žádoucí. Připodobnil bych to otvírání dveří hrubou silou, vyrážením. A byt kde se vyráží dveře těžko je špatný, protože vyrážet dveře je normální a je to potřeba dělat často.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 14:07:31
Vždyť děláš to samé ohledně výhod dynamického vs. statického programování. Ty já nevidím vůbec žádné, naopak mi to na jinak příjemném pythonu silně vadí. Kdybychom měli náš středně velký firemní projekt s 10 tis. třídami a 35tis. commity v pythonu místo v javě, už nám z toho dávno hráblo a firma by dávno zkrachovala. Takhle to na pohodu zvládá vyvíjet pár lidí a požadavky na změny jsou od byznysu takřka každý den od r. 2000.

A neměl by ten středně velký projekt, kdyby byl psaný jak se píše v Pythonu, místo 10 tis. tříd třeba jen 2 tis. tříd? Ty jazyky jsou opravdu jiné a tak by se k nim mělo přistupovat. Pěkné porovnání je třeba jak napsat nějakou síťovou service ve Twisted a v Tornadu. Twisted je v podstatě Java, ale syntaxe je Python, použití je takové... těžkopádné (pro Pythonistu, Javista na to bude koukat jinak). V Tornadu je kód dělající to samé úspornější.

nejvíc minimalistické je asi gevent. To nahradí standardní IO funkce za neblokující.

v moderním pythonu by se asi mělo používat async await. Buhužel existuje asyncio, curio, trio ....

Nejednotnost asynchronních knihoven není nic, čím by se Python mohl chlubit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 15. 12. 2017, 14:22:31
Byť by mě zajímalo, jak by se mu automaticky vyřešil případ, že někde přijímá objekty dvou typů se stejným rozhraním a najednou se mu u jednoho typu to rozhraní přejmenuje.

Pokud mají třídy stejné rozhraní, implementují stejné rozhraní. Pokud mají shodou okolností podobné názvy metod, ale nemají explicitně řešeno "implements XYZ", pak se na to nemohu spolehnout a v javě neimplementují stejné rozhraní. V pythonu si zavolám hasattr a spoléhám se, že textový název opravdu vyjadřuje to samé. Jako např. tady https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L298

Citace
V čem se mýlí je, že tuto činnost považuje za správnou a žádoucí. Připodobnil bych to otvírání dveří hrubou silou, vyrážením. A byt kde se vyráží dveře těžko je špatný, protože vyrážet dveře je normální a je to potřeba dělat často.

Ano, možnost jednoduchého přejmenování považuji za zcela klíčové. Mraky chyb vzniká špatným pojmenováním, řeším je každou chvíli, a aktuálně správné názvy jsou zásadní. Když na projektu dělá víc lidí (což asi není tvůj případ), špatným názvům se nedá vyhnout a pokud má projekt tu obrovskou výhodu, že si to může dovolit (narozdíl např. od libc nebo kernelího API), je potřeba je opravovat. Navíc se významy v čase posouvají, jak se mění požadavky. Je to úplně normální. Pokud dáváš názvy na první dobrou i s výhledem na 10 let dopředu, jsi bůh. Ale spíš si tipuji, že nic takového neděláš a tedy logicky nepotřebuješ.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 14:31:59
Přijde mi zvláštní, že mě k tomu, abych se naučil vyvíjet, vybízí někdo, kdo má potřebu rutinně měnit tisíce výskytů veřejného rozhraní v tisícovkách souborů. Umíte si představit, že by někdo chtěl ve stdio.h přejmenovat rutinně printf na fprint? Znamená to, že C se nehodí na velké projekty? Hodí, ale není určen do ruky amatérům.

Představ si, že třeba před 15 lety někdo, kdo už na projektu 10 let nedělá, zvolil nějaký název třídy, např. logovací třída Log. A ten název už po 15 letech nevyjadřuje přesně, co ta třída dnes dělá, nebo to nedává gramaticky smysl - anglicky je to Logger.
 Log je skoro ve všech třídách tvého projektu, ale také je tam nějaká třída Log, která opravdu vyjadřuje záznam logu. A to tě po chvíli pěkně leze na nervy. Profesionál o to bude zakopávat dál. Amatér se domluví s ostatními členy týmu, aby s tím počítali a přejmenuje logovací Log na Logger. Projekt nikdo další nevyvíjí, nezávisejí na něm žádné externí knihovny, klidně si to může dovolit. Narozdíl od uvedeného extrémního příkladu libc.

A pak holt během pár desítek sekund vyleze commit s tisíci změněných souborů. Velice amatérské.
Jo, živě si představuji, jak jen tak z rozmaru měním 15 let staré (osvědčené) rozhraní. Pánové, přiznejte se, vy si vymýšlíte a nemáte žádnou praxi. Prý že se domluvíš s pár lidma. Změna software je jen jeden krok. Tomu předchází formální proces požadavku, zdůvodnění, ekonomické rozvahy a schválení. Po té musí proběhnout důkladné otestování (které zaměstná spoustu lidí) v testovacím prostředí, pak následuje domluva a nasazení nové verze u zákazníka, podle jeho procesů a předkomplexní a komplexní vyzkoušení. Krom toho se to celé musí zapracovat do projektové dokumentace a tu schválit. I malá změna představuje u velkého projektu desítky až stovky člověkohodin, kde čas samotné změny a práce vývojáře je marginální. Takto to u velkých projektů funguje v praxi.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 14:34:47
Tušíj, že vaše potřeba opět souvisí se statickými typy. Něco ve smyslu, že najednou potřebujete místo obecného send() mít sendType1(), sendType2(). Tedy opět věc, která dynamické jazyky netrápí. Ale i ve statickém jazyku si s tímto lze poradit rozuměji, než neustálým předěláváním veřejného rozhraní. A když už se tím člověk jednou spálí, dá si pozor a příště si rozhraní navrhne flexibilněji. Zvlátě když dělá na velkém projektu, kde je flexibilita nezbytná, pokud má být kód dobře udržovatelný.

Obecný send() může zůstat stejný v dynamických i statických jazyků. Nevidím důvod pro přilepování názvu typu do názvu metody.

Předělávání rozhraní je zlo. Obvykle se připouští pouze jeho rozšiřování.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 15. 12. 2017, 14:51:48
Byť by mě zajímalo, jak by se mu automaticky vyřešil případ, že někde přijímá objekty dvou typů se stejným rozhraním a najednou se mu u jednoho typu to rozhraní přejmenuje.

Pokud mají třídy stejné rozhraní, implementují stejné rozhraní. Pokud mají shodou okolností podobné názvy metod, ale nemají explicitně řešeno "implements XYZ", pak se na to nemohu spolehnout a v javě neimplementují stejné rozhraní. V pythonu si zavolám hasattr a spoléhám se, že textový název opravdu vyjadřuje to samé. Jako např. tady https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L298

v tom vašem příkladu s Message žádné společné rozhraní neexistovalo. Potomci měli rozdílné atributy.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 15:00:41
Byť by mě zajímalo, jak by se mu automaticky vyřešil případ, že někde přijímá objekty dvou typů se stejným rozhraním a najednou se mu u jednoho typu to rozhraní přejmenuje.
Pokud mají shodou okolností podobné názvy metod, ale nemají explicitně řešeno "implements XYZ", pak se na to nemohu spolehnout a v javě neimplementují stejné rozhraní.
Stačilo říct, že to to IDE neumí a selže na tom. Takže si tak upravíš tisíce souborů a potenciálně způsobíš tisíce chyb. Tedy u reálné produkce, kde o něco jde, tě teď čeká důkladné testování, než si to všechno ověříš a nebo jsi amatér a pustíš to jen tak. Což je asi tvůj případ.

Citace
V čem se mýlí je, že tuto činnost považuje za správnou a žádoucí. Připodobnil bych to otvírání dveří hrubou silou, vyrážením. A byt kde se vyráží dveře těžko je špatný, protože vyrážet dveře je normální a je to potřeba dělat často.

Ano, možnost jednoduchého přejmenování považuji za zcela klíčové. Mraky chyb vzniká špatným pojmenováním, řeším je každou chvíli, a aktuálně správné názvy jsou zásadní. Když na projektu dělá víc lidí (což asi není tvůj případ), špatným názvům se nedá vyhnout a pokud má projekt tu obrovskou výhodu, že si to může dovolit (narozdíl např. od libc nebo kernelího API), je potřeba je opravovat. Navíc se významy v čase posouvají, jak se mění požadavky. Je to úplně normální. Pokud dáváš názvy na první dobrou i s výhledem na 10 let dopředu, jsi bůh. Ale spíš si tipuji, že nic takového neděláš a tedy logicky nepotřebuješ.
[/quote]

Je-li to známka božství, jsem bůh. Protože nepotřebuji měnit rozhraní ani u starších projektů. Ale hlavně, dynamický jazyk je flexibilní, u něj můžeš definovat rozhrání obecně, můžeš použít návrh shora. A když to máš navrženo, začneš to implementívat. Postup je opačný, implementace se přizpůsobuje názvu, tedy předem definované architektuře systému. Že se ti mění v průpběhu času funkce tříd a metod zase ukazuje ná amatérský přístup. Je to zase stejné, jakoby se funkce printf() v průběhu času měnila. Může se  měnit její implementace, ale nikdy její funkce. Tak se správně programuje. Vy to tak neděláte?

Samozřejmě návrh architektury rozsánlého systému nemůže dělat jen tak někdo, každý druhý nezkušený řadový programátor. To je oblast pro ty nejzkušenější a nejlépe placené. Když to dělá amatér, tak se pak nestačí divit, kolik toho nedomyslel a jak se mu to rozpadá pod rukama a jak to potřebuje pořád předělávat.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 15:10:50
Obecný send() může zůstat stejný v dynamických i statických jazyků. Nevidím důvod pro přilepování názvu typu do názvu metody.

Předělávání rozhraní je zlo. Obvykle se připouští pouze jeho rozšiřování.
To je pravda, ale ve statickém jazyku se na to musí myslet předem, což bývá kámen úrazu, když ta potřeba vznikne časem.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: nechapu 15. 12. 2017, 15:41:23
OMG, cte to i nejaky vyvojar? Ja to sleduju uz nejakou dobu a vubec nechapu, jestli je to vtip a nebo jste jen retardi. Jediny Dustin az moc jemne dava priklady z praxe a nikdo mu je neresi. Ze je to cele vtip a chcete nas dostat? :D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 15. 12. 2017, 17:09:31

zmáčknu M-r, zobrazí se mi výskyty. Upravím. Hotovo.

Ručně upravíš stovky výskytů? Kolik ti platí na hodinu?
Citace
pokud můj kód není sbírka antipaternů jako ten dustinův, tak to funguje.

Plácáš nesmysly.

Pokud nějakou metodu použijete 100x, tak to znamená, že máte špatný návrh.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Honza 15. 12. 2017, 20:25:31
OMG, cte to i nejaky vyvojar? Ja to sleduju uz nejakou dobu a vubec nechapu, jestli je to vtip a nebo jste jen retardi. Jediny Dustin az moc jemne dava priklady z praxe a nikdo mu je neresi. Ze je to cele vtip a chcete nas dostat? :D
Já to nesleduju od začátku, ale taky kroutím hlavou...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 15. 12. 2017, 21:04:07
Přijde mi zvláštní, že mě k tomu, abych se naučil vyvíjet, vybízí někdo, kdo má potřebu rutinně měnit tisíce výskytů veřejného rozhraní v tisícovkách souborů. Umíte si představit, že by někdo chtěl ve stdio.h přejmenovat rutinně printf na fprint? Znamená to, že C se nehodí na velké projekty? Hodí, ale není určen do ruky amatérům.

Představ si, že třeba před 15 lety někdo, kdo už na projektu 10 let nedělá, zvolil nějaký název třídy, např. logovací třída Log. A ten název už po 15 letech nevyjadřuje přesně, co ta třída dnes dělá, nebo to nedává gramaticky smysl - anglicky je to Logger.
 Log je skoro ve všech třídách tvého projektu, ale také je tam nějaká třída Log, která opravdu vyjadřuje záznam logu. A to tě po chvíli pěkně leze na nervy. Profesionál o to bude zakopávat dál. Amatér se domluví s ostatními členy týmu, aby s tím počítali a přejmenuje logovací Log na Logger. Projekt nikdo další nevyvíjí, nezávisejí na něm žádné externí knihovny, klidně si to může dovolit. Narozdíl od uvedeného extrémního příkladu libc.

A pak holt během pár desítek sekund vyleze commit s tisíci změněných souborů. Velice amatérské.
Jo, živě si představuji, jak jen tak z rozmaru měním 15 let staré (osvědčené) rozhraní. Pánové, přiznejte se, vy si vymýšlíte a nemáte žádnou praxi. Prý že se domluvíš s pár lidma. Změna software je jen jeden krok. Tomu předchází formální proces požadavku, zdůvodnění, ekonomické rozvahy a schválení. Po té musí proběhnout důkladné otestování (které zaměstná spoustu lidí) v testovacím prostředí, pak následuje domluva a nasazení nové verze u zákazníka, podle jeho procesů a předkomplexní a komplexní vyzkoušení. Krom toho se to celé musí zapracovat do projektové dokumentace a tu schválit. I malá změna představuje u velkého projektu desítky až stovky člověkohodin, kde čas samotné změny a práce vývojáře je marginální. Takto to u velkých projektů funguje v praxi.

Upratovanie v projekte je normalna zalezitost. Ak sa projekt neupratuje, casom zvykne degradovat. Povodna architektura uz nemusi vyhovovat aktualnym potrebam a robi kazdu zmenu funkcionality bolestivou. Ci sa nieco rozbilo, sa da zistit automatickymi testami a na predprodukcnom prostredi. Ak je v projekte nejaky kod, ktory nevies, co robi, preco to robi tak by si to mal zistit. Pristup "nechytat sa, ked to funguje" je nespravny, lebo potom clovek nieco robi a ani nevie co, no skratka lopatactvo deluxe. Tak ani nevies vylepsit vlastnosti, zefektivnit, dat pracu druhym koderom, skratka bieda...

Ak niekto nema na to nastroje a patle vo vim, potom je to problem ...
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: kdr 15. 12. 2017, 21:18:21
Možná by bylo dobrý si přečíst název tématu a nehonit si tu IT pinďoury.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 22:20:01
Obecný send() může zůstat stejný v dynamických i statických jazyků. Nevidím důvod pro přilepování názvu typu do názvu metody.

Předělávání rozhraní je zlo. Obvykle se připouští pouze jeho rozšiřování.
To je pravda, ale ve statickém jazyku se na to musí myslet předem, což bývá kámen úrazu, když ta potřeba vznikne časem.

Nemusí. Prostě do rozhraní přidám další metodu s novými typy parametrů. Tím se rozbijí vazby v závislých modulech, které ji dosud neimplementují. Dopíše se do nich implementace, otestuje a je to. Stejně to dělám i při dynamickém typování.

Zásadou však je neměnit metody, které již v rozhraní jsou a je na nich závislá práce dalších vývojářů. OCP.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 23:06:16
Přijde mi zvláštní, že mě k tomu, abych se naučil vyvíjet, vybízí někdo, kdo má potřebu rutinně měnit tisíce výskytů veřejného rozhraní v tisícovkách souborů. Umíte si představit, že by někdo chtěl ve stdio.h přejmenovat rutinně printf na fprint? Znamená to, že C se nehodí na velké projekty? Hodí, ale není určen do ruky amatérům.

Představ si, že třeba před 15 lety někdo, kdo už na projektu 10 let nedělá, zvolil nějaký název třídy, např. logovací třída Log. A ten název už po 15 letech nevyjadřuje přesně, co ta třída dnes dělá, nebo to nedává gramaticky smysl - anglicky je to Logger.
 Log je skoro ve všech třídách tvého projektu, ale také je tam nějaká třída Log, která opravdu vyjadřuje záznam logu. A to tě po chvíli pěkně leze na nervy. Profesionál o to bude zakopávat dál. Amatér se domluví s ostatními členy týmu, aby s tím počítali a přejmenuje logovací Log na Logger. Projekt nikdo další nevyvíjí, nezávisejí na něm žádné externí knihovny, klidně si to může dovolit. Narozdíl od uvedeného extrémního příkladu libc.

A pak holt během pár desítek sekund vyleze commit s tisíci změněných souborů. Velice amatérské.
Jo, živě si představuji, jak jen tak z rozmaru měním 15 let staré (osvědčené) rozhraní. Pánové, přiznejte se, vy si vymýšlíte a nemáte žádnou praxi. Prý že se domluvíš s pár lidma. Změna software je jen jeden krok. Tomu předchází formální proces požadavku, zdůvodnění, ekonomické rozvahy a schválení. Po té musí proběhnout důkladné otestování (které zaměstná spoustu lidí) v testovacím prostředí, pak následuje domluva a nasazení nové verze u zákazníka, podle jeho procesů a předkomplexní a komplexní vyzkoušení. Krom toho se to celé musí zapracovat do projektové dokumentace a tu schválit. I malá změna představuje u velkého projektu desítky až stovky člověkohodin, kde čas samotné změny a práce vývojáře je marginální. Takto to u velkých projektů funguje v praxi.

Upratovanie v projekte je normalna zalezitost. Ak sa projekt neupratuje, casom zvykne degradovat. Povodna architektura uz nemusi vyhovovat aktualnym potrebam a robi kazdu zmenu funkcionality bolestivou. Ci sa nieco rozbilo, sa da zistit automatickymi testami a na predprodukcnom prostredi. Ak je v projekte nejaky kod, ktory nevies, co robi, preco to robi tak by si to mal zistit. Pristup "nechytat sa, ked to funguje" je nespravny, lebo potom clovek nieco robi a ani nevie co, no skratka lopatactvo deluxe. Tak ani nevies vylepsit vlastnosti, zefektivnit, dat pracu druhym koderom, skratka bieda...

Ak niekto nema na to nastroje a patle vo vim, potom je to problem ...
Škoda, že se nedovedeš zdržet urážek. Také bych tu mohl vykřikovat něco o lopatách, které bez ide, jenž programuje za ně, nedají ani ránu. Násťrojů jsem vyskoušel řadu a vždy se vrátil k vimu, když to bylo možné, dělá se mi s ním nejlíp. Jinak souhlasím, čistit a udržovat kód je nutné, má to přínos. Jen se směju té představě, že si u velkého projektu pár programátorů něco řekne, udělaji za deset sekund změnu v tisíci souborech a tím je hotovo. Kdo tohle tvrdí, ten na reálném velkém projektu, který už z podstaty velikosti musí být řízen formálně, nikdy nic nedělal a vůbec netuší, co to obnáší.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: . 15. 12. 2017, 23:13:38
Zatím dobrý, ale chce to více postav. Kolem Velikonoc si přijdu pro pokračování. Vyjde to i knižně?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Petr Mach 15. 12. 2017, 23:13:50
Obecný send() může zůstat stejný v dynamických i statických jazyků. Nevidím důvod pro přilepování názvu typu do názvu metody.

Předělávání rozhraní je zlo. Obvykle se připouští pouze jeho rozšiřování.
To je pravda, ale ve statickém jazyku se na to musí myslet předem, což bývá kámen úrazu, když ta potřeba vznikne časem.

Nemusí. Prostě do rozhraní přidám další metodu s novými typy parametrů. Tím se rozbijí vazby v závislých modulech, které ji dosud neimplementují. Dopíše se do nich implementace, otestuje a je to. Stejně to dělám i při dynamickém typování.

Zásadou však je neměnit metody, které již v rozhraní jsou a je na nich závislá práce dalších vývojářů. OCP.

Řeč byla o tom, že ani ve statickém jazyku není nutné přidávat novou metodu, kvůli novému datovému typu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 15. 12. 2017, 23:54:19
Řeč byla o tom, že ani ve statickém jazyku není nutné přidávat novou metodu, kvůli novému datovému typu.

Ve statickém jazyku jsou dvě cesty: Můžeš použít společný typ, ze kterého všechny třídy dědí (např. Object) a máš stále jen jednu metodu, která se může uvnitř stát špagetou. To je ta horší cesta, která odpovídá na tvou otázku. Teď ta čistější: Prostě ty stávající metody přetížíš. Nemá smysl jim dávat různé názvy jen kvůli různým typům. Máš snad při dynamickém typování jiné možnosti?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 16. 12. 2017, 00:10:49
Jen se směju té představě, že si u velkého projektu pár programátorů něco řekne, udělaji za deset sekund změnu v tisíci souborech a tím je hotovo. Kdo tohle tvrdí, ten na reálném velkém projektu, který už z podstaty velikosti musí být řízen formálně, nikdy nic nedělal a vůbec netuší, co to obnáší.

:-) Obávám se, že jsi to ty, kdo takový projekt nikdy nespravoval. V javě to není až takový problém, je nás na to jen pár. A změny si ve své vlastní firmě opravdu  nemusím nikým nechat schvalovat.

Přejmenování třídy rozumným IDE je v javě triviální a zcela bezpečná operace, nic navíc pak testovat nemusíš, projekt je vždy poté kompilovatelný. V projektu, který negeneruje knihovny pro externí projekty mimo náš dosah, se nic rozsypat nemůže a nerozsype. Samozřejmě to předpokládá nikde v kódu nepoužívat názvy tříd v textové formě - musel bych být blázen, abych takové zvěrstvo dopustil. Pak je úplně jedno, zda se změna týká jednoho nebo tisíce souborů, vyleze z toho pořád jeden commit. Překvapuje mě, že takovou základní věc neznáš. Jenže to bude tím, že javu vůbec nepoužíváš.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 16. 12. 2017, 01:00:28
Já zastávám minimalistickou pozici. I kdybych vyvíjel něco v Javě, používal bych na to rád editor Vim. Otázka zní, šlo by to vůbec? Nebo je to tak špatný jazyk, že ho prakticky nelze používat bez nenažraného neefektivního bloatware, jakým bývají 'kvalitní ide', které programátory vychovávají k tomu, že potřebují pořát dokola přepracovávat kód v tisících souborech?
+1
Pravda je, ze na Python, Perl, ... C, COBOL,... staci editor. Na kompilovane jazyky je dobre este k tomu aj debugger. Len Java nevystaci s editorom. Treba k tomu tlste IDE, lebo s tak rozvlacnym a ukecanym jazykom sa neda inac pracovat. Kym som nemusel pracovat v Jave refactoring som nerobil. Nieco zmenit/premenovat v par zdrojakoch to ano, ale nikdy sa to nenazyvalo honosne "refactoring".
Dobry navrh nepotrebuje kazdu chvilu refaktorovat. Myslim si, ze tato cinnost prisla s nesvarom zvanym agile a robi sa to zamerne. Kod sa navrhne rychlo, bez rozmyslania - samozrejme nahovno a potom to stale refaktoruju a maju stale dost co robit a vykazovat. Dokola refaktorovat a tahat prachy zo zakaznika - to je dnesna strategia dodavatelskych firiem. Zabavne je ze kazdy majster sveta sa tu nafukuje ako refaktoruje tisice suborov. Tisice suborov som nikdy nemusel menit. To pracujete na nejakom softwari na riadenie galaxie, alebo preco mate tisice suborov - pre kazdy bobok hovna vyrobite class ?

Nechapem preco Javisti, ktori nevedia programovat v Pythone stale nan nadavaju.
Pred Javou som pouzival Python a ked som prechadzal na Javu bol to dost bolestivy prechod z vyssieho jazyka na ovela primitivnejsi jazyk. Vtedy bola v Jave novinka napr. foreach cyklus, ktory bol v Pythone a v Perle odjakziva.
Python je vhodny na rychle prototypovanie. Oproti Jave je ovela stucnejsi, takze napisat v nom nieco stoji zlomok usilia toho co v Jave. Preto ak ma niekto problemy, ze casto musi svoj kod refaktorovat moze zacat svoje navrhy najprv nahrubo prototypovat v Pythone a zamysliet sa nad nimi, kym ich nakodi v Jave.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: mikrom 16. 12. 2017, 01:14:43
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).
+1
Poznam ten styl prace. Refactoring bez analyzy, rozmyslania - metoda pokus-omyl. Ak IDE po refactoringu nevyhodi cervene vykricniky a ak to pojde zbuildovat - uspech a odovzda to zakaznikovi ako improvment. A ked zakaznik pride s tym ze to jneni dobre - tak sa ide refaktorovat znovu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: svícen 16. 12. 2017, 01:19:34
V pátek už máš asi upito, co? Už ten Python umí rozhraní a nebo to ještě nedorazilo do dětských jazyků? A co modifikátory přístupu? Takový základy to určitě má, ne? Nebo? A věci jako BOM asi také nepotřebujete, protože jste ještě někde v roce 1991, kdy nic nebylo a dělalo se v textových editorech.

Na rychlé prototypování je právě Java a na Python se můžeš úplně vykašlat. Škoda, že o Javě píšou amatéři, kteří ani nechápou, k čemu se používá rozhraní, protože o něm nikdy nešlyšeli.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 05:06:37
Ten automatický refaktoring, který ide dělá za programátora, to je podobná záležitost jako jsem uvedl výše. Čím je to levnější, tím méně člověk nad návrhem kódu přemýšlí, tím méně to umí a tím víc pak musí refaktorovat. Tak moc, že si už ani nedokáže představit, že by bylo možno vůbec programovat bez něj. Ve výsledku má špatný kód, potřebu neustále přepisovat kód a hlavně, je tím vychován programátor, který neumí dobře navrhnout kód. A s tím dobrým návrhem mu zatím žádné ide nepomůže. Ale blíží se doba AI v programování, tak to třeba nevadí. Takže fajn, taky styl práce, akorát je zajímavé, že lidé s tímto zvláštním stylem práce, protože něco neumí, si myslí, že jsou něco víc a ostatní nazývají amatéry :-).
+1
Poznam ten styl prace. Refactoring bez analyzy, rozmyslania - metoda pokus-omyl. Ak IDE po refactoringu nevyhodi cervene vykricniky a ak to pojde zbuildovat - uspech a odovzda to zakaznikovi ako improvment. A ked zakaznik pride s tym ze to jneni dobre - tak sa ide refaktorovat znovu.

Tady si pod pojmem refactoring v IDE podle popisu zřejmě představují spíš přejmenování tříd a metod. Proč to dělají? Asi proto, že je to jednoduché. Ovšem transfer funkcionality mezi třídami, náhrada pole objektem, konsolidace podmínek, zavádění null objektů, likvidace příznakových proměnných, odstraňování setterů, ... - to už je trochu jinší kafe, které se moc často nevidí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 06:22:16
Upratovanie v projekte je normalna zalezitost. Ak sa projekt neupratuje, casom zvykne degradovat. Povodna architektura uz nemusi vyhovovat aktualnym potrebam a robi kazdu zmenu funkcionality bolestivou. Ci sa nieco rozbilo, sa da zistit automatickymi testami a na predprodukcnom prostredi. Ak je v projekte nejaky kod, ktory nevies, co robi, preco to robi tak by si to mal zistit. Pristup "nechytat sa, ked to funguje" je nespravny, lebo potom clovek nieco robi a ani nevie co, no skratka lopatactvo deluxe. Tak ani nevies vylepsit vlastnosti, zefektivnit, dat pracu druhym koderom, skratka bieda...

Ak niekto nema na to nastroje a patle vo vim, potom je to problem ...
Škoda, že se nedovedeš zdržet urážek. Také bych tu mohl vykřikovat něco o lopatách, které bez ide, jenž programuje za ně, nedají ani ránu. Násťrojů jsem vyskoušel řadu a vždy se vrátil k vimu, když to bylo možné, dělá se mi s ním nejlíp. Jinak souhlasím, čistit a udržovat kód je nutné, má to přínos. Jen se směju té představě, že si u velkého projektu pár programátorů něco řekne, udělaji za deset sekund změnu v tisíci souborech a tím je hotovo. Kdo tohle tvrdí, ten na reálném velkém projektu, který už z podstaty velikosti musí být řízen formálně, nikdy nic nedělal a vůbec netuší, co to obnáší.

Jop, len robit upravy vo vim, nech si ho barz clovek vytuni podla tisnikovej knizky,  byva bolestive. Uz len to, ze mi IDE nadrbe tie cervene vykricniky, ako si tu niekto robil srandu, je dost pomoc.  Aspon si viem povedat "UPS", toto som nemal robit, alebo skontrolovat miesta vyskytu vykricnikov a zistit, ci ide o lahko fixnutelnu blbost, alebo sa na zmenu radsej vyserem, je napomocne. Prechadzat miesta, kde mi kompilator zarve chybu vo vim, to si radsej ukusnem ruku a zbabelo s placom a pokakany uteciem do lesov, aby som olizoval koru zo stromov. Alebo debugovat vo vim unit test, ktory mi zarve, aaah ....

To, ze IDE ludom pri programovani pomaha, v tom nevidim problem. Pri programovani sa pouzivaju rozne barlicky, IDE, ake je neinvazivne (Tj nenadrbe svoje custom hacky do kodu), tam nevidim problem.

Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 06:43:21
Jop, len robit upravy vo vim, nech si ho barz clovek vytuni podla tisnikovej knizky,  byva bolestive. Uz len to, ze mi IDE nadrbe tie cervene vykricniky, ako si tu niekto robil srandu, je dost pomoc.  Aspon si viem povedat "UPS", toto som nemal robit, alebo skontrolovat miesta vyskytu vykricnikov a zistit, ci ide o lahko fixnutelnu blbost, alebo sa na zmenu radsej vyserem, je napomocne. Prechadzat miesta, kde mi kompilator zarve chybu vo vim, to si radsej ukusnem ruku a zbabelo s placom a pokakany uteciem do lesov, aby som olizoval koru zo stromov. Alebo debugovat vo vim unit test, ktory mi zarve, aaah ....

Vim si v průběhu času vytuní každý podle svých potřeb a konfiguraci si přenese mezi všemi používanými instancemi.

K čemu jsou dobré ty červené vykřičníky v IDE? Vim mi je nedělá a nedělá je ani IDE, které otevře soubor po editaci ve Vimu. Po kompilaci skočí Vim na místo, kde byla hlášena chyba. V čem je problém?

To, ze IDE ludom pri programovani pomaha, v tom nevidim problem. Pri programovani sa pouzivaju rozne barlicky, IDE, ake je neinvazivne (Tj nenadrbe svoje custom hacky do kodu), tam nevidim problem.

Vidím problém v tom že IDE lidem při programování pomáhá vytvářet junkcode, ve kterém nepomůže najít jiné chyby, než syntaktické.

Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.

Měnit názvy veřejných metod, které se už používají, není refaktoring, ale zvrhlost.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 06:54:25
Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.

Měnit názvy veřejných metod, které se už používají, není refaktoring, ale zvrhlost.

Ak sa zle volaju, nevidim v tom problem.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 06:57:13
Jop, len robit upravy vo vim, nech si ho barz clovek vytuni podla tisnikovej knizky,  byva bolestive. Uz len to, ze mi IDE nadrbe tie cervene vykricniky, ako si tu niekto robil srandu, je dost pomoc.  Aspon si viem povedat "UPS", toto som nemal robit, alebo skontrolovat miesta vyskytu vykricnikov a zistit, ci ide o lahko fixnutelnu blbost, alebo sa na zmenu radsej vyserem, je napomocne. Prechadzat miesta, kde mi kompilator zarve chybu vo vim, to si radsej ukusnem ruku a zbabelo s placom a pokakany uteciem do lesov, aby som olizoval koru zo stromov. Alebo debugovat vo vim unit test, ktory mi zarve, aaah ....

Vim si v průběhu času vytuní každý podle svých potřeb a konfiguraci si přenese mezi všemi používanými instancemi.

K čemu jsou dobré ty červené vykřičníky v IDE? Vim mi je nedělá a nedělá je ani IDE, které otevře soubor po editaci ve Vimu. Po kompilaci skočí Vim na místo, kde byla hlášena chyba. V čem je problém?

V tomto, co ste napisali, je to strasne neprakticke.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 07:00:51
To, ze IDE ludom pri programovani pomaha, v tom nevidim problem. Pri programovani sa pouzivaju rozne barlicky, IDE, ake je neinvazivne (Tj nenadrbe svoje custom hacky do kodu), tam nevidim problem.

Vidím problém v tom že IDE lidem při programování pomáhá vytvářet junkcode, ve kterém nepomůže najít jiné chyby, než syntaktické.

Junkcode sa da robit aj vo vim. Staci programovat copypasta stylom, ktory je oblubeny najma v pythone a javascripte, ako ukazali prieskumy na githube.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 07:18:39
Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.

Měnit názvy veřejných metod, které se už používají, není refaktoring, ale zvrhlost.

Ak sa zle volaju, nevidim v tom problem.

Nerozumím tomu "zle volaju". Jak ji mohou špatně volat, když ji volají dle definovaného rozhraní?

Když v IDE změním název veřejné metody v nějaké třídě, v kterých projektech se mi změní i její volání?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 07:20:36
Po kompilaci skočí Vim na místo, kde byla hlášena chyba. V čem je problém?

V tomto, co ste napisali, je to strasne neprakticke.

V čem je to nepraktické? Kam má skočit?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 08:23:06
Po kompilaci skočí Vim na místo, kde byla hlášena chyba. V čem je problém?

V tomto, co ste napisali, je to strasne neprakticke.

V čem je to nepraktické? Kam má skočit?

Tvarite sa, ako by ste nepouzivali nikdy GUI. Skakanie na chyby pri kompilacii, je drevene. Povedzme, ze si chcem pozriet par vyskytov, potom to po castiach pofixovat a pozriet, co mi to urobi v testoch. Zdebugovat testy. Nieco vratit naspat, lebo usudim, ze cast zmeny bola kravina a treba to spravit inak. Co vam poviem, uzasny svet grafickeho pouzivatelskeho rozhrania.  Fixovat vo vim skakanim po suboroch, to by sa radsej na zmenu vysral, len lepil dalsi kod a modlil sa, ze som prilepil spravne. (Robim si zadek, som ateista, nemodlim sa.)
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 08:25:03
Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.

Měnit názvy veřejných metod, které se už používají, není refaktoring, ale zvrhlost.

Ak sa zle volaju, nevidim v tom problem.

Nerozumím tomu "zle volaju". Jak ji mohou špatně volat, když ji volají dle definovaného rozhraní?

Když v IDE změním název veřejné metody v nějaké třídě, v kterých projektech se mi změní i její volání?

Mají špatný název,  pane.  Přomintě, že mi nerozumíte.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 08:40:23
Po kompilaci skočí Vim na místo, kde byla hlášena chyba. V čem je problém?

V tomto, co ste napisali, je to strasne neprakticke.

V čem je to nepraktické? Kam má skočit?

Tvarite sa, ako by ste nepouzivali nikdy GUI. Skakanie na chyby pri kompilacii, je drevene. Povedzme, ze si chcem pozriet par vyskytov, potom to po castiach pofixovat a pozriet, co mi to urobi v testoch. Zdebugovat testy. Nieco vratit naspat, lebo usudim, ze cast zmeny bola kravina a treba to spravit inak. Co vam poviem, uzasny svet grafickeho pouzivatelskeho rozhrania.  Fixovat vo vim skakanim po suboroch, to by sa radsej na zmenu vysral, len lepil dalsi kod a modlil sa, ze som prilepil spravne. (Robim si zadek, som ateista, nemodlim sa.)

Však jsem nepsal o skákání po souborech, ale na řádek v právě editovaném souboru. Jinde chyba být nemůže. Pokud potřebuji současně pracovat s dalším souborem, otevřu si další tab. V IDE se nedělá nic odlišného.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 08:49:38
Chapem, ze "Kolega" dal trosku udrbany priklad s tisickami tried, no jeho pointu viem pochopit.

Měnit názvy veřejných metod, které se už používají, není refaktoring, ale zvrhlost.

Ak sa zle volaju, nevidim v tom problem.

Nerozumím tomu "zle volaju". Jak ji mohou špatně volat, když ji volají dle definovaného rozhraní?

Když v IDE změním název veřejné metody v nějaké třídě, v kterých projektech se mi změní i její volání?

Mají špatný název,  pane.  Přomintě, že mi nerozumíte.

Do kterých projektů se pak tato změna propaguje? Do všech?

Pokud mají veřejné metody špatný název, tak to někdo zvoral při návrhu. Prostě se ta metoda označí @deprecated, aby ji už nikdo nepoužíval a napíše se nová. Jinak skutečně nevidím důvod, proč měnit názvy metod.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: senior 16. 12. 2017, 09:27:30
Kite, nediv se, že si všichni myslí, že programuješ jen doma a vlastně to ani neumíš. Používáš VIM jak amatér, kolegy nemáš, protože by ti nerozuměli a i s vývojem to bude slabší. Odkdy se nepřejmenovává veřejná rozhraní? Závislé projekty se musí přizpůsobit. Je to úplně běžná věc a ničemu to nevadí. Chudák ten tvůj novej zaměstnavatel, jestli mu tam také vyprávíš takové bejkárny :D Takže bacha na zkušebku!

Jinak doufám, že lidi, kteří tu většinou píšou, nikdy nepotkám při vývoji, protože by rychle zmizeli, ale za špatného bych byl určitě já ;D
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 09:32:33
Mají špatný název,  pane.  Přomintě, že mi nerozumíte.

Do kterých projektů se pak tato změna propaguje? Do všech?

Pokud mají veřejné metody špatný název, tak to někdo zvoral při návrhu. Prostě se ta metoda označí @deprecated, aby ji už nikdo nepoužíval a napíše se nová. Jinak skutečně nevidím důvod, proč měnit názvy metod.

Aby sa tie metódy volali (překlad: jmenovali) správne, to je ten dovod?  Keď je api hlúpo spravené, treba ho nechať hlúpym, aby nevznikli problémy v iných projektoch?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 09:52:49
Do kterých projektů se pak tato změna propaguje? Do všech?

Pokud mají veřejné metody špatný název, tak to někdo zvoral při návrhu. Prostě se ta metoda označí @deprecated, aby ji už nikdo nepoužíval a napíše se nová. Jinak skutečně nevidím důvod, proč měnit názvy metod.

Aby sa tie metódy volali (překlad: jmenovali) správne, to je ten dovod?  Keď je api hlúpo spravené, treba ho nechať hlúpym, aby nevznikli problémy v iných projektoch?

Však proto je označím @deprecated, aby ostatní ten warning viděli a opravili si API. Nemohu přece měnit zdrojáky, na kterých pracuje někdo jiný. Jinak vznikají zbytečné konflikty.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 10:28:18
Do kterých projektů se pak tato změna propaguje? Do všech?

Pokud mají veřejné metody špatný název, tak to někdo zvoral při návrhu. Prostě se ta metoda označí @deprecated, aby ji už nikdo nepoužíval a napíše se nová. Jinak skutečně nevidím důvod, proč měnit názvy metod.

Aby sa tie metódy volali (překlad: jmenovali) správne, to je ten dovod?  Keď je api hlúpo spravené, treba ho nechať hlúpym, aby nevznikli problémy v iných projektoch?

Však proto je označím @deprecated, aby ostatní ten warning viděli a opravili si API. Nemohu přece měnit zdrojáky, na kterých pracuje někdo jiný. Jinak vznikají zbytečné konflikty.

Od toho je IDE, aby sa konflikty jednoduchsie riesili. Vo vim riesit konflikt musi byt utrpenie.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 16. 12. 2017, 10:45:16
Už ten Python umí rozhraní a nebo to ještě nedorazilo do dětských jazyků? A co modifikátory přístupu? Takový základy to určitě má, ne? Nebo? A věci jako BOM asi také nepotřebujete, protože jste ještě někde v roce 1991, kdy nic nebylo a dělalo se v textových editorech.

Zastaralý koncept jsou naopak rozhraní. Moderní jazyky mají protokoly.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ivan Nový 16. 12. 2017, 10:45:35
Do kterých projektů se pak tato změna propaguje? Do všech?

Pokud mají veřejné metody špatný název, tak to někdo zvoral při návrhu. Prostě se ta metoda označí @deprecated, aby ji už nikdo nepoužíval a napíše se nová. Jinak skutečně nevidím důvod, proč měnit názvy metod.

Aby sa tie metódy volali (překlad: jmenovali) správne, to je ten dovod?  Keď je api hlúpo spravené, treba ho nechať hlúpym, aby nevznikli problémy v iných projektoch?

Však proto je označím @deprecated, aby ostatní ten warning viděli a opravili si API. Nemohu přece měnit zdrojáky, na kterých pracuje někdo jiný. Jinak vznikají zbytečné konflikty.

Od toho je IDE, aby sa konflikty jednoduchsie riesili. Vo vim riesit konflikt musi byt utrpenie.

Refaktoring je jistě potřebný, ale nezapomínejme na to, že je vždy výsledkem chyby návrhu, zaviněné, či ne. A tady jsme se už posunuli od stavu - nebojte se refaktorovat, chyby v návrhu vždy budou, do stavu - kdo nerefaktoruje není, naplácejte to nějak, ono se to už časem urefaktoruje.

A v tomto stavu, de facto změněném paradigmatu, vyvstává otázka, zda jazyk umožňující bezbřehou refakturaci není vlastně na závadu. Podobný neblahý stav, ale jakoby z opačné strany, vedl k zavádění statických jazyků. Dnes menší míra možnosti refaktorovat vede na nutnost myslet více na kvalitu návrhu už při psaní kódu. Což paradoxně byla hlavní motivace při zavádění statických jazyků do vývoje.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 10:49:17
Od toho je IDE, aby sa konflikty jednoduchsie riesili. Vo vim riesit konflikt musi byt utrpenie.

Divil by ses, ale není. Jednak Vim tolik konfliktů negeneruje, druhak jejich řešení je pohodička.

Přejmenování používaných metod nedělám zas moc často. Naposledy to bylo výměna insert() za add(), aby to vypadalo lépe. Ovšem i kdybych to neudělal, tak by se houby stalo a je třeba zvážit, zda ti to stojí za ten dlouhatánský commit.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: gll 16. 12. 2017, 10:59:35
Od toho je IDE, aby sa konflikty jednoduchsie riesili.

S konflikty názvů to v Pythonu není tak jednoduché. Často jde o záměrné předefinování něčeho.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: balki 16. 12. 2017, 11:27:24
Od toho je IDE, aby sa konflikty jednoduchsie riesili. Vo vim riesit konflikt musi byt utrpenie.

Divil by ses, ale není. Jednak Vim tolik konfliktů negeneruje, druhak jejich řešení je pohodička.

Přejmenování používaných metod nedělám zas moc často. Naposledy to bylo výměna insert() za add(), aby to vypadalo lépe. Ovšem i kdybych to neudělal, tak by se houby stalo a je třeba zvážit, zda ti to stojí za ten dlouhatánský commit.


Konflikty robia programatori, nie IDE. IDE ich pomaha riesit.
No neviem, uz radsej nic. Pekny vikend zelam.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 16. 12. 2017, 13:23:25
Kite, nediv se, že si všichni myslí, že programuješ jen doma a vlastně to ani neumíš. Používáš VIM jak amatér, kolegy nemáš, protože by ti nerozuměli a i s vývojem to bude slabší. Odkdy se nepřejmenovává veřejná rozhraní? Závislé projekty se musí přizpůsobit. Je to úplně běžná věc a ničemu to nevadí. Chudák ten tvůj novej zaměstnavatel, jestli mu tam také vyprávíš takové bejkárny :D Takže bacha na zkušebku!

Jinak doufám, že lidi, kteří tu většinou píšou, nikdy nepotkám při vývoji, protože by rychle zmizeli, ale za špatného bych byl určitě já ;D

Teda musim se Kita zastat jako castecny Javista. Vite kolikrat se prejmenovala metoda v std. library za tech 22 let? Kolikrat se rozsirilo rozhrani? Prejmenovani metody asi 3x (vic jich bylo deprekovanych), rozsireni rozhrani okolo 20, z toho se to dotklo koncaku jen v pripade JDBC. A to se bavime o 6000 tridach (Java 8) a skoro ctvrtstoleti existence! Takze zmena externe viditelneho rozhrani samozrejme je mozna, ale zrovna v enterprise je dost napreshubu
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 16. 12. 2017, 13:26:41
A to se bavime o 6000 tridach (Java 8) a skoro ctvrtstoleti existence!

Ten ksichtik tam je namisto "Java 8". Sorry jako, upravit to tady nemuzu :/
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 16. 12. 2017, 16:52:11
A to se bavime o 6000 tridach (Java 8) a skoro ctvrtstoleti existence! Takze zmena externe viditelneho rozhrani samozrejme je mozna, ale zrovna v enterprise je dost napreshubu

Jenže srovnáváš API knihoven programovacího jazyka s třídami interního informačního systému, na kterém nezávisí žádné externí projekty a je celý v jednom repozitáři i IDE projektu, tedy jej má IDE úplně celý naindexovaný, nejsou žádné další závislosti mimo (protože to je to, co tu celou dobu říkám). Jediná závislost je, že na tom dělá pár lidí, kteří na sebe vidí mezi kancelářemi. Všichni z nich mají celý projekt u sebe, naindexovaný ve svém IDE. Změna -> push -> pull a hotovo. Má-li někdo hodně rozděláno, se změnou se počká. Má-li někdo málo a zrovna se náhodou změna názvu trefí do jeho aktuálních změn (konflikt), třícestný merge v IDE vyřeší během chviličky, obvykle je to drobnost. Žádné kecy kolem, co tu někteří předvádějí, úplně běžný postup.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 17:23:57
A to se bavime o 6000 tridach (Java 8) a skoro ctvrtstoleti existence! Takze zmena externe viditelneho rozhrani samozrejme je mozna, ale zrovna v enterprise je dost napreshubu

Jenže srovnáváš API knihoven programovacího jazyka s třídami interního informačního systému, na kterém nezávisí žádné externí projekty a je celý v jednom repozitáři i IDE projektu, tedy jej má IDE úplně celý naindexovaný, nejsou žádné další závislosti mimo (protože to je to, co tu celou dobu říkám). Jediná závislost je, že na tom dělá pár lidí, kteří na sebe vidí mezi kancelářemi. Všichni z nich mají celý projekt u sebe, naindexovaný ve svém IDE. Změna -> push -> pull a hotovo. Má-li někdo hodně rozděláno, se změnou se počká. Má-li někdo málo a zrovna se náhodou změna názvu trefí do jeho aktuálních změn (konflikt), třícestný merge v IDE vyřeší během chviličky, obvykle je to drobnost. Žádné kecy kolem, co tu někteří předvádějí, úplně běžný postup.

Otázkou zůstává: Proč vývojáři přejmenovávají veřejné metody v již hotových třídách, na kterých jsou závislé jiné komponenty jejich aplikace? Nedělají to náhodou jenom proto, že to v IDE jde snadno? K čemu je to dobré a komu to prospěje?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 16. 12. 2017, 18:19:01
Protože ty třídy už dnes hotové nejsou, když se na ně kladou nové požadavky a budou dělat něco mírně jiného, což už je trochu jiný název. Nebo protože je prostě někdo už někdo pojmenoval neoptimálně. Pokud se s tím nesetkáváš, pak nic dlouhodobého a většího neděláš.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: atarist 16. 12. 2017, 18:34:17
A to se bavime o 6000 tridach (Java 8) a skoro ctvrtstoleti existence! Takze zmena externe viditelneho rozhrani samozrejme je mozna, ale zrovna v enterprise je dost napreshubu

Jenže srovnáváš API knihoven programovacího jazyka s třídami interního informačního systému, na kterém nezávisí žádné externí projekty.

V podstate tim ale rikas, ze kdyz je to interni IS, tak nemusi mit kvalitni a stabilni API. Ano, tak to byva, ale neni to spravne a je to jen vase vizitka.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 18:43:34
Protože ty třídy už dnes hotové nejsou, když se na ně kladou nové požadavky a budou dělat něco mírně jiného, což už je trochu jiný název. Nebo protože je prostě někdo už někdo pojmenoval neoptimálně. Pokud se s tím nesetkáváš, pak nic dlouhodobého a většího neděláš.

Na každé třídě dělám tak dlouho, dokud není hotová, abych na ni už nemusel sahat. Pokud jsou nové požadavky, zaslouží si novou třídu s novým názvem.

Pokud někdo pojmenoval třídu neoptimálně, tak se s tím nedá nic dělat. Pokud ji totiž přejmenuješ, musíš přejmenovat i soubor, ve kterém se nachází. Takže vlastně vytvoříš nový soubor a ten původní smažeš. Je vidět, že na větším projektu jsi dosud nedělal.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 16. 12. 2017, 18:48:19
V podstate tim ale rikas, ze kdyz je to interni IS, tak nemusi mit kvalitni a stabilni API. Ano, tak to byva, ale neni to spravne a je to jen vase vizitka.

A ony se v té javě mezi verzemi interní třídy implementující jednotlivé funkcionality neměnily? Ty k nim nějak přistupuješ, pracuješ s nimi, víš, že je nikdo nepřejmenoval? Mluvíš o veřejných API veřejně dostupných knihoven, kdežto diskuse je o normálních třídách projektu, ke kterým zvenku nikdo nepřistupuje. Používají je opět zase jen další interní projektové třídy, stejně jako v té javě. A těch může být hodně. Co je na tom tak složitého k pochopení?
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: dustin 16. 12. 2017, 18:55:27
Pokud někdo pojmenoval třídu neoptimálně, tak se s tím nedá nic dělat. Pokud ji totiž přejmenuješ, musíš přejmenovat i soubor, ve kterém se nachází. Takže vlastně vytvoříš nový soubor a ten původní smažeš. Je vidět, že na větším projektu jsi dosud nedělal.

No a? Je to normální git move, IDE ti to do commitu přejmenuje samo, historie je normálně zachována. Ty jsi vážně úplně mimo, to jsi ještě nikdy v projektu nepřejmenovával javovskou třídu? Proč se vůbec k práci s javou vyjadřuješ, když ji vůbec neznáš?

Končím, na tohle už vážně nemám náladu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 19:00:27
Pokud někdo pojmenoval třídu neoptimálně, tak se s tím nedá nic dělat. Pokud ji totiž přejmenuješ, musíš přejmenovat i soubor, ve kterém se nachází. Takže vlastně vytvoříš nový soubor a ten původní smažeš. Je vidět, že na větším projektu jsi dosud nedělal.

No a? Je to normální git move, IDE ti to do commitu přejmenuje samo, historie je normálně zachována. Ty jsi vážně úplně mimo, to jsi ještě nikdy v projektu nepřejmenovával javovskou třídu? Proč se vůbec k práci s javou vyjadřuješ, když ji vůbec neznáš?

Končím, na tohle už vážně nemám náladu.

Moment, to se týkalo Javy? Myslel jsem si, že Pythonu.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 16. 12. 2017, 19:03:30
V podstate tim ale rikas, ze kdyz je to interni IS, tak nemusi mit kvalitni a stabilni API. Ano, tak to byva, ale neni to spravne a je to jen vase vizitka.

A ony se v té javě mezi verzemi interní třídy implementující jednotlivé funkcionality neměnily? Ty k nim nějak přistupuješ, pracuješ s nimi, víš, že je nikdo nepřejmenoval? Mluvíš o veřejných API veřejně dostupných knihoven, kdežto diskuse je o normálních třídách projektu, ke kterým zvenku nikdo nepřistupuje. Používají je opět zase jen další interní projektové třídy, stejně jako v té javě. A těch může být hodně. Co je na tom tak složitého k pochopení?

Nebudu přece jak blb procházet všechny firemní projekty a opravovat v nich název třídy jenom proto, že ji někdo chtěl přejmenovat.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Ondra Satai Nekola 16. 12. 2017, 19:20:58
V podstate tim ale rikas, ze kdyz je to interni IS, tak nemusi mit kvalitni a stabilni API. Ano, tak to byva, ale neni to spravne a je to jen vase vizitka.

A ony se v té javě mezi verzemi interní třídy implementující jednotlivé funkcionality neměnily? Ty k nim nějak přistupuješ, pracuješ s nimi, víš, že je nikdo nepřejmenoval? Mluvíš o veřejných API veřejně dostupných knihoven, kdežto diskuse je o normálních třídách projektu, ke kterým zvenku nikdo nepřistupuje. Používají je opět zase jen další interní projektové třídy, stejně jako v té javě. A těch může být hodně. Co je na tom tak složitého k pochopení?

Nebudu přece jak blb procházet všechny firemní projekty a opravovat v nich název třídy jenom proto, že ji někdo chtěl přejmenovat.

Kolikrat ti je potreba opakovat, ze zalezi na vlastnictvi kodu?

Pokud jsi (spolu)vlastnik veskereho kodu a pokud je to nove jmeno lepsi... tak te muze zastavit jen lenost nebo neschopnost pouzivat lepsi nastroje.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: nechápe 16. 12. 2017, 20:38:18
Vy ste fakt retardi. Přejmenování veřejného API je normální věc a pro běžné vývojáře se to řídí verzema. Chci udělat megazměnu? Není problém, zvednu major verzi a jsem v pohodě. Všechny ostatní projekty používají jinou verzi a nikdo je nenutí přecházet. Má snad Python 3 zpětnou kompatibilitu? A co Java? Tak tady vidíte, kdo je podle vás lopata a dělá lopatí jazyk.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: FrantaPepa1 17. 12. 2017, 12:37:39
Co si myslíte o výkonu Pythonu? Dřív se chvástal, jak je o mnoho rychlejší než PHP, ale po tom co přišlo PHP 7, je ve srovnání s nim ultrapomalej https://benchmarksgame.alioth.debian.org/u64q/php.html (https://benchmarksgame.alioth.debian.org/u64q/php.html).
Jinak je líp navrženej než PHP, o tom žádná.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: PetrN 17. 12. 2017, 19:24:50
Citace
Co si myslíte o výkonu Pythonu? Dřív se chvástal, jak je o mnoho rychlejší než PHP, ale po tom co přišlo PHP 7, je ve srovnání s nim ultrapomalej https://benchmarksgame.alioth.debian.org/u64q/php.html.
Jinak je líp navrženej než PHP, o tom žádná.

Ať je PHP jakékoliv, vývoj jde správným směrem a na PHP 7.x jednině chvála
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: Kit 17. 12. 2017, 19:40:14
Citace
Co si myslíte o výkonu Pythonu? Dřív se chvástal, jak je o mnoho rychlejší než PHP, ale po tom co přišlo PHP 7, je ve srovnání s nim ultrapomalej https://benchmarksgame.alioth.debian.org/u64q/php.html.
Jinak je líp navrženej než PHP, o tom žádná.

Ať je PHP jakékoliv, vývoj jde správným směrem a na PHP 7.x jednině chvála

PHP není pomalé. To jen lidé, kteří v něm programují, i když to neumí.
Název: Re:Python - zbožňovaný lidmi?
Přispěvatel: FrantaPepa1 17. 12. 2017, 21:19:57
Nikdo netvrdil, že je. Ale zajímá mě, co na to jeho zastánci odsud řeknou.