Na vetsi veci se mi zda neprakticky, protoze zacnete pocitovat ty chybejici typy (musite vyvazovat dokumentaci, casem a testy navic) a nepodporou IDE (at uz refaktorovani nebo treba navigaci).
Zrovna tohle je typický argument. O pythonu už jsem tu vedl několik diskuzí, které vždycky skončí stejně: já ukážu na nějaký projekt, dodám zkušenost s práce na větším systému (desítky tisíc řádků podle cloc bez komentářů, prázdných řádků a tak) a ostatní se hádají, že to prostě nemůže fungovat, i když to funguje.
Ehm, vzdyt na to jsem odpovel v prispevku, ktery citujete.
Stejne jako u PHP, ani u Pythonu nerikam, ze to nejde ... jen tvrdim, ze je to nevhodny nastroj.
a ten drivejsi, na ktery jsem se odkazoval:
...
Jak pise Kit, programovat se da i v takovem bordelu, jen clovek musi presne vedet, kam nema slapat, aby neprisel o nohu.
...
Prakticky se pouziva, dokonce i na dost velke veci. Naopak veci v Pythonu nebo JavaScriptu s trochu vic radky bych se bal udrzovat. Bez typu se hezky vyviji v malickem meritku s malo lidmi, ale jakmile se to rozroste a uz nemate v hlave mentalni model cele aplikace, tak mate problem. V Jave/Scale vam pomuze IDE a prekladac vam kdyztak vynada, v JavaScriptu nebo Pythonu je to mnohem horsi. Treba v JS musite spolehat na dokumentaci a IDE, ze to nejak prechroupe a zobrazi zhruba co by mohlo sedet k tomu, co potrebujete.
(V podstate to stejne pise BoneFlute - v dynamickych jazycich si musite vypomahat dobrovolnymi typy v dokumentaci, ve statickych je vynucuje prekladac.)
Pak se to zvrhne na hádku o typových systémech, kde javisti dokazují, že když to nefunguje jako v javě, tak to nemůže být použitelné pro cokoliv kromě trivialit, pythonisti se frustrovaně snaží vysvětlit, že to fakt funguje, což je prostě pozorování, ne teorie, pak přijde někdo s tím, že ducktyping je bullshit a že mu nerozumí, haskellisti, ocamlisti a další typoví guru se smějí na pozadí. Do toho přijdou lopaťáci, kteří začnou vykřikovat cosi o lopatách, trolové, kteří prostě jen krmí některý z táborů čímkoliv, na co budou reagovat a drama je na světě.
Nikdy jsem nepsal (viz citace vyse), ze to nejde bez statickych typu, jen ze je to zbytecny opruz. Opravdu nevim, jestli podle vas jsem v nejake z tech kategorii, protoze prvni kategorii nesplnuji, pythonista nejsem (ocividne), ducktyping pouzivam denne v praci a na typoveho guru se moc necitim, kdyz pomalu nedavam ani zaklady ScalaZ (celkem hardcore FP knihovna).
Ono vůbec, u pythonu narážím na to, že spousta lidí vůbec nechápe, že má svojí vlastní filosofii a nejde jen tak přijít z javy, naučit se základy syntaxe a začít v něm javit, protože pak z toho lezou výblitky, které je horor udržovat a tohle pak javisti berou jako důkaz, že python nestojí za nic.
Python jsem zkousel (spise byl nucen pouzivat) po urcitych zkusenostech s C#, Javou a Scalou. Naopak jsem srovnaval se Scalou, protoze Python mi byl popisovan jako krasny a celkem strucny jazyk, ve kterem se rychle vyviji. Jak z mych prispevku vyplvyva, ma ocekavani nesplnil. Po pravde po zkusenostech s kolekcemi ze Scaly nevim, zda vubec nejaky jazyk se ji priblizil (napr. v Pythonu* nelze ani pomalu psat funckionalne [ukecane lambdy, chybejici retezeni]; JavaScript je funkcionalni, od ES6 umi i hezky kondenzovane fat-arrow funkce, ale bez externi knihovny take hodne slaby [co se vyberu funkci tyce]).
*: Nasel jsem jakesi reseni v podobe doimplementovani pipe opratoru a preimplementovani zabudovanych funkci jako map nebo filter na curried variantu. IMO celkem hnusne reseni - narovnavak na ohybak.
Stejne jako u PHP, ani u Pythonu nerikam, ze to nejde (vim, ze se tak deje a firmy jsou casto nuceny pak prepisovat cele svoje zivobyti z PHP/Pythonu/Ruby kvuli vykonu/udrzovatelnosti do Javy/C#/Scaly) - jen tvrdim, ze je to nevhodny nastroj. Ostatne i TeX je turing-complete, takze nic nebrani firme, aby back-end pro web psali v TeXu. Jen se obavam, ze by brzy skoncila, pokud by tedy vubec nekdy zacala (kdo by chtel BE v TeXu? kdo by chtel psat BE v TeXu?).
Skvělá šikmá plocha. Protože lopatička není koloběžka, tak ani v javě se nedá psát komplexní projekt.
Že to nedává smysl? No, to tyhle jazykové analogie fakt nedávají, což ale nikomu nebrání je používat, že. Tady se třeba cosi snažíš dokázat na TeXu, který má s pythonem společného co? Nic.
Opet, nerikam ze se v TeXu neda napsat skvely back-end, jen to podle me neni vhodny nastroj (stejne jako Python - takze neco spolecneho maji) a minimalne z dlouhodobeho hlediska se to prodrazi. Sam bych nejradsi misto JavaScriptu pouzival treba TypeScript nebo ScalaJS, vetsinu chyb by odhalil prekladac a nemusel bych ani nic testovat. A to nyni v podstate vyvijim v jednom cloveku jen par mesicu, takze je to pidi projekt oproti tomu, co pisete. Mit treba projekt v Pythonu (nebo klidne i NodeJS, at nerikate, ze jsem zaujaty vuci Pythonu) o desitkach nebo stovkach tisicu radek s nekolika vyvojari stary treba 5 let? Eh, hned bych hledal zpusob, jak prejit jinam, kor kdybych prisel k hotovemu a nevedel o tom projektu zhola nic.
Po pravde mam z Pythonu pocit, ze OOP podporuje jen na oko (chybejici modifikatory pristupu, __háky__, nutnost predavat metodam self a uvadet self pro pristup k poli objektu, atd.) a FP jednou omylem nekdo chtel zkusit a uz to nejak v jazyce zustalo, prestoze ty vlastnosti jsou tam celkem nanic.
Já mám zas pocit, že nemáš tušení co je to OOP, ani FP. Modifikátory přístupu například vůbec v původním OOP (smalltalk, self) nebyly a ani být nemusí. To je jen demence, když to pak roubovali na pokroucený zprasený systém C++ a Javy (Oaku, heh).
Ano, priznavam, ze
puvodni OOP neznam (aktualni prakticky pouzivane OOP ano). Ale nejak se mi nepozdava, ze treba zapouzdreni by tam chybelo, coz snad ty modifikatory pristupu zajistuji. K tomu, ze neznam FP jsi nejak nic nenapsal. Jako nutne to nevyvracim, ale zaklady FP si myslim znam celkem dobre. A pokud jazyk chce byt trosku funkcionalni, tak nutnost pouzivat hacky k dosazeni beznych operaci umoznujicich ono FP mi prijde dost mimo.
Python podporuje „privátní“ atributy pomocí __, kde ti interpreter vyhodí chybu, když k tomu zkusíš přistoupit.
...
Na druhou stranu ti v tom fakt nebude bránit, pokud víš co děláš:
>>> x._Xe__private()
1
Tohle me prijde jako prilis snadne obejiti zapouzdreni (a ano, i v JavaScriptu bych uvital modifikatory pristupu, ne jen skryvani "privatnich" promennych do closure). Ono i v Java svete nebyva problem pomoci reflexe nebo primo pres bytekod tridy zpristupnit privatni data, ale je to o uroven dal, nez jen zavolat jinak pojmenovanou metodu (programator opravdu vi, ze dela neco hodne nestandardniho a nestava se, ze novacci pouzivaji privatni veci, protoze neni tak trivialni k nim pristupovat).
Což je podle mě v pořádku. Když programátor fakt ví co chce, tak si může dělat co chceš a ty jako programátor knihovny mu v tom nezabráníš, i kdyby ses posral a nadefinoval si private úplně všechno. To jen lidi co přichází z Javy / C# mají urputný pocit, že když to neudělají, tak dojde ke konci světa. Nedojde. Prostě to spadne někomu, kdo dělá věci co by neměl, což není můj problém. Naopak progrmátorům, kteří ví co dělají a třeba chtějí jen mocknout nějakou hodnotu pro účely testování to může ušetřit shitload práce.
Jinak kdysi jsem na tom byl stejně, takže chápu, kde se tahle mentalita bere, můžu tě ale ujistit, že je to falešný pocit nutnosti něčeho, co fakt nutné není.
Osobne to preferuji, kdyz mi jazyk primo umoznuje omezovat pristup. Prijde me, ze do tymu je to mnohem lepsi pristup. Kdyz se opet podivam do JS sveta, tak tam byvaji nehezke zaludne a tezce dohledatelne bugy, kdyz se nekdo, nebo jeste lepe nejaka knihovna, rozhodne "opravit" funkci nejakeho standardniho typu (monkey patching).
__háky__
Magické metody jsou naopak docela chytrý koncept systematizovaného metaobjektového komunikačního protokolu. Stěžovat si na ně je stejná blbost, jako stěžovat si na konvenci používání metody nazvané toString() v jiných jazycích.
Zcela uprimne - prijde me to ohavne, to jsem od "krasneho" jazyka necekal. Proc radeji nezvolili jiny znak, pouze 1 znak, jako prefix, proc radeji 2x 2 podtrzitka?
Reflexe je i v jinych jazycich (jestli to chapu dobre) a vetsinou je povazovana za zverstvo, ktere se smi pouzivat pouze ve velmi specifickych pripadech typu knihovny kvuli hezci syntaxi. Podobne jako eval v JavaScriptu. Ma sice sve misto, ale v normalnim projektu typu web to misto rozhodne neni.
nutnost predavat metodam self a uvadet self pro pristup k poli objektu
Jo, to se může jevit jako opruz. Na druhou stranu to umožňuje dekorátorům pracovat s instancemi objektu za běhu, což se používá v pokročilém metaprogramování. Má to i pár dalších výhod a dává to konzistentní smysl, ale to člověk nevidí, dokud nepřekročí základy.
Troufam si rict, ze v JavaScriptu jsem davno prekrocil zaklady, a rozhodne nemam v lasce nutnost vsude ve tride uvadet "this". CoffeeScript to vyresil celkem elegantne, misto "this" prisel s jednim znakem - @. Po pravde az v Pythonu vidim, ze se musi pouzivat this/self i jako parametr metody. Nevim, ja to vse vnimam tak, ze je to do Pythonu dolepene.
Ono argumentovat popularitou je dost ošemetné. Kdybych to měl přirovnat třeba k hudbě, tak takový Justin Bieber má na YT miliardy shlédnutí a přitom objektivně jeho produkce stojí za hovno. Popularita a kvalita bohužel ne vždy jdou ruku v ruce a často se vyloženě rozcházejí. Někdy se to krásně sejde, ale jedno automaticky nevyplývá z druhého.
Hahah. Tohle mě pobavilo, hlavně proto, že pamatuju ještě ty časy, kdy tomu tak nebylo a lidi argumentovali proti pythonu tím, že je nepopulární a v čechách v něm moc lidí nedělá. Teď je populární a lidi argumentují zase opakem 
To, ze je jazyk popularni jej nedela dobrym (meh, PHP nebo i starsi verze JavaScriptu nejsou nejake prevratne) a ani naopak.
Mimochodem Python je tu opravdu tak popularni? Vsude v inzeratech totiz vidim jen Javu a C# na ty velke veci. Na male naopak jen PHP

.
A celkove, nemate nekdo nejake statistiky o popularite jazyku u firem v CR/SK? By me zajimal treba takovy Haskell (slysel jsem, ze i v Brne v nem kdesi delaji) nebo Scala ci Groovy.