Vlákno názorů k článku
Stane se Python dominantním programovacím jazykem? od jxjl - Z mého pohledu se Python opravdu může stát...

  • Článek je starý, nové názory již nelze přidávat.
  • 13. 6. 2017 8:44

    jxjl (neregistrovaný)

    Z mého pohledu se Python opravdu může stát dominantním jazykem, důvodů je hned myslím několik
    - dostává se do podobné pozice, jako byl v době osmibitů basic
    - velice jednoduchý na naučení, nicméně na druhou stranu umožňuje poměrně sofistikované konstrukce
    - díky balíkům Numpy/Scipy jednoznačně jasnou volbou pro vědeckou komunitu potřebující "prohnat" něčím naměřená data a daný script už nikdy nevidět
    - integrovatelný do běžných aplikací jako scriptovací jazyk pro tvorbu nejrůznějších rozšíření ... a přiznejme si, pokud už běžný smrtelík chce něco programovat, je to takovýto případ chybějící funkce v něčem hotovém

    Na druhou stranu jasnou nevýhodou je stále přítomnost globálního locku interpretu, který prakticky znemožňuje použitelný vícevláknový běh kódu

  • 13. 6. 2017 11:08

    jnet (neregistrovaný)

    GIL je skutečně prokletím a jedinou slepou cestou v návrhu Pythonu. A stejně jako zde, se vedou na Python fórech vášnivé diskuze zda zrušit/nezrušit GIL (na těch pythoních mnohem fundovanější než zde). I s GILem lze naprogramovat velice rychlé paralelní programy v případě, že pracujete se soubory ať už z internetu nebo s obrovskými soubory fotek. Tam kde je I/O, je GIL vyblokován. Pro normální threading je to zpočátku s GILem pro začátečníka docela dobré, naučí se pracovat se sdílenou pamětí. Ale GIL lze také vypnout a pak je správa zámků na programátorovi a přinese mu bezesné noci. Vedle toho ovšem má Python knihovnu multiprocessing, která se sdílenou pamětí nepracuje a každý procesor má svou vlastní CPU a svou paměť. A komu je to málo, tak má Python importy OpenMP, MPI4 a další. A vůbec není náhodou, že se Python používá na superpočítačích na špičkové úlohy pro porovnávání sekvencí DNA. Tady zřejmě diskutují lidé, kteří nikdy nic paralelního nenaprogramovali a jen někde pochytili to, jaká hrůza je ten GIL. Na paralelním programování je nejkrásnější a také nejobtížnější procesní a paměťová dekompozice úlohy na procesory a skládání výsledků jejich výpočtů. Poslední umění, které v programování ještě zbylo, to ostatní už je jen robotárna ve frameworcích.

    Ta integrace do různých prostředí je naprosto dokonalá. Já např. píši makra pro Calc v Open Office jen v Pythonu, existuje modul pro vstup a výstup do Calcu a na zbytek už je skvělý Python, žádný Basic.

    Jen taková struktura tuple při práci s databází hodně zabrání napsání kódu, kde je možný SQL injection.

    Napsal jsem si vlastní programy pro správu svého RAID pole v souborovém systému btrfs a včetně vyhodnocování dat SMART a to za dva dny. V C bych to psal měsíc, v Javě 14 dní v diluviálním bashi se mi to vůbec nechce dělat, PERL neumím.

    A víte proč nyní NASA shání programátory v Pythonu? Protože, když máte někde u Jupiteru sondu a potřebujete něco opravit nebo změnit, tak to nejrychleji a nejefektivněji uděláte v Pythonu.

  • 13. 6. 2017 12:11

    sajfi

    Ono, odstranit GIL z CPythonu, to už je vlastně hotové, loni měl o tom Larry Hastings pěknou přednášku na EuroPythonu. A proč tedy sále v aktuální 3.6 straší? No, protože díky němu je CPython rychlý tak jak je. Viz https://www.youtube.com/watch?v=fgWUwQVoLHo.

  • 13. 6. 2017 13:17

    Jenda (neregistrovaný)

    > že se Python používá na superpočítačích na špičkové úlohy pro porovnávání sekvencí DNA

    A tam je to fakt napsané v Pythonu (což se mi moc nezdá, že by si někdo pořídil superpočítač a pak tam provozoval inherentně pomalý jazyk), nebo většinu práce dělá z Pythonu volaný nativní kód (který může GIL obejít)?

    > Jen taková struktura tuple při práci s databází hodně zabrání napsání kódu, kde je možný SQL injection.

    Ostatní jazyky používají pole a nepřijde mi to o moc jiné…

  • 13. 6. 2017 14:27

    JS (neregistrovaný)

    GIL neni slepa cesta, ale tradeoff v navrhu. Python nebyl navrzen na psani multivlaknovych aplikaci, ale predevsim na skripty. Nakonec se to vyresi nejspis nejakym runtime parametrem.