Python - dobré rady a praktiky

Re:Python - dobré rady a praktiky
« Odpověď #210 kdy: 30. 03. 2016, 13:06:28 »
Jsou lidé, kteří si o to prostě říkají.
V pohodě, jestli jsem řekl něco blbě, tak si zasloužím za uši, nemám s tím problém.

Velký projekt je třeba i linuxové jádro a nikdo ho nechce psát v Pythonu.
Nerozumím tomu, kam tímhle argumentem míříš. Moje pozice je "psaní středních a velkých projektů v pythonu přináší rizika, která by člověk měl znát, než se do něčeho takového pustí". Jak s tím souvisí tvrzení "existují velké projekty, které nikdo do Pythonu přepisovat nechce"?

Rozumná diskuse má dojít k poznání, kde jsou konkrétnější hranice použitelnosti či vhodnosti.
Ony ale žádné takové hranice nejsou. Čím větší projekt, tím musí být schopnější tým, aby to ustál. A opakuju: není mi jasné, proč by to dělal, co by tím získal. U většího projektu se podle mě výhody stírají a nevýhody zůstávají.

Generální - blbý výrok, že Python není vhodný na větší projekty (pokud nebyl vyřčen obecně, tak mě klidně oprav)
Mnou doufám nebyl. Pokud ano, chtěl bych vidět citaci.

K Julii - ta se vůbec netají tím, že se tlačí na pozici Pythonu v dané doméně. Mně se docela líbí, proč ne. Dosud není ani ve verzi 1, když se začal prosazovat Python v této oblasti, tak snad ani neexistovala.
To je irelevantní. Python taky neexistoval, když v téhle oblasti fungoval Fortran...

Skoro začínám mít dojem, že se snažíš Python shazovat za každou cenu - napřed přizvukuješ trollujícím javistům a pak se divíš, proč někdo chce "mermomocí" v tomto století dát pro určitý typ vědeckých výpočtů přednost Pythonu před C nebo Fortranem...
Ne, já se tomu vůbec nedivím. Oblast (obecně) zpracování dat enormně roste a přichází do ní spousta nových lidí, kteří to dřív nedělali (já jsem jeden z nich). No a jaký jazyk s nevětší pravděpodobností umí? Python. Tak ho tam dáme, aby se nemuseli učit to divné Rko. I když se python na tu doménu hodí míň než Rko.

Pokud máš pocit, že píšu něco špatně, klidně mě oprav. Bohužel ale nemám u Tebe také zrovna pocit, že bys vždycky diskutoval férově a snažil se dojít k pravdivému výsledku padni komu padni. Viz výše.
Však to jsem udělal :) Snažil jsem se korigovat tvoje tvrzení, který mi přišly zavádějící.

Jestli on nebude zakopaný pes tady:
Tady se zřejmě nechápeme. Poučenou kritiku Pythonu rozhodně vítám a netvrdím, že Ty, M. Prýmek a spol. neznáte nic než Python. Snažil jsem se vypořádat s potenciální radou opustit Python a hledat jinde
Z mé strany ta rada byla "nenechat se zmást prvním dojmem, jak projekt poroste, objeví se úplně jiné problémy než na začátku". A myslím, že ani moc nejsme ve sporu, jenom se možná trochu lišíme v hodnocení závažnosti a dopadů tohodle:

To samozřejmě platí o všech jazycích, ale ty dynamické k nekázni svádějí možná o něco více.
- já mám prostě obavu, že běžní programátoři do té nekázněspadnou (míň nebo víc, v té nebo oné formě) prakticky s jistotou.


Re:Python - dobré rady a praktiky
« Odpověď #211 kdy: 30. 03. 2016, 13:07:48 »
OpenStack?
Ok, to je dobrý příklad, beru.

Re:Python - dobré rady a praktiky
« Odpověď #212 kdy: 30. 03. 2016, 13:15:16 »
V kontextu vlákna se ptám na to, v čem vidíš výhody Pythonu.
To je přesně i moje otázka. Rozumím tomu, že po jistou dobu Python moc neměl konkurenci, ale dneska když si vezmu libovolný moderní jazyk s typovou inferencí a dobrou syntaxí, tak mě moc výhod Pythonu nenapadá, jenom samé nevýhody. Kromě snad velkého množství knihoven. Ale to třeba já řeším tak, že s Pythonem komunikuju přes socket z Elixiru (pokud fakt chci nějakou pythonní knihovnu použít a není alternativa v Elixiru - naposledy jsem takhle použil třeba knihovnu pro Request Tracker on cz.nic).

Re:Python - dobré rady a praktiky
« Odpověď #213 kdy: 30. 03. 2016, 13:27:29 »
V kontextu vlákna se ptám na to, v čem vidíš výhody Pythonu.
To je přesně i moje otázka. Rozumím tomu, že po jistou dobu Python moc neměl konkurenci, ale dneska když si vezmu libovolný moderní jazyk s typovou inferencí a dobrou syntaxí, tak mě moc výhod Pythonu nenapadá, jenom samé nevýhody. Kromě snad velkého množství knihoven. Ale to třeba já řeším tak, že s Pythonem komunikuju přes socket z Elixiru (pokud fakt chci nějakou pythonní knihovnu použít a není alternativa v Elixiru - naposledy jsem takhle použil třeba knihovnu pro Request Tracker on cz.nic).

Napada mne ke knihovnam jeste dve vyhody - tooling a lidi.

Z dnesniho pohledu uz je to horsi jazyk, ale porad to muze byt lepsi volba.

Re:Python - dobré rady a praktiky
« Odpověď #214 kdy: 30. 03. 2016, 13:37:22 »
Napada mne ke knihovnam jeste dve vyhody - tooling a lidi.
A tooling pro python je co a čím to překonává tooling pro jiné jazyky?


Re:Python - dobré rady a praktiky
« Odpověď #215 kdy: 30. 03. 2016, 13:46:17 »
Napada mne ke knihovnam jeste dve vyhody - tooling a lidi.
A tooling pro python je co a čím to překonává tooling pro jiné jazyky?

Jupyter pro dalsi jazyky porad nic moc, pro Python maji IDE JetBrains... Porad to neni Java, ale na druhou stranu, vetsina dalsich jazyku je na tom o dost hur.

Re:Python - dobré rady a praktiky
« Odpověď #216 kdy: 30. 03. 2016, 14:00:38 »
Jupyter pro dalsi jazyky porad nic moc, pro Python maji IDE JetBrains... Porad to neni Java, ale na druhou stranu, vetsina dalsich jazyku je na tom o dost hur.
Jupyter je fajn, to je jasný, ale jednak to moc nesouvisí s tématem (je to spíš na interaktivní hraní si a nějakou tu práci s daty) a navíc já radši používám RStudio, přijde mi daleko pokročilejší. Jupyter je fajn na dema a interaktivní práci, kterou chceš mít zdokumentovanou. Ale jakmile si třeba napíšeš nějaké funkce a chceš jim měnit parametry a sledovat výstup, začíná to být opruz a nic moc to pak už nepřináší. V tomhle stadiu už mám radši RStudio + Knitr (pokud chci ty reporty).

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Python - dobré rady a praktiky
« Odpověď #217 kdy: 30. 03. 2016, 15:39:58 »
Kromě snad velkého množství knihoven.
To máš tak. Máš problém (v mém případě parsování pdf). Hledáš nějakou šikovnou knihovnu, která to umí - najdeš, ale je implementovaná v Pythonu. Nu což, nedá se nic dělat. Tak ji začneš používat, a pak zjistíš, že má bug - normální věc. Tak se v tom začneš vrtat, že to fixneš, nebo tak něco... no a hned máš problémy dva.

gl

Re:Python - dobré rady a praktiky
« Odpověď #218 kdy: 30. 03. 2016, 17:13:25 »

To máš tak. Máš problém (v mém případě parsování pdf). Hledáš nějakou šikovnou knihovnu, která to umí - najdeš, ale je implementovaná v Pythonu. Nu což, nedá se nic dělat. Tak ji začneš používat, a pak zjistíš, že má bug - normální věc. Tak se v tom začneš vrtat, že to fixneš, nebo tak něco... no a hned máš problémy dva.
[/quote]

Nerozumím. Jak to souvisí s tím, že je ta knihovna implementovaná v pythonu.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Python - dobré rady a praktiky
« Odpověď #219 kdy: 30. 03. 2016, 17:43:14 »

To máš tak. Máš problém (v mém případě parsování pdf). Hledáš nějakou šikovnou knihovnu, která to umí - najdeš, ale je implementovaná v Pythonu. Nu což, nedá se nic dělat. Tak ji začneš používat, a pak zjistíš, že má bug - normální věc. Tak se v tom začneš vrtat, že to fixneš, nebo tak něco... no a hned máš problémy dva.

Nerozumím. Jak to souvisí s tím, že je ta knihovna implementovaná v pythonu.
[/quote]
Protože kód v Pythonu se výborně píše, o dost hůře čte a zoufale špatně udržuje. Toť má zkušenost.

Re:Python - dobré rady a praktiky
« Odpověď #220 kdy: 30. 03. 2016, 19:54:25 »
Protože kód v Pythonu se výborně píše, o dost hůře čte a zoufale špatně udržuje. Toť má zkušenost.

S tím tedy nemůžu souhlasit.

Co tě k tomu názoru vede? Já tohle slyšel několikrát u perlu (kde je spousta cest, jak udělat jednu a tu samou věc a nadužívání regexpů je bráno jako standard), ale o pythonu tedy opravdu poprvé.

Ze všech jazyků, kde jsem kdy dělal mi přijde čitelnost python kódu určitě nejlepší, tak by mě vážně zajímalo, jak jsi k tomu dospěl.

To s tou údržbou by si taky zasloužilo nějaké bližší vysvětlení. Asi by se dalo vinit shizma kolem 2 / 3 verze, ale to je tak všechno, co mě napadá.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Python - dobré rady a praktiky
« Odpověď #221 kdy: 31. 03. 2016, 01:14:20 »
Protože kód v Pythonu se výborně píše, o dost hůře čte a zoufale špatně udržuje. Toť má zkušenost.

S tím tedy nemůžu souhlasit.
:-) To můžeš.

Co tě k tomu názoru vede?
Moje zkušenosti s jeho používáním.

Ze všech jazyků, kde jsem kdy dělal mi přijde čitelnost python kódu určitě nejlepší, tak by mě vážně zajímalo, jak jsi k tomu dospěl.
Myslím, že bych vyjmenoval pár jazyků, které bych dal před něj. Začal bych Haskellem.

To s tou údržbou by si taky zasloužilo nějaké bližší vysvětlení.
Jakmile tam někde něco chci změnit, začne to vystřeloval chyby a rozpadá se to. Prostě já s ním nedělám rád.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #222 kdy: 31. 03. 2016, 08:15:34 »
Myslím, že bych vyjmenoval pár jazyků, které bych dal před něj. Začal bych Haskellem.

To je velmi odvážné tvrzení. Haskellovská syntaxe je úsporná, ale obliba infixových funkcí trochu připomíná jazyky typu J a transformátory monád apod. spolehlivě vylámou zuby 99% běžných programátorů.

Na druhou stranu, jak říká jeden známý, v Perlu lze psát v každém jazyce, takže klidně věřím, že ses setkal s Pythonem, který byl hůře čitelný než Haskell. Nebo ses narodil s IO monádou na čele, klidně věřím, že pro někoho je Haskell z nějakého důvodu pro někoho přirozenější.

Ivan Nový

Re:Python - dobré rady a praktiky
« Odpověď #223 kdy: 31. 03. 2016, 08:26:30 »
To s tou údržbou by si taky zasloužilo nějaké bližší vysvětlení.
Jakmile tam někde něco chci změnit, začne to vystřeloval chyby a rozpadá se to. Prostě já s ním nedělám rád.
Není rozdíl v tom, když vám chyby vyhodí překladač a když chyby vyhodí runtime. Chyba je chyba a je jedno v kterém kroku se na ni přijde. Jedno to nebylo před 30 lety, kdy byl strojový čas drahý.

V každém "deklarativním" jazyku je chybu težší odhalit, protože odvozovací pravidla generují vlastní jazyk a vyřešit úlohu, zda generovaný jazyk, odpovídá konkrétnímu jazyku a zamýšlenému účelu, je dosti náročné, už jenom proto, že musíte pracovat se všemi pravidly najednou a nebo neustále ověřovat, jaké pravidlo bylo uplatněno v daném místě. Velkou paseku nadělají i "e-pravidla", pak musíte hledat všechna pravidla, která se mohou v daném místě vyskytnout místo "e-pravidla" a to stále znovu a znovu.

Jazyk aplikace se pak "syntetizuje", tedy na každou akci si musíte vytvořit vlastní slovo (funkci), které získáváte odvozováním od už existujíích slov (funkcí), takže závislosti vznikají mnohem horší než u imperativních jazyků, kde můžete rozumně závislosti omezit na okolí funkce, či metody.

Výhody FP jsou zdánlivé, protože toto paradigma není široce používáno a každý kdo ho používá se hrabe většinou ve vlastním kódu, takže sdílená údržba různými lidmi není dostatečně ověřena.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #224 kdy: 31. 03. 2016, 08:27:30 »
V kontextu vlákna se ptám na to, v čem vidíš výhody Pythonu.
To je přesně i moje otázka. Rozumím tomu, že po jistou dobu Python moc neměl konkurenci, ale dneska když si vezmu libovolný moderní jazyk s typovou inferencí a dobrou syntaxí, tak mě moc výhod Pythonu nenapadá, jenom samé nevýhody. Kromě snad velkého množství knihoven. Ale to třeba já řeším tak, že s Pythonem komunikuju přes socket z Elixiru (pokud fakt chci nějakou pythonní knihovnu použít a není alternativa v Elixiru - naposledy jsem takhle použil třeba knihovnu pro Request Tracker on cz.nic).

Pánové, já jsem se to snažil vyjádřit, jak jenom umím. Samozřejmě, že jsem na Python přešel před X lety, kdy mě už nebavilo se trápit s Visual C++ a Java byla strašlivá zpatlanina bez generik a s padajícím IDE Xelfi. Dnes by výběr byl těžší, ale není i tak logické primárně hledat mezi nejpopulárnějšími jazyky, které se nemění za pochodu jako Rust, neobsahují podivná pravidla pro porovnávání identifikátorů jako Nim nebo nerezignují na generika jenom proto, že vývojáři nevědí, jak je naimplementovat, jako Go? Není logické pokukovat po jazyce, který má hned po instalaci k dispozici spoustu knihoven a neinstaluje do systému půl gigabajtu jako jazyky běžící pod Mono? Kromě toho, co jsem už napsal, samozřejmě.

Tvoje volání Pythonu přes sockety mě dost děsí. To to nejde jinak? Julia to třeba umí docela elegantně.