Python - zbožňovaný lidmi?

balki

Re:Python - zbožňovaný lidmi?
« Odpověď #345 kdy: 14. 12. 2017, 12:35:29 »

Dropbox ma asi vela penazi na hardware. S dobrym load balancerom moze byt na backende hoci aj ruby.

Však taky nikdo neříká, že Python exceluje ve výkonosti. Ostatně proto YouTube experimentuje s převodem Python kódu do Go. Ale všechny ty řeči o nepoužitelnosti kvůli podpoře refaktoringu, absenci statickému typování apod. jsou vyvráceny pár konkrétními příklady.

Pro velké projekty má Python určité nevýhody (proto se třeba Dropbox hodně zabývá těmi type hinty), ale nepoužitelný určitě není.

Ako sa u nas zvykne vraviet "Jedna lastovicka jar nerobi". Ak sa najde v nejakej firme dost nadsencov, tak pouziju bars aj python so vstekymi jeho vyhodami a nevyhodami.


pp

Re:Python - zbožňovaný lidmi?
« Odpověď #346 kdy: 14. 12. 2017, 12:45:48 »
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

atarist

Re:Python - zbožňovaný lidmi?
« Odpověď #347 kdy: 14. 12. 2017, 13:38:15 »
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Nejsem hardcore Pythonista, ale na jeden projekt ho celkem uspesne pouzivame, takze se jen kratce zeptam:

* A komu vlak neujel? (v porovnani s Pythonem, tedy se soucasnymi verzemi)

* Jinak kdo je tedy podle tve definice amater? clovek, ktery dela napriklad i v tom Pythonu a je za to placeny?

* Pomaly napriklad ve chvili, kdy "jen" spousti procesy v CUDA? Nebo pomaly ve chvili, kdy spoustim skripty z CLI (narazim trosku na JRE :-).

Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #348 kdy: 14. 12. 2017, 14:26:04 »
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.
Jo, a proto jeho popularita prudce roste a antipython trolové běsní :-).

Nevypadá to, že by Pythonu ujel vlak. Spíše naopak, oproti minulosti z ničeho neustoupil, drží se v akademické sféře, v linuxu, na webu a tak dále. Oproti minulosti pronikl i do škol a na jednodeskové počítače zvláště Rasppbery, což je super. Aktuální trendy jako IoT, AI, DM, tam všude se s úspěchem používá. A když se podívám na knižní trh a literaturu o Pythonu, nemohu být nespokojen.

kdr

Re:Python - zbožňovaný lidmi?
« Odpověď #349 kdy: 14. 12. 2017, 14:59:47 »
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.


Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #350 kdy: 14. 12. 2017, 18:24:25 »
On právě Python nemá žádnou výhodu. Je pomalý, dělá se v něm stejně rychle jako třeba v Javě, nemá podporu refactoringu, nemá plno věcí, které jinde dávno jsou, nedá se moc udržovat. Před 10 lety byl Python fajn, ale dnes mu dávno ujel vlak a na vývoj ho použije jen amatér.

Ty davy amatérů pracujících za peníze u nás i v cizině, třeba na CERNu nebo ve SpaceX. ;D ;D ;D

 Ti lidé nepracují v IT, ale v jiném oboru. Programování dávno není výsadou IT.

To je asi pravda, že jednoduché jazyky jako Python umožňují programovat i chytrým lidem z jiných oborů, kteří tak přestávají být závislí na IT lidech a mají své výsledky levněji a efektivněji.  Možná i to je důvod, proč některým lidem tak vadí, ztrácí tím svou výlučnost a monopol. To docela dobře vysvětluje místní zášť vůči Pythonu a jeho uživatelům.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #351 kdy: 14. 12. 2017, 18:45:02 »
Python vadí lidem, kteří jsou "experti" na řešení problémů, které v Pythonu neexistují.

Prasečí hyena

Re:Python - zbožňovaný lidmi?
« Odpověď #352 kdy: 14. 12. 2017, 22:54:01 »
Zajímavý pohled na statické typování, pokrytí kódu testy a možná falešná očekávání: https://medium.com/javascript-scene/the-shocking-secret-about-static-types-514d39bf30a3


BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Python - zbožňovaný lidmi?
« Odpověď #353 kdy: 15. 12. 2017, 00:04:46 »
Pořád nechápu, jak se vyhneš otázkám na typ objektů,...
Jakejm otázkám? Jako instanceof? To potřebuju jednou za uherák, a je to proto, že jsem to zprasil...


Je potřeba vyjít ze samotné podstaty dynamického jazyka. A tou podstatou je, že na rozdíl od statického jazyka je datový typ přiřazen hodnotě, nikoliv proměnné.

To není pravda.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #354 kdy: 15. 12. 2017, 00:29:12 »
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.

agentura

Re:Python - zbožňovaný lidmi?
« Odpověď #355 kdy: 15. 12. 2017, 01:12:48 »
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.

Tak tohle vyhrává cenu za hlod dne ;D 8) ;D

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #356 kdy: 15. 12. 2017, 01:48:30 »
Pořád nechápu, jak se vyhneš otázkám na typ objektů, když musíš pracovat s jejich API.

namísto isinstance použijete hasattr nebo zachytíte AttributeError.

Vyjímky jsou doporučený způsob jak tohle řešit.

Pokud jsou v proměnné data jiného než očekávaného typu, jistě si to zaslouží výjimku. Pokud jsou však očekávána data různých typů, je lepší využít polymorfismu a funkcionalitu implementovat přímo do nich.

BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Python - zbožňovaný lidmi?
« Odpověď #357 kdy: 15. 12. 2017, 01:51:31 »
Můj názor:

Dynamické jazyky se od statických liší tím, že mohu (snadno) za běhu měnit struktury. Příklad:

Kód: [Vybrat]
class X:
  def config(self):
    def foo():
       print("Great")
    self.foo = foo

def sayGreat(fooable):
  fooable.foo

x = X()

# špatně
sayGreat(x) # výjimka

# správně
x.config()
sayGreat(x)

Z čehož jsem si vyvodil tyto závěry:

1. Výše uvedené chování je v jiných jazycích (C#, Java, PHP) považováno za antipattern (přestože se hojně používá - viz oblíbené flamewar settery versus konstruktor). V jazycích jako Haskell to dokonce skoro ani nejde (schválně).

2. To, na co mají některé jazyky typy, na to má Python testy. Když se v Javě rozhodnete měnit nějakou věc, musíte často změnit spoustu typů. Když v Pythonu chcete změnit nějakou věc, musíte s ní i zohlednit testy.

3. V Javě, nebo v lepších jazycích postavených na typech (Haskell), když se konečně prokoušete všemi těmi změnami, a kompiler vám konečně úspěšně přeloží projekt, máte z velké části vyhráno, a apka často běží jak má. V dynamických jazycích ušetříte spousty času tím, že to velice snadno napíšete, pak to spustíte, a začnou vám padat výjimky víše uvedeného druhu. Což podle typu aplikace, kde se musíte složitě proklikat ke konkrétnímu stavu může být docela dost bolestivé.
Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.

4. V ničem jiném zásadnějším se dynamické od statický jazyků neliší. Jen jednu věc řeší jinak.

Zjistil jsem, že okenní aplikace, kde musím udělat víc jak pět kroků, abych dosáhl stavu a otestoval to je na Python příliš velká aplikace. A psát unittesty na to, zda se atribut jmenuje `vals`, `values`, `items` abych si ověřil, že jsem to napsal dobře, mě nebaví.

Zjistil jsem, že pro víše uvedenou dynamičnost nemám využití. Naopak oceňuji, když mi compiler najde alespoň 50% chyb dříve, než to začnu testovat - nebo nedejbože to jde do produkce.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #358 kdy: 15. 12. 2017, 02:23:59 »
2. To, na co mají některé jazyky typy, na to má Python testy. Když se v Javě rozhodnete měnit nějakou věc, musíte často změnit spoustu typů. Když v Pythonu chcete změnit nějakou věc, musíte s ní i zohlednit testy.

Když se v Javě rozhodneš změnit nějakou věc, musíš testy změnit také. V tom není rozdíl.

3. V Javě, nebo v lepších jazycích postavených na typech (Haskell), když se konečně prokoušete všemi těmi změnami, a kompiler vám konečně úspěšně přeloží projekt, máte z velké části vyhráno, a apka často běží jak má. V dynamických jazycích ušetříte spousty času tím, že to velice snadno napíšete, pak to spustíte, a začnou vám padat výjimky víše uvedeného druhu. Což podle typu aplikace, kde se musíte složitě proklikat ke konkrétnímu stavu může být docela dost bolestivé.

V Javě či zmíněném Haskellu úspěšný překlad ještě zdaleka nemusí znamenat výhru. Když píšeš testy v Javě i v Pythonu, tak ty aplikace obvykle jedou na první dobrou, protože všechny možné závady vychytáš už v těch testech.

Když si vypůjčím přirovnání od @Ivan Nového, tak je mi sympatičtější, když mě compiler vynadá, že jsem si dal boty na ruce už doma, než že to zjistím až před barákem, když se pokouším odemknout dveře od auta.

Testy se mi spouští automaticky po kompilaci třídy, téměř to nerozlišuji.

Zjistil jsem, že okenní aplikace, kde musím udělat víc jak pět kroků, abych dosáhl stavu a otestoval to je na Python příliš velká aplikace. A psát unittesty na to, zda se atribut jmenuje `vals`, `values`, `items` abych si ověřil, že jsem to napsal dobře, mě nebaví.

Pracovat přímo s atributy objektu je poměrně naivní a dobrý vývojář to nedělá. Na práci s atributy jsou metody. Okolí objektu vůbec nepotřebuje vědět, jaké atributy ten objekt má.

Zjistil jsem, že pro víše uvedenou dynamičnost nemám využití. Naopak oceňuji, když mi compiler najde alespoň 50% chyb dříve, než to začnu testovat - nebo nedejbože to jde do produkce.

Pokud máš spouštění testů oddělené od kompilace, tak se ti ani nedivím. Testy považuji za další level kompilace, který ihned navazuje na úspěšný překlad.

BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Python - zbožňovaný lidmi?
« Odpověď #359 kdy: 15. 12. 2017, 02:35:50 »
...

Přiznám se, že mě napadlo, že přijde nějaká podobná reakce. Ale pak jsem si řekl, proč se namahat. Kdo chce pochopit, pro toho to může být zajímavé. Zbytek mě nezajímá.