Python - dobré rady a praktiky

pyN00b

Python - dobré rady a praktiky
« kdy: 24. 03. 2016, 01:56:57 »
Ahoj,
Zatim jsem v zivote napsal tak 5-10k radku pythoniho kodu, vsechno mensi kusy kodu, ktere neco malo resily. Ceka me spoluprace na vetsim / velkem projektu v pythonu a chtel by si nastudovat nejake doporucene praktiky, jak je co doporucene resit a co je vylozene spatny zpusob.

Mam tedy otazku na zkusenejsi programatory v Pythonu. Mohli by jste mi doporucit knizku nebo internetovy zdroj o dobrych praktikach a pristupech, jak v Pythonu rozume programovat? Tech zdroju na internetu je hrozne moc, a nevim, ktery je kvalitni.

Aktualne procitam http://shop.oreilly.com/product/0636920028963.do. Slibuju si, ze se seznamim, jak efektivne pouzivat datove struktury. Chtel bych neco na tema OOP (spoustu let programuju v Jave, ktera ma OOP pojate docela jinak nez v py) nebo obecne praktiky...

Diky za rady! :)
« Poslední změna: 24. 03. 2016, 07:07:43 od Petr Krčmář »


mlaďas

Re:python - dobre rady & praktiky
« Odpověď #1 kdy: 24. 03. 2016, 02:03:33 »
Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D

Fakt nedoporučuju, ale zjistíš to sám...

pynoob

Re:python - dobre rady & praktiky
« Odpověď #2 kdy: 24. 03. 2016, 02:48:47 »
nastupuju do nove prace, kde je projekt udelany v pythonu. ja s tim nic neudelam. ;-)


Ivan Nový

Re:python - dobre rady & praktiky
« Odpověď #4 kdy: 24. 03. 2016, 07:05:23 »
Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D

Fakt nedoporučuju, ale zjistíš to sám...
Tak OOP je od toho, aby i velký projekt byl malý :-))) Pokud je to jinak, tak je něco špatně s návrhem, nikoliv s jazykem. Když začínala Java, tak otloukánkem místo skriptovacích jazyků, byly jazyky postavené na VM, taky v nich prý nešlo dělat velké projekty.


čumil

Re:Python - dobré rady a praktiky
« Odpověď #5 kdy: 24. 03. 2016, 10:38:16 »
V žádném jazyku nejde dělat větší projekt pokud návrh stojí za hovno. Python je pomalej šmejd, dříve navíc i dost nekonzistentní ale od 3 už snad začali OOP brát trošičku vážněji ... v něm bych rozhodně nic velkýho nedělal. Jako ostatně asi v žádném dynamicky typovaném jazyku, to je ale jen můj názor, třeba mi někdo dokáže že není nic lepšího než dynamickej jazyk.

Viky

Re:python - dobre rady & praktiky
« Odpověď #6 kdy: 24. 03. 2016, 11:00:17 »
Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.
Blbost. Proč by to tak mělo být? Protože to někdo řekl?

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D
OOP v Pythonu je samozřejmě úplně jiné než v Javě. Ne, že by se nedalo používat stejně, ale byla by to škoda, protože Java je takový nedotažený objektový jazyk – sice o třídu lepší než C++, ale pořád o třídu horší než třeba Ruby nebo Objective C. Při OOP v Pythonu doporučuji spíše si osvojit praktiky používané v těch dvou posledně jmenovaných jazycích nežli v Javě.

Fakt nedoporučuju, ale zjistíš to sám...
Když se to dobře navrhne, ušetří se díky Pythonu spousta práce oproti jiným řešením. Záleží samozřejmě na konkrétním případu. Pokud to někdo neumí dobře navrhnout, např. kvůli neznalosti Pythonu nebo kvůli celkové vlastní neschopnosti (což je v současnosti v IT asi nejběžnější případ, od té doby, co se sem cpe každý, kdo má do p… díru), není to chyba Pythonu. Ovšem takový člověk by měl asi popřemýšlet o jiné profesi, třeba nějaké manuální, na niž mentálně stačí.

čumil

Re:python - dobre rady & praktiky
« Odpověď #7 kdy: 24. 03. 2016, 11:35:43 »
Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.
Blbost. Proč by to tak mělo být? Protože to někdo řekl?

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D
OOP v Pythonu je samozřejmě úplně jiné než v Javě. Ne, že by se nedalo používat stejně, ale byla by to škoda, protože Java je takový nedotažený objektový jazyk – sice o třídu lepší než C++, ale pořád o třídu horší než třeba Ruby nebo Objective C. Při OOP v Pythonu doporučuji spíše si osvojit praktiky používané v těch dvou posledně jmenovaných jazycích nežli v Javě.

Fakt nedoporučuju, ale zjistíš to sám...
Když se to dobře navrhne, ušetří se díky Pythonu spousta práce oproti jiným řešením. Záleží samozřejmě na konkrétním případu. Pokud to někdo neumí dobře navrhnout, např. kvůli neznalosti Pythonu nebo kvůli celkové vlastní neschopnosti (což je v současnosti v IT asi nejběžnější případ, od té doby, co se sem cpe každý, kdo má do p… díru), není to chyba Pythonu. Ovšem takový člověk by měl asi popřemýšlet o jiné profesi, třeba nějaké manuální, na niž mentálně stačí.
Všechny OOP jazyky dneška sou nedotažené, i ta tvoje milovaná kobra je nedotažená. A všechny sou nedotažený úplně stejně. Tečka. Smalltalk. Tečka.

TiB

Re:python - dobre rady & praktiky
« Odpověď #8 kdy: 24. 03. 2016, 12:17:37 »
Co je tohle za blbost  ::) Že se v pythonu nedá nic dělat. Ufff.. 

Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D

Fakt nedoporučuju, ale zjistíš to sám...

Viky

Re:python - dobre rady & praktiky
« Odpověď #9 kdy: 24. 03. 2016, 13:44:58 »
Všechny OOP jazyky dneška sou nedotažené, i ta tvoje milovaná kobra je nedotažená. A všechny sou nedotažený úplně stejně. Tečka. Smalltalk. Tečka.
Někomu holt stačí říct málo, aby hned bylo jasné, že o problematice, k níž se vyjadřuje, ví prd. A čím jednoznačnější, sebejistější a více generalizující názory, tím větší prd o tom obvykle ví.

mlaďas

Re:python - dobre rady & praktiky
« Odpověď #10 kdy: 24. 03. 2016, 13:53:16 »
Tak třeba špatná praktika je používat skriptovací jazyk na velké projekty. V Pythonu se rozumě moc dělat nedá, protože je vhodný tak na malé skriptíky.
Blbost. Proč by to tak mělo být? Protože to někdo řekl?

OOP je samozřejmě úplně stejné jako v Javě, jen si tam půlku věcí děláš sám a ještě můžeš řešit metatřídy, což bys vůbec u větších projektů neměl :D
OOP v Pythonu je samozřejmě úplně jiné než v Javě. Ne, že by se nedalo používat stejně, ale byla by to škoda, protože Java je takový nedotažený objektový jazyk – sice o třídu lepší než C++, ale pořád o třídu horší než třeba Ruby nebo Objective C. Při OOP v Pythonu doporučuji spíše si osvojit praktiky používané v těch dvou posledně jmenovaných jazycích nežli v Javě.

Fakt nedoporučuju, ale zjistíš to sám...
Když se to dobře navrhne, ušetří se díky Pythonu spousta práce oproti jiným řešením. Záleží samozřejmě na konkrétním případu. Pokud to někdo neumí dobře navrhnout, např. kvůli neznalosti Pythonu nebo kvůli celkové vlastní neschopnosti (což je v současnosti v IT asi nejběžnější případ, od té doby, co se sem cpe každý, kdo má do p… díru), není to chyba Pythonu. Ovšem takový člověk by měl asi popřemýšlet o jiné profesi, třeba nějaké manuální, na niž mentálně stačí.

To já nevim, proč je Python skriptovací jazyk. To se zeptej tvůrců. Taky nejdeš dělat bankovní middleware v Bashi, že jo...

Takže co tam použiju jinak než v Javě, abych si trochu pomohl a Python stál za to?

Co chceš dobře navrhovat? Všechno je vždycky dobře navržený, akorát jazyky na větší projekty mají prostě lepší podporu. Můžeš mi vysvětlit, jak se dělají úravy u dynamicky typovaných jazyků? Prostě přijde od zákazníka požadavek. Máš třeba milion řádek kódu a chceš rychle udělat nějakou ne úplně triviální změnu. Třeba ten projekt ani moc neznáš, protože prostě je to nějaký starší kousek. Chápu, že ty na to máš určitě postupy, které nikdo ještě nenašel, ale právě proto by mě to zajímalo.

mlaďas

Re:Python - dobré rady a praktiky
« Odpověď #11 kdy: 24. 03. 2016, 13:54:30 »
v něm bych rozhodně nic velkýho nedělal. Jako ostatně asi v žádném dynamicky typovaném jazyku, to je ale jen můj názor, třeba mi někdo dokáže že není nic lepšího než dynamickej jazyk.

Tak nějak, ale určitě nám to nějaký odborník vysvětlí. Třeba že je vlastně lepší najít chyby až v produci.

Viky

Re:python - dobre rady & praktiky
« Odpověď #12 kdy: 24. 03. 2016, 14:55:49 »
To já nevim, proč je Python skriptovací jazyk. To se zeptej tvůrců. Taky nejdeš dělat bankovní middleware v Bashi, že jo...
A co z toho jako plyne? Logicky mi to zdůvodni.

Takže co tam použiju jinak než v Javě, abych si trochu pomohl a Python stál za to?
Je to dost odlišný přístup, hlavně z toho důvodu, že je to dynamicky typovaný jazyk. Pokud budeš postupovat stejně jako u Javy, tak částečně chápu to rozčarování nad výsledkem. Ale to není chyba jazyka, a už vůbec ne dynamického typování. To je nekompetentnost vývojáře, který ten rozdíl nemá zažitý a neví, že hřebíky se zatloukají kladivem, zatímco šrouby se šroubují šroubovákem – ačkoli obojí slouží ke spojování dílů a vypadá to docela podobně – kovová tyčinka s hlavičkou. Proto když se někdo vyjádří, že mezi javským a pythoním přístupem k OOP není rozdíl, tak je to asi obdobně, jako by se řemeslník vyjádřil, že mezi šroubem a hřebíkem není vlastně vůbec žádný principiální rozdíl, akorát šrouby jsou na nic, protože se oproti hřebíkům fakt strašně špatně zatloukají. Takový člověk je zkrátka úplně mimo.
Rozdílnost přístupu je vidět třeba při srovnání javské knihovny vs. COCOA. Prostě využívají se spíše např. proxy objekty, kompozice, swizzling a jiné „volnější” techniky na úkor dědění a jiných „rigidnějších” přístupů (nemyšleno peiorativně, prostě je to odlišný přístup).

Co chceš dobře navrhovat? Všechno je vždycky dobře navržený, akorát jazyky na větší projekty mají prostě lepší podporu.
Co je to jazyk pro větší projekt? Jak je definován? Jak se liší od jazyka pro menší projekt? Podporu v čem/čeho přesně?

Můžeš mi vysvětlit, jak se dělají úravy u dynamicky typovaných jazyků?
No jo, tak už jsme doma. Stačilo jen napsat nechápu/nesedla mi filosofie dynamicky typovaných jazyků a její odlišnost od přístupu, na nějž jsem zvyklý.

čumil

Re:python - dobre rady & praktiky
« Odpověď #13 kdy: 24. 03. 2016, 15:00:31 »
Všechny OOP jazyky dneška sou nedotažené, i ta tvoje milovaná kobra je nedotažená. A všechny sou nedotažený úplně stejně. Tečka. Smalltalk. Tečka.
Někomu holt stačí říct málo, aby hned bylo jasné, že o problematice, k níž se vyjadřuje, ví prd. A čím jednoznačnější, sebejistější a více generalizující názory, tím větší prd o tom obvykle ví.
Ámen, je úžasný jak některý tvrzení udělá backfire. Skutečně o OOP nic nevíš vzhledem k předchozím tvrzením.

JSH

Re:python - dobre rady & praktiky
« Odpověď #14 kdy: 24. 03. 2016, 15:18:24 »
Můžeš mi vysvětlit, jak se dělají úravy u dynamicky typovaných jazyků?
No jo, tak už jsme doma. Stačilo jen napsat nechápu/nesedla mi filosofie dynamicky typovaných jazyků a její odlišnost od přístupu, na nějž jsem zvyklý.
Jsem taky jeden z těch, co tu filosofii dynamicky typovaných jazyků moc nechápou. Jakým způsobem se dá fungovat s tím, že vlastně nevím vůbec nic o tom, co mi volající předá. Mám pocit, že bych měl psát unit testy i na to, jestli se moje funkce rozumně popasují s tím že místo intu dostanu string.
Jak se v Pythonu řeší, když vím že potřebuju nějaký int a nic jiného na daném místě nechci?