Jestli Python bude takhle neustále zrychlovat, tak můžou všechny ty céčka, rusty, goučka jít do kopru. Sorry jako :-D
2. 10. 2023, 19:28 editováno autorem komentáře
Také by mě to zajímalo, jakou architekturu zvolil a kam se dostal.
Známý, který se živí 3D modely pro AAAčkové hry, když si chtěl udělat něco svého, tak sáhl po Godot Engine a Pythonu, ale myslím, že to zamrzlo na nedostatku času.
Python je v různých rolích použit například ve hrách:
Civilizace IV, Battlefield 2, Sims 4, World of Tanks, EVE Online, Mount & Blade, ...
Buď má roli v ekosystému hry, například pro tvorbu modů, editor map, správa dat o hráčích, nebo jako binding nad herním enginem.
EVE je v tomhle směru rozhodně zajímavá. Používali stackless Python.
https://news.ycombinator.com/item?id=31298679
EVE je obdivuhodný projekt, který prošlapával cestičky neznámým prostředím.
Jeho problém vidím původním návrhu, který nepočítal s masivní decentralizací, která by umožnila plynulé škálování.
Tehdá, před 20 lety, byl výběr řešení pro monolit aplikaci dost omezený, a z toho co se nabízelo vybrali právě Stackless Python.
Osobně si myslím, že v případě EVE by nepomohlo ani kdyby si na to nechali postavit vlastní ASIC a programovali to v assembleru.
Ale kdo to mohl tušit, jaký úspěch tento MMORPG projekt bude mít.
To, že ta možnost existuje, neznamená, že se využívá. Tj. z frekvence zpráviček na Rootu nejde odvodit, zda se opravdu tak zrychluje jen Python nebo i jiné jazyky/prostředí.
Mimochodem, ono je úplně jedno, jak rychlý ten interpret Pythonu bude, stejně se vždycky najde někdo, kdo napíše komentář, že je to pomalé, protože je to interpretované. Pravidelně se to objevuje u JavaScriptu, Javy, Pythonu i dalších jazyků.
Python je výkonnostně pořád hodně pozadu. Jiné jazyky (např. js, php, ruby) šly výkonově dopředu a python za více než 10 let nic. Z dříve rychlého jazyka (výrazně rychlejšího, než třeba php) byl nedávno suverénně nejpomalejší. Je dobré, že se konečně někdo probudil, ale ta ztráta tam ještě je a golang a rust jsou opravdu v nedohlednu.
3. 10. 2023, 09:53 editováno autorem komentáře
To není měřítko. Popularita za dva roky je důsledek dnešních rozhodnutí a pokud začne klesat, tak už bude pozdě to zvrátit, protože uživatelé našli lepší cestu a návrat k Pythonu by viděli jako krok zpět. Je to vidět na Ruby. Jeden čas velmi populární jazyk díky Ruby on Rails a dneska po něm neštěkne ani pes.
Nic netrvá věčně. Klidně se může stát, že Python něco z jeho pozice vyšoupne, ale nebude to jistě ani PHP a ani Ruby, pravděpodobně ani JS/TS a ani Go. Pokud ale rychlost běhu nebyla zásadní problém před 2 roky, nebude ani za 2 roky. Nesesadila ho ani Julia a IMO se to nepovede ani Mojo - to se ale bude snažit být s Pythonem 100% kompatibilní, takže co? Python bude pořád ve hře.
Problém Julie podle mě v rozšířenosti a rychlosti vývoje v obou jazycích. Pokud chci něco jednoduchého, tak Pythonových implementací najdu desítky a u části kódu je úplně jedno jak je rychlý, protože je na jedno použití nebo řeší jednoduché problémy (Přeparsuj log s ladícími výstupy z C++, udělej grafy/spočti statistiky, porovnej s referencí, vygeneruj souhrn do HTML a PNG obrázků). U Julie hotová řešení dílčích problémů, které stačí přiohnout najdu s menší pravděpodobností.
Jediné, kde mi Julia dává smysl jsou simulace, fyzikální výpočty a zpracování obrazu, pokud už to nechci napsat rovnou v C++ a zároveň to neřeší modul v Pythonu. Což jsou dost okrajové případy.
To, že je Babiš populární ještě neznamená, že je nejlepší a vice versa :-)
Gartnerovci na tu popularitu mají takový graf, do kterého pásne většina technologií. Hype - hluboký pokles - pomalý růst - pomalý pokles.
A s tím hodnocením RoR je to přehnané. V mé bublině to jede jako nikdy před tím (včetně aktuálních témat jako je AI, grr zkřížily se mi prsty). Podle mých zkušeností neexistuje aktuálně levnější technologie na výrobu obecných webových aplikací jak RoR.
Jeho poplarita nie z jeho vyvoja. Ale z toho hypu okolo umelej inteligencie. Kde sice kniznice pre AI v nom napisane niesu (su v C/C++) ale ako jediny dalsi wraper maju python (sice by mohol byt aj v Ruste, Jave, C#,... ale ostatne kniznice mau Python tak Python). A python vdaka tomu, ze je to lepsi bash dokazu zvladnut aj zacinajuci programatori, ktory tiez naskocili na tento hype.
Ked som bol na strednej rovnake to bolo s PHP, len ten hype bol okolo Web 2.0.
3. 10. 2023, 12:44 editováno autorem komentáře
Ano, i Haskell, Rust nebo C++ lze rozjet v rámci Jupyteru, ale nevím, kolik lidí to reálně používá. Předpokládám, že latence a další věci nebudou zdaleka tak příjemné jako u Pythonu. Faktem je, že jsem si zvyknul dělat spíš skripty než notebooky v Jupyteru, ale na prezentaci/výuku je Jupyter nebo IPython s vymakanou možností vkládání dost fajn.
A hlavně, v Pythonu udělám pip install, ipython, import a hned můžu udělat jedno konkrétní volání, které zrovna potřebuju. V mnoha jiných jazycích je to všechno daleko těžkopádnější.
Tak to mě samotného překvapilo. Nedávno jsem dělal takovou blbinku – procházení stromu a k tomu nějaké string operace. Primárně v ruby (3.2.2+jit), ale chtěl jsem demonstrovat synovi rychlost v Cčku a nakonec došlo i na python (3.11.5). A tam jsem se zasekl, protože výsledku jsem nemohl uvěřit, až jsem to na druhý den vzal do práce na konzultaci, kde mi to potvrdili. Ten rozdíl byl násobný v neprospěch pythonu.
Na druhou stranu rychlost běhu není vše a pokud by to mělo být to jedinné, na čem stojí popularita, tak to za moc stát nebude (IMHO).
To bude spíš problém práce s procenty. Je třeba věnovat pozornost tomu, co bylo základem, proti kterému se to zrychlení počítá.
Jablka zlevnila o 50%
Hrušky o 40%
Švestky o 15%
Celkově ovoce zlevnilo o 105%.
Asi chápu, že když se něco příliš tlačí, že se proti tomu zvedá odpor.
Já si vybral Python před cca 1/4 stoletím a prošel jsem s ním cestu od neznámého batolete, přes 2pubertu3 až do dnešního zralého, produktivního věku.
Myslím, že tu pozice kde teď je, si plně zaslouží, se všemi jeho klady a zápory.
Za hlavní důvody jeho popularity považuji dobrý základní návrh, filozofii, široký ekosystém, a zejména komunitu, která se kolem něj utvořila. Jako součást této komunity jsem i já, maličké kolečko v soukolí, věnoval tisíce hodin, abych s Pythonem naučil další lidi.
Že to souvisí s dobrým návrhem a zvlášť filozofií bych si tedy jist opravdu nebyl. Třeba takové Ruby má jak návrh tak filozofii podstatně lepší, ostatně proto taky vzniklo. Rozhodující byly (a platí to obecně) jiné věci, typicky třeba to, že prostě byl ve správný čas po ruce a nebyla lepší alternativa (například to Ruby bývalo proti němu pomalé atp.) a tak se rozšířil.
A jinak 2puberta3? Já osobně stále považuji (až na některé glitche) Python 2 uživatelsky za příjemnější než Python 3.
Když Ruby bylo na špici, vycházela spousta článků o tom, že Ruby vzalo to nejlepší z Pythonu a Perlu a je tudíž výrazně lepším jazykem. Dal jsem mu šanci a zkoušel mu přijít na chuť. Výsledek: Perl mě neoslovil, Python ano, Ruby zase ne. Že se někomu nelíbil Python a proto si vymyslel Ruby, přece neznamená, že s ním budou všichni sdílet názor, že Ruby je lepší.
Nechápu, jak se někomu může líbit self v metodách OOP. To je jako si libovat, jak je Cčko krásný objektový jazyk. Zrovna tak dichotomie datových typů (něco je objekt, něco není objekt….). Přinejmenším na tyhle 2 základní věci nemůže být Python opravdu hrdý. Obojí jsou pohrobci návrhu z 80. let. Ruby tímto netrpí. Z tohoto pohledu je koncepce Ruby jednodušší a čistší.
Nejsem Pythonista, ale co tak z povzdálí mohu sledovat, jak glorifikace Pythonu se v drtivé většině případů opírá pouze o odsazování.
Python není konzistentní ani v té explicitě. Nevím, jestli má tvoje tvzení o explicitě Python v manifestu, ale fakticky ani nemůže a ani nechce, jinak by pozbyl zbytky své dynamiky, pokud se chce řadit mezi dynamicky typované objektové jazyky.
A rozhodně se neshodneme na důvodech popularity, protože kdyby to bylo explicitou,, tak vyhraje asm. O popularitě jsem tu už psal.
Tak napiš, které? Že print není funkce? Nebo, že string není unicode a je str a bytes? Nebo, že kolekce vrací iterátory místo listu? Nebo, že odebrali <> a místo toh musíte používat !=? Právě špatný návrh byl důvodem vytvoření nové verze. Opravdu čekám na odpověď co je v Python 2 příjemnější než v Python 3!
To by ale fakt dobré říct v čem. Třeba práce s řetězci byla o něco "příjemnější", když člověk měl představu, že se vejde do nějakého ascii bytestringu. Jenže tohle pro práci se skutečnými řetězci v 21. století nedává vůbec smysl. A přesně tohle mě třeba na Ruby dost iritovalo - ty tanečky ohledně Unicode byly až trapné. Nevím, jak to řeší teď, ale bývalo to takhle: https://www.root.cz/clanky/ruby-a-unicode-co-prinese-chystane-ruby-1-9/nazory/
Jako že bych měl vyměnit programovací jazyk, který mi vyhovuje, za jiný, protože by si někdo jiný mohl myslet, že jsem se stal obětí, zákeřně dobře fungujícího nástroje?
No nevím...
Jistou závislost tam vidím, to ne že ne :) , ale co jsem tak vystrčil růžky jinam, třeba do ekosystému .Netu nebo Node.js , tak jsem se s radostí vrátil zpět.
Ale třeba takový Rust, ten se mi pro řadu vlastností líbí.
Správný čas, kdy byl po ruce, to jistě hraje velkou roli.
Ruby jsem začal okukovat až někdy 2008-2010, především kvůli Rails a "rychlé" tvorbě webových aplikací, ale to už jsem jel v Djangu.
Řada věcí se mi v Ruby líbila, třeba importy, instalace balíčků, věci kolem distribuce a nasazení vlastních aplikací, ale samotný jazyk mě neoslovil natolik, abych vůli tomu upozadil Python.
Vzpomínám na jednu přednášku:
Snakes and Rubies
https://www.youtube.com/watch?v=cb9KDt9aXc8
Co se Pythonu 2 týče, ještě dnes mám v provozu historické aplikace, které frčí na 2.7, ale po létech spánku, kdy se řada velkých projektů držela dvojky, jsme se posunuli dál.
Na dvojku můžu koukat nostalgicky akorát v tom, že některé nové prvky a syntaxe nastavují vyšší laťku pro začátečníky a posouvá se hranice dopředné kompatibility.
Mě si Python původně přitáhl jako náhrada za batch scripty v DOSu, Win9X, a bash scripty a Perl v Linuxu. Postupně mi na většinu věcí nahradil Cčko, Javu, Pascal (Delphi), až došlo i na Django a náhradu za PHPčko (ale předtím jsem se ještě pěkně povařil v pekle zvaném Zope/Plone).
Nedávno jsem na našem Pyvu, na přednášce o programování pro mikrokontroléry, viděl uvnitř Micropythonu embedovaný assembler, a bylo to fakt rychlé. Tak, možná, kvůli pár místům, kde to dává smysl, opráším znalosti z osumdesátek.
https://docs.micropython.org/en/latest/pyboard/tutorial/assembler.html
Samozřejmě jsem bash scripty neopustil úplně.
Ale když se tam začne objevovat větší logika, začne se to spíš podobat aplikaci, např. si za běhu vytváří další soubory se scripty, které zpětně, s parametry volají ten původní,... nastal čas se, v rámci vlastního duševního zdraví, poohlédnout se po něčem méně schizofrenním.
Obvyklá otázka, proč?
Jinak nad MicroPythonem běží i PyBricks pro LEGO. Hobby scénu určitě Go nevytlačí. Podle mne má MicroPython vcelku budocunost i v oblasti prototypů.
Tak on je Python takový tenký obal nad C v podstatě. Kdo se chce hrabat níže, i tady má tu možnost. Go je dle mého takový ještě menší ostrůvek ve scvětě MCU.
Mne leží v hlavě ten Forth nebo Erlang/BEAM na těhle mikrostrojích. Mohla by to být stranda ;)
Jo ještě si vzpomínam, že mi nabízeli job programování pro karavany co mají všechny služby v tom autě v Go... celkem zajimavé. Ale tam byl rychlý ARM.
4. 10. 2023, 18:47 editováno autorem komentáře
Produkčně jedu převážně neveřejné cloudové aplikace na zakázku od top managementu firem. Trochu Djanga, hodně vlastního Pythoního kódu, ždibet html, css a víc než bych si přál JS, který se snažím izolovat co to jde a krmit to daty z Pythonu.
Ale v roli učitele používám MicroPython pro Lego EV3 a Arduino UNO.
Až budou zpracovaná videa z toho našeho Pyva, tak tam je spousta cenných informací od lidí, kteří si s tím hrají o dost víc, až na úroveň vlastních driverů pro nepodporované mikrokontroléry.