Python - dobré rady a praktiky

fedorac

Re:Python - dobré rady a praktiky
« Odpověď #150 kdy: 29. 03. 2016, 08:16:44 »
Zkus Golang. Soucast jazyka je interface, channel a gorutiny.
Zadny problem s dedicnosti.
Soucasti knihoven je treba HTTP/2 : http://http2.golang.org/gophertiles


Re:Python - dobré rady a praktiky
« Odpověď #151 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á.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #152 kdy: 29. 03. 2016, 12:12:07 »
Původně jsem nechtěl do tohoto flamewaru vstupovat. Namísto rad přišly naivní názory javistů, kteří nikdy žádný větší program v Pythonu zřejmě neviděli. Pak je tady pár kritiků poučenějších, jako Radek Miček a Čumil, všechny jejich námitky jsou do jisté míry relevantní, ale nakonec je celý spor v tom, že Python není Java, Scala nebo třeba Haskell. To všichni víme, každý pythonista bez klapek na očích ví, kde jsou přednosti a slabiny jazyka.

Hlavní výhoda Pythonu je ve filosofii "batteries included", snaze o udržení "správné cesty" (deklarace víry, že existuje něco jako správný/nejlepší způsob, jak něco napsat) a v neposlední řadě i v relativně vysoké flexibilitě samotného jazyka. Python je jazyk, který se vyvíjí a handicapy, které jistě má (i mně by se líbilo, kdyby byl více podobný právě Haskellu), poměrně úspěšně řeší (třeba to zmiňované mypy nebo nové typy kolekcí, asyncio apod.). Problémy s rychlostí (jsou-li) řeší FFI, v budoucnu zřejmě čím dál častěji JIT, v klasickém CPythonu je ale holt třeba spoléhat na nízkoúrovňové jazyky.

Takže k věci - pokud chce někdo psát v Pythonu, poradím:

1. Začít s Pythonem 3, dvojku vůbec v pozici začátečníka neuvažovat. Dvojka je umírající platforma a bez ohledu na to, co si kdo myslí o rozhodnutích o změnách 2->3, rozhodnutí prostě padla.

2. Psát kód pořádně, pokud možno od začátku. Na hraní je ipython, jupyter a krátké testovací skriptíky, seriózní projekty mají být psány seriózně, nezanedbávat dokumentaci, vždy mít jasno v tom, co daná metoda/funkce přijímá a vrací a kde končí její pravomoc. 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.

3. Nevymýšlet za každou cenu kolo, ale spoléhat se pouze na prověřené a dobře napsané knihovny. Primárně používat standardní knihovnu, v případě potřeby knihovny třetích stran, ale s rozvahou.

4. Snažit se moc nekouzlit, nedělat chytrého, nesnažit se ušetřit pár řádků kódu na úkor čitelnosti, nezakládat si na tom, že umím používat všechny nuance jazyka až nadoraz, když to není potřeba.

S těmito zásadami a v případě týmové práce s rozumným vedením lze v Pythonu rychle a s potěšením napsat hodně rozsáhlé a udržovatelné programy. Python je stabilní platforma s kvalitní dokumentací, dobrou komunitou a spoustou užitečných rad na webu. Samozřejmě existují alternativy, jako třeba Ruby, mně osobně Python sedí více, ale není to jediná možnost. Důrazně doporučuji to s ním alespoň zkusit, i v případě, že se někdo rozhodne pro jiný primární programovací jazyk.

Ondrej

Re:Python - dobré rady a praktiky
« Odpověď #153 kdy: 29. 03. 2016, 13:24:35 »

javaman

Re:Python - dobré rady a praktiky
« Odpověď #154 kdy: 29. 03. 2016, 14:28:30 »
Namísto rad přišly naivní názory javistů, kteří nikdy žádný větší program v Pythonu zřejmě neviděli.

A nebo právě viděli a stačilo jim to.


BoneFlute

  • *****
  • 2 092
    • Zobrazit profil
Re:Python - dobré rady a praktiky
« Odpověď #155 kdy: 29. 03. 2016, 14:31:20 »
...
Hmm, spousta věcí je prostě obecným principem, a důležitým skillem každého vývojáře. Možná by to chtělo lépe vypíchnout v čem je to v případě Pythonu ve spojení s jeho vlastnostmi ve výsledku tak prospěšné.

Jedna věc je používat jazyk, protože se mi líbí.
Druhá věc je používat jazyk, protože musím (můj případ).
Třetí věc je používat jazyk, protože se to vyplatí.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #156 kdy: 29. 03. 2016, 15:12:42 »
Namísto rad přišly naivní názory javistů, kteří nikdy žádný větší program v Pythonu zřejmě neviděli.

A nebo právě viděli a stačilo jim to.

Zprasit se dá program v každém jazyce. V programování vidět znamená spíš vyzkoušet si se vším všudy, ne přijít k hotovému dílu a pak generalizovat.

javaman

Re:Python - dobré rady a praktiky
« Odpověď #157 kdy: 29. 03. 2016, 15:31:43 »
Aha, takže další pohádkář.

Nechceš mi radši poslat link na zdroj na velký projekt, který nevypadá jako kopa hnoje? Ať vidím, jak borci ve skriptovacím jazyce válí.

ToJeFaktJedno

Re:Python - dobré rady a praktiky
« Odpověď #158 kdy: 29. 03. 2016, 15:46:14 »
Ta představa Javistů, jak z nich Java dělá polobohy, je úsměvná. Neříkám, že touhle nemocí trpí všichni, ale tolik egoismu jako v řadách Javistů těžko jinde pohledat. Jsou tady i nesrovnatelně náročnější a/nebo lepší jazyky a nikdo u toho takhle nevyvádí. To chce klid.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #159 kdy: 29. 03. 2016, 15:49:46 »
...
Hmm, spousta věcí je prostě obecným principem, a důležitým skillem každého vývojáře. Možná by to chtělo lépe vypíchnout v čem je to v případě Pythonu ve spojení s jeho vlastnostmi ve výsledku tak prospěšné.

Jedna věc je používat jazyk, protože se mi líbí.
Druhá věc je používat jazyk, protože musím (můj případ).
Třetí věc je používat jazyk, protože se to vyplatí.

Musíš používat Python, nebo to píšeš obecně?

Co se týče prospěšnosti Pythonu, jak jsem myslím psal, spousta knihoven je přibalena s jazykem rovnou, další jsou snadno k dispozici třeba přes pypi. Pak samozřejmě REPL, resp. jeho větší bratříček IPython notebook, to je úžasná věc, která dosud není úplně samozřejmá. Rychlý runtime, co se týče naběhnutí. Není potřeba uvádět typy, spousta věcí v Pythonu plyne úplně přirozeně, třeba celé číslo není omezeno architekturou procesoru nebo rozhodnutím nějaké komise jako třeba u Javy. Tohle všechno je perfektní výbava pro řešení menších a středních problémů, prototypy apod.

Programovací jazyk je obecně prostředníkem mezi myšlením vývojáře a strojem, na kterém běží výpočet. Čí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.

Sem tam samozřejmě zjišťuju, co je nového v jiných jazycích, zkouším nebo musím něco udělat v něčem jiném, takže celkem přehled mám. Java měla od začátku (jako jazyk), prakticky všechno úplně blbě. Na to, jak dlouho je na světě a co všechno se v té době v oblasti programovacích jazyků odehrálo, se hýbe dopředu moc pomalu. C++ je 100x lepší než před dvaceti lety, až na to, že všechen hnus, co kdysi převzal z C, pořád táhne za sebou. C# je ze staticky typovaného mainstreamu ještě zdaleka nejlepší - jako jazyk. 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é.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #160 kdy: 29. 03. 2016, 15:52:05 »
Aha, takže další pohádkář.

Nechceš mi radši poslat link na zdroj na velký projekt, který nevypadá jako kopa hnoje? Ať vidím, jak borci ve skriptovacím jazyce válí.

To bys napřed musel napsat, co u Tebe znamená "nevypadat jako kopa hnoje".

Ondrej

Re:Python - dobré rady a praktiky
« Odpověď #161 kdy: 29. 03. 2016, 15:55:10 »
Aha, takže další pohádkář.

Nechceš mi radši poslat link na zdroj na velký projekt, který nevypadá jako kopa hnoje? Ať vidím, jak borci ve skriptovacím jazyce válí.
https://github.com/django/django

javaman

Re:Python - dobré rady a praktiky
« Odpověď #162 kdy: 29. 03. 2016, 15:58:18 »
Ta představa Javistů, jak z nich Java dělá polobohy, je úsměvná. Neříkám, že touhle nemocí trpí všichni, ale tolik egoismu jako v řadách Javistů těžko jinde pohledat. Jsou tady i nesrovnatelně náročnější a/nebo lepší jazyky a nikdo u toho takhle nevyvádí. To chce klid.

Jestli to nebude třeba složitostí projektů :D Většina běžných programátorů je pro to nevhodná, a proto se nemůžeš divit, že se na ně pohlíží jako na ty horší. Můžou dělat v Pythonu a být v poho, ale větší věci už potřebují víc.

Inkvizitor

Re:Python - dobré rady a praktiky
« Odpověď #163 kdy: 29. 03. 2016, 16:17:35 »
Ta představa Javistů, jak z nich Java dělá polobohy, je úsměvná. Neříkám, že touhle nemocí trpí všichni, ale tolik egoismu jako v řadách Javistů těžko jinde pohledat. Jsou tady i nesrovnatelně náročnější a/nebo lepší jazyky a nikdo u toho takhle nevyvádí. To chce klid.



Jestli to nebude třeba složitostí projektů :D Většina běžných programátorů je pro to nevhodná, a proto se nemůžeš divit, že se na ně pohlíží jako na ty horší. Můžou dělat v Pythonu a být v poho, ale větší věci už potřebují víc.

Spíš bych řekl, že si tam tu složitost z velké části uměle vytváříte. Tohle všechno jsou ale kecy. Dej sem odkaz na projekt v Javě, který by v Pythonu nebylo možné rozumně napsat a napiš proč.

Re:Python - dobré rady a praktiky
« Odpověď #164 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 ;)