Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Mirek Prýmek

Stran: 1 ... 213 214 [215] 216 217 ... 618
3211
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 21:05:40 »
Není to absurdní požadavek. Kdybychom se bavili o Lue a chtěl bych ji bránit, zmínil bych Luu a bylo by to úplně relevantní.
Ta absurdnost je v tom, že přestože v Lua jde napsat úplně cokoli, i megavelký projekt, nikdo soudný to dělat nebude, protože k tomu není racionální důvod.

Javamanova odpověď s Hadoopem a další perly, které mezi tím stačil rozhodit, mi samozřejmě úplně postačily.
Ono to není tak strašný, jak se všichni tváříte. To opravdu JE velký projekt a JE nasazovaný na vážné problémy. Já osobně neznám pythonský projekt podobného rozsahu a nasazení. Jestli ho někdo zná, rád se nechám poučit. (Jasně, je tady Django, ok)

Že se v Hadoopu zpracovávají data po chuncích, takže je (potenciálně) nasaditelný na libovolné množství dat, nerozhoduje. Ono nejde jenom o ty mapy, shuffly a reducy, ale o všechen ten cirkus kolem. Osobně si nedokážu představit totéž v Pythonu, minimálně kvůli jeho slabé podpoře multithreadingu. Když nic, bylo by to dost pravděpodobně pekelně pomalé.

A když už jsme u toho data science, to byl od tebe taky trochu zavádějící argument. Python imho nebyl použitý proto, že by se na to nějak extra hodil, ale proto, že je populární. Tak se našrouboval na věc, na kterou se (mimochodem) moc nehodí. Nejenom, že nedělá nic víc než lepidlo, to by ještě bylo ok, ale v některých věcech je vyloženě brzda (opět GIL, že...). Takže to se zavede python jako "jazyk na vědecké výpočty" a pak se složitě přemýšlí, jak v C++ backendu hackovat releasování GILu, aby to vůbec bylo k něčemu... Nicméně, abych byl korektní, Rko na tom není o zas tak moc líp - paralelizace tam taky pořádná není a řeší se paralelním spouštěním oddělených interpreterů (snow apod.)

Prostě, tohle vlákno je úplně naprd. Místo abyste se chovali jako dospělí a vedli konstruktivní debatu o tom, co se vám v jakém jazyce líbí a na co se vám neosvědčil, začnete trapnej flejm plnej polopravd z obou stran...

3212
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 17:08:09 »
Chápu, že ve tvém příspěvku jde o něco jiného a uvedená syntaxe mi také připadá nepřirozená, ale také musím:
Kód: [Vybrat]
lambda x: x % 2 == 0
Čekal jsem, jestli se nějaký hnidopich najde :)) Ale kvituju! Štourat se musí! ;)

3213
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 16:34:52 »
Syntaxe dělá hodně. Python má fantastickej syntax suggar ve všem možném. Vůbec bych se nedivil, kdyby to stačilo pro jeho úspěch.
Souhlas. Až na pár zbytečných opruzů, jako třeba že nemůžu napsat
Kód: [Vybrat]
lambda x: if x % 2 == 0 then True else False
ale musím
Kód: [Vybrat]
lambda x: True if x % 2 == 0 else False

Kdyby Python měl filosofii "všechno je výraz", tak by mu to imho prospělo (odstranění returnu u velké části fcí!). Ale chápu datum vzniku pythonu a zároveň Guidovu nesympatii k FP ;)

3214
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 16:30:37 »
Tak třeba Hadoop. Špičkové řešení, které nemá konkurenci a žádný Python tam nenajdeš, protože tam skriptíky nepotřebují.
Ale Spark už je ve Scale - a ještě k tomu nad Akka, takže silná inspirace Erlangem ;)

3215
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 16:20:19 »
Dej sem odkaz na projekt v Javě, který by v Pythonu nebylo možné rozumně napsat a napiš proč.
To je absurdní požadavek. Dosaď si v té větě za Python Lua...

3216
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 16:17:48 »
Čím člověk musí méně ohýbat mozek a soustředit se na detaily výpočtu, tím v zásadě lépe. V Pythonu mám pocit, že se mohu soustředit na problém větší, než v jakémkoliv jiném jazyce.
A uměl bys říct, čím to podle tebe je? Co je vlastně to rozhodující, proč je míň náročný? (Nerozporuju to, přijde mi to jako zajímavé téma k diskusi, proč vlastně python tak skvěle uspěl). Rozumím tomu u skriptů a malých jednoúčelových věcí. Tam je Python lepší náhrada Perlu. Pokud se ale bavíme o seriozně vedeném středně velkém projektu, co ušetříš? To šílené OOP modelování musíš dělat stejně jako v jiném jazyce. Takže co vlastně ušetříš? A co získáš? Že nemusíš psát typy? (takže by ti stejnou muziku udělala slušná typová inference?) Nebo že nemusíš psát složené závorky? (tady bezvýhrady souhlas, jestli má Python něco fakt dobře, tak je to syntaxe)

Všechno jsou to ale proti Pythonu strašlivé molochy. Prostě (snad kromě Ruby) vlastně nevím, kde hledat náhradu. Snesl bych Scalu, Haskell, Clojure, ale to už je všechno hodně jiný svět. Erlang/Elixir samozřejmě také.
Těžko říct, jaká molochovitost ti vadí (zase: nerozporuju to). Co Swift? Go? Rust? Je na nich něco molochovitého? Ruby jsi zmínil. Co F#? A jistou dobu (než jsem .NET zavrhl) jsem koketoval s http://boo-lang.org/ - web vypadá srandovně, ale jazyk je to docela fajn.

Myslím, že jazyků je na světě habaděj a podobný Pythonu nenajdeš jenom pokud budeš hledat takový, který bude mít přesně ty vlastnosti, které má Python ;)

3217
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 29. 03. 2016, 08:20:29 »
Radek, Mirek: Díky za osvětlení. Erlang vypadá opravdu zajímavě. Sice mám rád věci s trochu živější komunitou, ale rozhodně se na něj podívám víc. Mám se ještě co učit.
Doporučil bych spíš http://elixir-lang.org/ - je s Erlangem plně kompatibilní (běží nad stejným VM, má plnou interoperabilitu), je ve spoustě věcí příjemnější (vznikl později a nemá historickou zátěž) a komunita je řekl bych relativně malá, ale extrémně přívětivá.

3218
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 28. 03. 2016, 20:34:08 »
nebo asynchronní je a pak nemá význam psát ho synchronně.
To je právě ten omyl pramenící (zřejmě) ze znalostí jazyků, kde asynchronní události synchronizovat nejdou. Proto v JS dochází k tomu peklu callbacků (a promisy to moc nezlepší, jenom mírně změní syntaxi) - věci nejdou synchronizovat a tímpádem jakmile se někde mihne asynchronní událost, probublají promisy nebo callbacky do všeho kódu, který tu fci používá.

V Erlangu se to dělá snadno - volající proces P1 zavolá fci, je pozastavený a čeká na událost. Mezi tím běží ten asynchronní kód v procesu P2 a jakmile je hotovo, pošle P2 zprávu P1, ten ji přijme (typicky zpráva obsahuje výsledek operace) a pokračuje dál.

V JS sice procesy nejsou, ale kdyby to jazyk umožňoval, dalo by se to dělat úplně stejně - první fce je pozastavena *uprostřed*, běží druhá. To ale JS neumožňuje - každá fce musí hned doběhnout. A z toho pramení ten callback hell. Což je přesně pointa toho, co jsem psal - JS je ve vleku toho, že nebyl navržen na to, na co se dneska používá. A promisy na tom vůbec nic nemění.

3219
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 28. 03. 2016, 20:10:04 »
Mohl bych poprosit o konkrétnější příklad? Takhle popsané mi to připadá právě jako věc řešitelná pomocí generátorů/promises/async+await.
Chci napsat funkci mySuperHttpFetcher(), která mi vrátí integer (!!!) zveřejněný na nějaké http adrese. Bez callbacků, bez promisů. Chci prostě
Kód: [Vybrat]
 
let superNumber = mySuperHttpFetcher()
// superNumber == 42

3220
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 28. 03. 2016, 18:26:22 »
Už několikrát jsem si všiml, že o něčem tvrdíte, jak to jde v JS komplikovaně nebo na to není podpora v jazyce a ono to přitom jde poměrně snadno nebo na to podpora v jazyce je. Nebudu to teď dohledávat, ale konkrétně promises podporu mají od ES6 a na nich pak stavějící async/await v ES7. Díky transpilerům obojí použitelné už dnes. Ale to jen tak mimo téma.
Napsal jsem "bez first-class podpory v jazyce (docela připomíná promises v JS)". Promises jsou věc, která byla do JS přidána teprve nedávno a oproti jazykům, kde se s asynchronními událostmi počítalo předem, se s tím v JS nepracuje nijak zvlášť dobře. Netvrdil jsem, že to v JS není, naopak. Je to tam a je to opruz.

Pokud chcete konkrétní výtku, tak např. se asynchronní události nedají zpátky synchronizovat. Takže nemůžu napsat fci, která by vracela výsledek asynchronní operace. Pro srovnání v Erlangu/Elixiru to jde triviálně.

Nebo jiná výhrada: "Oproti synchronnímu zápisu je výše uvedený zápis pomocí promisů delší a méně přehledný. Navíc jde při řetězení promisů snadno udělat chybu – stačí zapomenout return před druhým voláním getJSON." http://www.abclinuxu.cz/blog/radekm/2015/3/async-a-await-je-krok-spatnym-smerem

3221
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 28. 03. 2016, 16:38:32 »
Pro zajímavost:

Kód: [Vybrat]
find datovka-3.1/ -iname \*.py -exec cat '{}' \; | wc -l
    9832

Datovka 4 už je přepsaná do C++, důvody:
Citace
Proč jsme se rozhodli pro přepis staré Datovky v Pythonu do Qt? Především pro problémy spojené s distribucí a instalací Pythonu pro Windows. Knihovna Qt dovoluje vytvořit grafické uživatelské rozhraní, jehož vzhled se příliš neliší mezi podporovanými OS. Qt navíc dovoluje programování přenositelných vícevláknových aplikací. Použití staticky typovaného jazyka jako je C++ dovoluje odhalit chyby již v době překladu programu. Domníváme se, ze se celkově zlepší přenositelnost, udržovatelnost i testovatelnost této aplikace.
https://blog.nic.cz/2014/12/18/nova-datovka-pro-desktop-rada-novinek/

3222
Vývoj / Re:Python - dobré rady a praktiky
« 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.

3223
Vývoj / Re:Python - dobré rady a praktiky
« 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 :)

3224
Vývoj / Re:Python - dobré rady a praktiky
« 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.)

3225
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 28. 03. 2016, 13:34:34 »
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.

Stran: 1 ... 213 214 [215] 216 217 ... 618