Python - zbožňovaný lidmi?

ByCzech

  • *****
  • 1 874
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #315 kdy: 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? ;)


Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #316 kdy: 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.

Re:Python - zbožňovaný lidmi?
« Odpověď #317 kdy: 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.

mikrom

Re:Python - zbožňovaný lidmi?
« Odpověď #318 kdy: 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

refactoring

Re:Python - zbožňovaný lidmi?
« Odpověď #319 kdy: 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.


Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #320 kdy: 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.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #321 kdy: 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í.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #322 kdy: 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ě...

harrison314

Re:Python - zbožňovaný lidmi?
« Odpověď #323 kdy: 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.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #324 kdy: 14. 12. 2017, 08:15:09 »
dynamické programování je optimalizační metoda. S pythonem nesouvisí.

https://en.wikipedia.org/wiki/Dynamic_programming

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #325 kdy: 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í.


harrison314

Re:Python - zbožňovaný lidmi?
« Odpověď #326 kdy: 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

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #327 kdy: 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ší...

kdr

Re:Python - zbožňovaný lidmi?
« Odpověď #328 kdy: 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++?

Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #329 kdy: 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í.