Python - dobré rady a praktiky

Ivan Nový

Re:Python - dobré rady a praktiky
« Odpověď #105 kdy: 28. 03. 2016, 13:41:40 »
jaký typ máfunkce json.load? Má typ struktury nejčastěji načítaných dat. Tady můžete specifikovat pravidla, které to nějakým způsobem redukují. Takže rozpoznáte, zda jde o nehomogenní data, o kterých je dáno, že mají povahu nějakého slovníku, nebo jde o konkrétní strukturu, která se stále opakuje. data získáte během ladění a provádění jednotkových testů a zaznamená je a zpracuje IDE, následně pak použije k nápovědě.
Proč zase mateš pojmy?! Prostě json.load žádný typ NEMÁ. Struktura dat, které vrací, je NEZNÁMÁ a NIJAK se nekontroluje, protože se ji NEPŘEDÁVÁ žádné schema.

Hele, já mám Python rád, je to jazyk, který používám jako druhý nejčastější, a myslím, že na některé věci (výuka, jednodušší aplikace) je naprosto skvělý a jsem rád, že se tak rozšířil, ale tyhle lži mu dělají fakt medvědí službu.

Monitorovat riziko chyby je nesmysl,  lépe je připravit systém na to, že chyba nastane, tedy definovat co nesmí nastat a připravit se na to, když to nastane.
Ano, to je filosofie Erlangu. Python pro to ale narozdíl od něj nemá prostředky. Nemá (jednoduše použitelné) procesy, supervisory, monitorování a provázání procesů, neumí restartovat část aplikace po selhání. Čili tohle by šlo, ale NEDĚJE se to. Existují snahy jako např Pykka, ale oproti Akka jí chybí některé zásadní věci, takže je to stejně nepoužitelné.
V realitě json.load datový typ výsledku má, jaký se dá zjistit dynamicky v programu, a tato zjištění statisticky zpracovvávat, může to dělat IDE během ladění a na základě toho poskytovat nápovědu.


Ivan Nový

Re:Python - dobré rady a praktiky
« Odpověď #106 kdy: 28. 03. 2016, 13:44:07 »
Jo proto ho používá Dropbox, Google, Reddit, Bitbucket, Pinterest a mohl bych pokračovat... Určitě ho maj jen na výuku a jednodušší aplikace :-)
Pokud má někdo k dispozici stejné prostředky jako Dropbox nebo Google, tak určitě může Python zvažovat :)

Tenhle argument fakt nesnáším. Že je velká firma schopná něco uchodit neznamená, že to samé zvládne nějaká malá česká firma stejně dobře a že je to pro ni stejně dobrá volba.
Google s Pythonem začínal v garáži. Dnes by možná začínal s něčím jiným.

Radek Miček

Re:Python - dobré rady a praktiky
« Odpověď #107 kdy: 28. 03. 2016, 14:05:08 »
Zkus si přečíst sekci Hnutí za dobrý kód z http://www.abclinuxu.cz/blog/bystroushaak/2014/7/python-poznamky

Jinak osobně jsem v pythonu dělal na projektu, který měl přes 40k řádek podle CLOC (tzn bez prázdných řádků, komentářů, docstringů a tak). Nebyl s tím vůbec žádný problém, dělali jsme to ve dvou a šlo to v pohodě. Možná za to mohla microservices architektura, ale prostě žádné hroucení na hlavu se nekonalo. Ani co se týče kódu, ani co se týče výkonu, naopak se to krásně škáluje. Umím si představit, že by to stejným způsobem šlo klidně o řád dál bez nějakého stresu.

IDE nebo jiné nástroje pro Python vám při refaktoringu typicky pomohou mnohem méně než kompilátory moderních staticky typovaných jazyků (a nezmění to ani pokročilejší IDE jako PyCharm). IMO udržovat kód v Pythonu je tedy o dost náročnější (na druhé straně to zřejmě kompenzuje dostatek programátorů).

IDE jako PyCharm obsahuje gramatiku jazyka a ve spojení například s debuggerem má všechny předpoklady k tomu, aby si typy zjistilo samo a uložilo například do slovníku, nebo formou anotací do zdrojového textu. Není proto těžké udělat plugin, který by to obstaral včetně vazby na refaktoring.

Udělat takový plugin je prakticky nemožné, neboť typová rekonstrukce i pro jednoduché typové systémy (jako je například System F) je nerozhodnutelná. A pro (rozumné) otypování netriviálních programů v Pythonu potřebujete mnohem složitější typový systém (hádám minimálně na úrovni DOT).
Z teoretického hlediska to možné není, z praktického ano. Stačí zaznamenat jaké typy proměnné nabývají během běhu programu, a to lze.

To sice jde, ale má to několik problémů:

1) Typ jedné proměnné (nebo obocněji výrazu) může záviset na typu nebo hodnotách dalších proměnných (výrazů). Takto zjištěné informace tedy budou mít například tvar: proměnná a mívá typ int, poud b obsahuje hodnotu 3, c obsahuje řetězec "ahoj", d obsahuje hodnotu None atd. Bohužel tato informace o proměnné a nic neříká, když b obsahuje hodnotu 0. Tedy takto získaná informace má velmi malé užití.

2) Může se stát, že tímto způsobem pro některé výrazy odvodíte miliony nebo miliardy možných typů (záleží, co přesně budou typy) - což pro uživatele už příliš užitečné nebude a navíc to bude IDE zpomalovat.

3) Žádné typy nemáte, dokud program nespustíte. Tj. při refaktoringu vám IDE příliš nepomůže, pokud program nejde zrovna spustit.

čumil

Re:Python - dobré rady a praktiky
« Odpověď #108 kdy: 28. 03. 2016, 14:13:09 »
Hele, já mám Python rád, je to jazyk, který používám jako druhý nejčastější, a myslím, že na některé věci (výuka, jednodušší aplikace) je naprosto skvělý a jsem rád, že se tak rozšířil, ale tyhle lži mu dělají fakt medvědí službu.
Jo proto ho používá Dropbox, Google, Reddit, Bitbucket, Pinterest a mohl bych pokračovat... Určitě ho maj jen na výuku a jednodušší aplikace :-)
Jo super, takže když začne FB používat BRAINFUCK pro backend, bude to známka že BRAINFUCK je super pro backend? Nebo maj jen v týmu tobě podobného evangelíka kterej je hotovej z BRAINFUCKu ... ?

Ondrej

Re:Python - dobré rady a praktiky
« Odpověď #109 kdy: 28. 03. 2016, 14:21:03 »
Jo proto ho používá Dropbox, Google, Reddit, Bitbucket, Pinterest a mohl bych pokračovat... Určitě ho maj jen na výuku a jednodušší aplikace :-)
Pokud má někdo k dispozici stejné prostředky jako Dropbox nebo Google, tak určitě může Python zvažovat :)

Tenhle argument fakt nesnáším. Že je velká firma schopná něco uchodit neznamená, že to samé zvládne nějaká malá česká firma stejně dobře a že je to pro ni stejně dobrá volba.
Budeš se divit, ale i v ČR se python používá. Z těch asi nejznámějších namátkou Seznam, Skypicker, CZ.NIC, Twisto, Websupport...
Jedinej problém je nedostatek kvalitních vývojářů, ale to je problém u jakékoliv profese/jazyka.

Nejsem zaslepenej pythonista, dost věcí mě štve, ale rozhodně je blbost tvrdit že python se hodí tak maximálně na malé/výukové programy a že nic jiného v něm nemá smysl programovat.
Hele, já mám Python rád, je to jazyk, který používám jako druhý nejčastější, a myslím, že na některé věci (výuka, jednodušší aplikace) je naprosto skvělý a jsem rád, že se tak rozšířil, ale tyhle lži mu dělají fakt medvědí službu.
Jo proto ho používá Dropbox, Google, Reddit, Bitbucket, Pinterest a mohl bych pokračovat... Určitě ho maj jen na výuku a jednodušší aplikace :-)
Jo super, takže když začne FB používat BRAINFUCK pro backend, bude to známka že BRAINFUCK je super pro backend? Nebo maj jen v týmu tobě podobného evangelíka kterej je hotovej z BRAINFUCKu ... ?
Jasný nikde netvrdím že je to nejlepší volba, jen píšu že je nesmysl tvrdit že python se hodí maximálně na malé projekty...


norm

Re:Python - dobré rady a praktiky
« Odpověď #110 kdy: 28. 03. 2016, 14:29:28 »
Jo proto ho používá Dropbox, Google, Reddit, Bitbucket, Pinterest a mohl bych pokračovat... Určitě ho maj jen na výuku a jednodušší aplikace :-)
Pokud má někdo k dispozici stejné prostředky jako Dropbox nebo Google, tak určitě může Python zvažovat :)

Tenhle argument fakt nesnáším. Že je velká firma schopná něco uchodit neznamená, že to samé zvládne nějaká malá česká firma stejně dobře a že je to pro ni stejně dobrá volba.
Budeš se divit, ale i v ČR se python používá. Z těch asi nejznámějších namátkou Seznam, Skypicker, CZ.NIC, Twisto, Websupport...
Jedinej problém je nedostatek kvalitních vývojářů, ale to je problém u jakékoliv profese/jazyka.

Nejsem zaslepenej pythonista, dost věcí mě štve, ale rozhodně je blbost tvrdit že python se hodí tak maximálně na malé/výukové programy a že nic jiného v něm nemá smysl programovat.

Nedostatek není problém. Zkus jako kvalitní vývojář přijít do malé Python firmy a říct si 150 tisíc na HPP. Uvidíš, co ti řeknou. Proto kvalitní vývojáři nebudou ztrácet čas s nějaký jazykem na hraní za 60 tisíc. Proč by to kvalitní vývojář dělal? On je rozdíl udělat si webík s malým backendem a mít obrovskou infrastrukturu. Co třeba architektura? Nemá cenu tu řešit "velké" projekty o pár desítkách tisíc řádků, když nikdo neřekne architekturu.

Re:Python - dobré rady a praktiky
« Odpověď #111 kdy: 28. 03. 2016, 14:35:49 »
Skypicker nedávno spamoval s

Citace
Hello Lishaak,

I am a software engineer and part of the Developer Relations team with source{d}, based in Madrid. We are a rapidly growing startup working on improving developer recruitment. We have analyzed your open source contributions on Github and we think that your experience could be a good fit for the position of Python Backend Engineer with Skypicker.

...

With that in mind, Skypicker is looking for a Python enthusiast willing to join their team in Brno, Czech Republic. You will have a track record with the language ideally with a wide general knowledge on web technologies and a background in data structures, algorithms and software design. Any knowledge of the Bottle framework or experience working with uWSGI, Redshift or real-time systems and ElasticSearch is, of course, a bonus.

Your salary would be between 42.000€ and 80.000€, depending on your experience and skills.

Re:Python - dobré rady a praktiky
« Odpověď #112 kdy: 28. 03. 2016, 14:49:42 »
Budeš se divit, ale i v ČR se python používá. Z těch asi nejznámějších namátkou Seznam, Skypicker, CZ.NIC, Twisto, Websupport...
Nebudu se divit, protože pro jednu z takových firem dělám. Jak jsem byl řekl: desetitisíce řádků.

Jasný nikde netvrdím že je to nejlepší volba, jen píšu že je nesmysl tvrdit že python se hodí maximálně na malé projekty...
Ale to nikdo neřekl. Na malé projekty se hodí perfektně. Na velké projekty je to diskutabilní - je potřeba pečlivě zvážit, jestli to ta konkrétní firma je schopná ustát (kvalita analytiků, programátorů, štábní kultura, kvalita vedení atd.)

Ivan Nový

Re:Python - dobré rady a praktiky
« Odpověď #113 kdy: 28. 03. 2016, 15:35:26 »
Budeš se divit, ale i v ČR se python používá. Z těch asi nejznámějších namátkou Seznam, Skypicker, CZ.NIC, Twisto, Websupport...
Nebudu se divit, protože pro jednu z takových firem dělám. Jak jsem byl řekl: desetitisíce řádků.

Jasný nikde netvrdím že je to nejlepší volba, jen píšu že je nesmysl tvrdit že python se hodí maximálně na malé projekty...
Ale to nikdo neřekl. Na malé projekty se hodí perfektně. Na velké projekty je to diskutabilní - je potřeba pečlivě zvážit, jestli to ta konkrétní firma je schopná ustát (kvalita analytiků, programátorů, štábní kultura, kvalita vedení atd.)
10000 řádku je 10 souborů po 1000 řádcích. To není ani malý projekt. Obyčejný eshop má řádově statisíce řádků :-)

Re:Python - dobré rady a praktiky
« Odpověď #114 kdy: 28. 03. 2016, 15:39:29 »
10000 řádku je 10 souborů po 1000 řádcích. To není ani malý projekt. Obyčejný eshop má řádově statisíce řádků :-)
Desetitisíce není deset tisíc. Možná že už to přelezlo do stovek, nevím, mám zajímavější koníčky než to denně kontrolovat :)

javaman

Re:Python - dobré rady a praktiky
« Odpověď #115 kdy: 28. 03. 2016, 15:40:02 »
Skypicker nedávno spamoval s


To neni Skypicker, ale agentura. Až řeknou cenu oni, bude to více přesné.

Kit

Re:Python - dobré rady a praktiky
« Odpověď #116 kdy: 28. 03. 2016, 16:09:34 »
10000 řádku je 10 souborů po 1000 řádcích. To není ani malý projekt. Obyčejný eshop má řádově statisíce řádků :-)

Spíš 100 souborů po 100 řádcích. 1000řádkové zdrojové soubory (resp. skripty) snad nedělá nikdo.

Čím méně řádek má projekt, tím se zpravidla lépe udržuje. Původní Seznam.cz měl prý něco kolem 500 řádek.

F

Re:Python - dobré rady a praktiky
« Odpověď #117 kdy: 28. 03. 2016, 16:27:11 »
Python je co do počtu řádek docela depresivní. Například jsem dělal zakázku pět měsíců o volném čase (večery, víkendy). Narval jsem do toho docela dost času a je tam spousta funkcionality (vlastní UI widgety, práce s netem, poskytování REST API, propojení na tři další systémy, parsování HTML / XML, generování všemožných formátů a tak). Když jsem si to ale nakonec počítal, tak to mělo podle CLOC jen něco okolo 5k5 aktivních řádků. Sice jsem část kódu v průběhu zrefaktoroval a udělal z nich různé opensource knihovničky, které jsou tam přes závislost package manageru, ale i tak je to docela .. divně málo. V javě jsem běžně napsal tisíce řádků za den a ani se nechumelilo. To ale (časově) nevychází, ani kdybych počítal hustější kód 1:5.

Imho je to tím, že python je do jisté míry glue jazyk, kde toho strašnou spoustu zajišťují již builtin knihovny, či různé opensource věci v package manageru. Například já v tom projektu mám ~20 závislostí.

S tím poměřováním řádků je to potom docela těžké, protože když Prýmek napíše, že je to desítek tisíc, tak asi hádám nepočítá všechny závislosti co tam má. Možná by trochu lepší metrika byl počet commitů, nebo člověkohodin, které na tom strávili.

Re:Python - dobré rady a praktiky
« Odpověď #118 kdy: 28. 03. 2016, 16:31:52 »
S tím poměřováním řádků je to potom docela těžké, protože když Prýmek napíše, že je to desítek tisíc, tak asi hádám nepočítá všechny závislosti co tam má. Možná by trochu lepší metrika byl počet commitů, nebo člověkohodin, které na tom strávili.
Abysme si rozuměli: byla to reakce na to "možná bys neřekl že...". Řekl :) Já na tom kódu nepracuju a ani nechci jít do žádných podrobností. Prostě jenom vím o tom, že větší projekty v Py existují i v ČR, to je celé, víc bych to nerozebíral.

javaman

Re:Python - dobré rady a praktiky
« Odpověď #119 kdy: 28. 03. 2016, 16:37:58 »
V javě jsem běžně napsal tisíce řádků za den a ani se nechumelilo.

To si děláš srandu? :D Tohle si fakt Java nezaslouží. Já mám tak max desítky denně a ty to tam házíš po tisících. Se pak nedivim, že se nadává na Javu, když v tom lidi neumí.