Python - zbožňovaný lidmi?

.

Re:Python - zbožňovaný lidmi?
« Odpověď #360 kdy: 15. 12. 2017, 02:40:18 »
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.
Testy se mi spouští automaticky při ukládání souboru v editoru. Je ale důležité si vybrat správný nástroj.


Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #361 kdy: 15. 12. 2017, 02:51:17 »
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.
Testy se mi spouští automaticky při ukládání souboru v editoru. Je ale důležité si vybrat správný nástroj.

Zřejmě to máme nastavené podobně. Kromě toho však mohu uložit soubor bez kompilace a bez testu. Je to jen o správném nastavení závislostí.

Debilove...

Re:Python - zbožňovaný lidmi?
« Odpověď #362 kdy: 15. 12. 2017, 03:23:30 »
Kód: [Vybrat]
#!/usr/bin/env python3
from typing import Generator

def step_range(start: int, stop: int, step: int) -> Generator[int, None, None]:
    r = start
    while r < stop:
        yield r
        r += step

step_range(1, 10, 2) -> OK

step_range('1', 11, 2)  -> Fail + PyCharm: Unexpected type(s): (str, int, int) Possible types: (int, int, int) (int, int, int)


Naucte se python nez ho budete hejtit, pak nebudete za debily...

https://docs.python.org/3/library/typing.html


Hilderbert

Re:Python - zbožňovaný lidmi?
« Odpověď #363 kdy: 15. 12. 2017, 05:40:58 »
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
/quote]
Tohle samo o sobě je už na první pohled hnusné a špatné. Čeho tím chcete dosáhnout?

Hilderbert

Re:Python - zbožňovaný lidmi?
« Odpověď #364 kdy: 15. 12. 2017, 06:11:52 »
Kód: [Vybrat]
def sayGreat(fooable):
  fooable.foo
A tohle je také špatně, člověče.

Kód: [Vybrat]
$ pylint p1.py
No config file found, using default configuration
************* Module p1
W: 12, 0: Cannot decode using encoding "ascii", unexpected byte at position 2 (invalid-encoded-data)
W: 13, 0: Cannot decode using encoding "ascii", unexpected byte at position 16 (invalid-encoded-data)
W: 15, 0: Cannot decode using encoding "ascii", unexpected byte at position 5 (invalid-encoded-data)
W:  2, 0: Bad indentation. Found 2 spaces, expected 4 (bad-indentation)
W:  3, 0: Bad indentation. Found 4 spaces, expected 8 (bad-indentation)
W:  4, 0: Bad indentation. Found 7 spaces, expected 12 (bad-indentation)
W:  5, 0: Bad indentation. Found 4 spaces, expected 8 (bad-indentation)
W:  8, 0: Bad indentation. Found 2 spaces, expected 4 (bad-indentation)
C: 18, 0: Trailing newlines (trailing-newlines)
C:  1, 0: Missing module docstring (missing-docstring)
C:  1, 0: Invalid class name "X" (invalid-name)
C:  5, 4: Black listed name "foo" (blacklisted-name)
C:  1, 0: Missing class docstring (missing-docstring)
C:  1, 0: Old-style class defined. (old-style-class)
W:  1, 0: Class has no __init__ method (no-init)
C:  2, 2: Missing method docstring (missing-docstring)
C:  3, 4: Black listed name "foo" (blacklisted-name)
C:  3, 4: Missing function docstring (missing-docstring)
R:  1, 0: Too few public methods (1/2) (too-few-public-methods)
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)
C:  7, 0: Invalid function name "sayGreat" (invalid-name)
C:  7, 0: Missing function docstring (missing-docstring)
W:  8, 2: Statement seems to have no effect (pointless-statement)
C: 10, 0: Invalid constant name "x" (invalid-name)

-------------------------------------
Your code has been rated at -14.00/10
Na takový krátký kousek kódu 11 warningů, to je výkon.


dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #365 kdy: 15. 12. 2017, 09:17:34 »
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.
[/quote]

To myslíš vážně?

Python je fajn a naprosto chápu, že jej používá mraky lidí pro rychlé a pohodlné vyřešení akutní potřeby, pro vyrobení prototypu, pro naskriptování projektu atd. Sám jej na tyto účely rád používám. To byl i důvod, proč jsem se do něj pustil.

Na triviální skript bash, trochu složitější až docela složitý (desítky souborů/modulů) python. Je to hotové za chvíli, stručný zápis, v IDE funguje špičkové ladění, má to mraky výborných knihoven. Ideální pro tyto účely.

Ale tady je řeč o rozsáhlých systémech, na kterých se dělá roky a další spoustu let se musí udržovat a rozšiřovat dle stále přicházejících nových požadavků. A ty nevyvíjejí vědci, technici, akademici, ale fulltime vývojáři. Držet pohromadě takové projekty bez hlídání typů kompilátorem je velice náročné a nákladné. Ještě navíc ke všem obrovským nákladům, které jsou s vývojem takového projektu spojené.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #366 kdy: 15. 12. 2017, 09:21:28 »
Naucte se python nez ho budete hejtit, pak nebudete za debily...

https://docs.python.org/3/library/typing.html

?? Celou dobu tu o typehintech mluvím. A používáš je?

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #367 kdy: 15. 12. 2017, 09:55:19 »
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #368 kdy: 15. 12. 2017, 10:05:53 »
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)

Mimochodem tahle hláška je přesně důvod, proč jsem definoval tu proměnou v __init__ v https://forum.root.cz/index.php?topic=16263.msg239229#msg239229 (pycharm to samozřejmě hlásí také, jen okamžitě během psaní), aby to následně mypy prohlásil za chybný typehint. Zdá se to ještě docela syrové...

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #369 kdy: 15. 12. 2017, 10:13:54 »
důležitá je hláška.

Kód: [Vybrat]
W:  5, 4: Attribute 'foo' defined outside __init__ (attribute-defined-outside-init)

Mimochodem tahle hláška je přesně důvod, proč jsem definoval tu proměnou v __init__ v https://forum.root.cz/index.php?topic=16263.msg239229#msg239229 (pycharm to samozřejmě hlásí také, jen okamžitě během psaní), aby to následně mypy prohlásil za chybný typehint. Zdá se to ještě docela syrové...

nevím jak vypadá celý kód.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #370 kdy: 15. 12. 2017, 10:21:50 »
pycharm to samozřejmě hlásí také, jen okamžitě během psaní

můj editor to také zobrazuje během psaní.

Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #371 kdy: 15. 12. 2017, 11:02:30 »
pycharm to samozřejmě hlásí také, jen okamžitě během psaní
můj editor to také zobrazuje během psaní.
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit. Netušíte proč ten člověk tu divnou věc dělá? Hádám, že to bude nějaká Java ojebávka, kterou se snaží používat v Pythonu. Napovídá tomu 4. vyjádření, že není žádný rozdíl mezi statickým a dynamickým jazykem, což je nutno přeložit na to, že on žádný rozdíl nevidí a je to poplatné tomu, na co jsem už upozornil. Pro používání dynamického jazyka je nutno používat jiné paradigma, je nutno myslet jinak. Tihle 'statičtí' programátoři to nedovedou, oni to prostě ani nevidí.

sarimak

Skoda, ze Python hodnoti ti co ho videli jen z rychliku
« Odpověď #372 kdy: 15. 12. 2017, 11:06:10 »
Ahoj, prekvapila me ta hromada hejtu Pythonu od lidi, kteri v nem zkousi programovat stylem ktery znaji ze staticky typovanych jazyku a divi se, ze to neni ono, popr. si vyberou neco co v Pythonu jde technicky udelat, ale Pythonisti to sami povazuji za praseni - a na tom ukazuji, jak je Python problematicky.

Z meho pohledu jedna z vyhod Pythonu je, ze cloveku neda moc prace se naucit zaklady a diky spouste hotovych a dobre odladenych knihoven dovede s malym usilim vyprodukovat neco uzitecneho. To je uzitecne jak pro data science, tak pro devops, tak pro lidi co se uci programovat. Kod v Pythonu vypada hodne podobne jako pseudokod ve kterem se popisuji algoritmy nezavisle na jazyku, pomoci zabudovanych zakladnich typu pro heterogenni dynamicke seznamy, slovniky a mnoziny se da s malym usilim vyresit spousta uloh. Clovek muze zacit u skriptu (ktery by psal v Bashi) a prejit k funkcim a tridam, jak se projekt preklapi z prototypu do produkcni kvality. Webovy stack pro API server je hodne intuitivni (Flask, Gunicorn, nginx - nebo Tornado/Sanic), stack pro webove GUI ma spoustu typickych uloh uz vyresenou (Django, vcetne ORM). Existuje jak intutitivni orezane active-record ORM (peewee), tak plnotucne Hibernate-like/unit of work ORM (SQLAlchemy), tak klienti pro NoSQL databaze (napr. Mongo), fronty (napr. Redis-based jako rq a Celery, nebo Kafka).

S tim pomuze paradni podpora pro automatizaci testu, paradni podpora pro linting (vcetne coding style), kdo ma rad kontrolu typu tak sahne i po lintingu typu. Vetsina design patternu se da resit mnohem jednoduseji (napr. strategie pomoci slovniku "pointeru" na funkce), ale nektere postupy z C++ like jazyku jsou hodne podobne (dependency injection). Vicenasobna dedicnost se pouziva jen vyjimecne (zminovane mixiny nejsou neco, co by clovek pouzival casto), naopak dekoratory (retry, elapsed time, URL routing, registrace callbacku), context managery (transakce, setup+teardown, zamykani), iteratory a pointery na funkce/metody/tridy se v idiomatickem (pythonic) kodu pouzivaji hodne casto. Hodne se pouziva kompozice misto dedicnosti, interface je spis o kompatibilnich signaturach, kod se pise genericky (dokud argument podporuje operace ktere s nim chci provadet, nezajimam se o jeho typ - trosku podobne s templates v C++). Hodne se iteruje stylem foreach/bez indexu, testy na konkretni typ objektu nebyvaji potreba. Casto se pouziva "funkcionalni" zapis for cyklu ktere generuji data (dict/set/list comprehension, generator expression) a casto se pouzivaji korutiny (yield misto return - reentrantni funkce ktere si podrzi svuj stav a pri dalsim zavolani pokracuje tam kde minule skoncila).

Pomalost a pametova nenazranost je hodne zvelicovana - spousta knihoven ktere jsou narocne na CPU jsou kompilovane z C a obalene rozhranim ktere je umoznuje volat z Pythonu (sklearn, scipy, lxml, ujson apod.), popr. ukladaji data v Cckovych staticky typovanych strukturach (numpy). V dnesni dobe microservices se casto vetsi datove struktury stejne cpou do SQL/NoSQL/Redis-like cache, takze se opet ukladaji usporne (ale samozrejme se k nim pristupuje s overheadem sitoveho spojeni). Podobna situace je u GILu a orezaneho multithreadingu: Kde potrebuju CPU vykon, volim procesy a ozelim sdileny stav, kde potrebuju spoustu paralelnich IO ktere jsou vetsinou idle (websockety), volim kooperativni multitasking (asyncio). Slabiny Pythonu se daji dobre kompenzovat, jen se clovek musi naucit jak - a to chce investovat vetsi usili, nez ktere hateri byli ochotni dat.

Python se navic pouziva pro ovladani Docker ekosystemu a Ansible (cimz se kompenzuje dalsi nedostatek Pythonu - roztristeny deployment), daji se v nem psat ulohy pro distribuovane task schedulery (Dask, Airflow), dobre se v nem ladi (pdb, kvalitni logging knihovna, konektory na externi monitoring typu Sentry) a hlavne, vyborne se v nem prototypuji vedecke vypocty a algoritmy (Jupyter notebook, ipython).

V neposledni rade ma Python super komunitu - jak u nas, tak ve svete. Na konferencich je hodne fajn atmosfera, lidi misto soupereni pomahaji a sdileji, akce nejsou komercni projekty zamerene na vydelek, ale na sireni knowhow. Jazyk se hodne vyviji, konecne uz prestava bolet schizma Python 2 a 3 (a migrace rozumne psaneho projektu z 2.7 na 3.6 neni tak strasna jak to vypada).

Pratele Javiste a Cckari (C#, C++ apod.) vseho druhu, zkuste si prosim o Pythonu vic zjistit, nez ho zacnete pomlouvat. Mozna u sveho jazyka zustanete i nadale, ale aspon budete vedet proc vam vas stavajici jazyk vyhovuje a nebudete se rozhodovat na zaklade fam a dojmu, ktere v diskusi vyses casto zaznivaly. Predem diky!

Petr Mach

Re:Python - zbožňovaný lidmi?
« Odpověď #373 kdy: 15. 12. 2017, 11:08:24 »
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.

To myslíš vážně?

Python je fajn a naprosto chápu, že jej používá mraky lidí pro rychlé a pohodlné vyřešení akutní potřeby, pro vyrobení prototypu, pro naskriptování projektu atd. Sám jej na tyto účely rád používám. To byl i důvod, proč jsem se do něj pustil.

Na triviální skript bash, trochu složitější až docela složitý (desítky souborů/modulů) python. Je to hotové za chvíli, stručný zápis, v IDE funguje špičkové ladění, má to mraky výborných knihoven. Ideální pro tyto účely.

Ale tady je řeč o rozsáhlých systémech, na kterých se dělá roky a další spoustu let se musí udržovat a rozšiřovat dle stále přicházejících nových požadavků. A ty nevyvíjejí vědci, technici, akademici, ale fulltime vývojáři. Držet pohromadě takové projekty bez hlídání typů kompilátorem je velice náročné a nákladné. Ještě navíc ke všem obrovským nákladům, které jsou s vývojem takového projektu spojené.
[/quote]

To myslím vážně. Všimni si, že oni neuznávají Python vůbec, na nic. Trnem v oku je jim jeho samotná existence, jeho rostoucí popularita, jeho uživatelé. Co se týče velkých projektů, odpovědí je třeba Google nebo Seznam.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #374 kdy: 15. 12. 2017, 11:17:26 »
pycharm to samozřejmě hlásí také, jen okamžitě během psaní
můj editor to také zobrazuje během psaní.
Můj mentální intuitivní code analyzér to hlásí také. Člověk se na to podívá a má z toho na první pohled špatný pocit. Netušíte proč ten člověk tu divnou věc dělá? Hádám, že to bude nějaká Java ojebávka, kterou se snaží používat v Pythonu. Napovídá tomu 4. vyjádření, že není žádný rozdíl mezi statickým a dynamickým jazykem, což je nutno přeložit na to, že on žádný rozdíl nevidí a je to poplatné tomu, na co jsem už upozornil. Pro používání dynamického jazyka je nutno používat jiné paradigma, je nutno myslet jinak. Tihle 'statičtí' programátoři to nedovedou, oni to prostě ani nevidí.

může se stát překlep. Kontrola chyb v editoru je dobrá věc.