Koukám že po tolika letech s Pythonem se moje nerozhodnost přejít na něco jiného začíná vyplácet. Má tady někdo názor, že Python je stále jednoduchý jazyk? Já moc ne a vidím to kolem sebe, že začíná dělat lidem problémy (začátečníkům a migrantům z jiného jazyka :). Stejně jako dřív C++ nebo Java. Prostě už moc konceptů najednou. Ale to ani asi jinak nejde, pokud to má držet krok s dobou.
10. 1. 2024, 16:49 editováno autorem komentáře
Přesně tenhle pocit mám od Pythonu 3. Problém jsem s tím sice nikdy neměl, přeci jen jsem už psal kdeco v kdečem, ale přestal se mi líbit a v podstatě jsem ho pro své účely opustil. Že to jinak nejde není pravda, třeba Ruby je dlouhodobě velmi konzistentní a opravdu to není žádný zastaralý jazyk.
Jsem rád, že mi to nepřijde samotnému.
Já mám k Ruby dobrý vztah. Zdá se mi i na pohled hezčí. Sám nevím proč ho Python tak předběhl. Jestli za to mohla ta japonská uzavřenost nebo se to moc rychle orientoval na Ruby on Rails. No fakt nevím. V Ruby jsem koukal, že také dost také typing a JIT. Koneckonců typing se tlačí už i v Erlangu. Gilad Bracha tenkráte předpovídal plugable type system a už je to tady :D
Teraz si koledujem o výsmech, ale Python mi príjde ako lingua franca (pidgin jazyk) pre programátorov rôznych iných programovacích jazykov odvodených od Algolu. V predchádzajúcej robote sme to tak aj používali, na prototypovanie algoritmov. Potom sa to samozrejme prepisovalo do Javy a C++. A mohol kecať do toho šéf, ktorý programoval kedysi v Delphi a pomáhal algoritmy spoluvyvíjať. Bola to zaujímavá robota, viac programovanie, než teraz čo robím lepenie frameworkov.
Ruby je trošku už iné, pri tom si treba sadnúť a získať do neho vhľad.
Psal jste někdy v Ruby? Ruby je naprosto geniální jazyk právě co se týká čitelnosti a srozumitelnosti a toho, že se snaží programátora (ve skutečnosti ovšem Matze ale ono to vyjde dost podobně) nepřekvapovat. Python je proti němu hotový akademik. Čili Ruby naopak není autistické a Python naopak není pragmatický. (Ve vzájemném srovnání.)
leave_the_building() unless no_cause_for_alarm()
Je to můj osobní názor, ale tahle formulace a) staví následek před příčinu, b) zaměňuje normální a výjimečný stav. Ani jedno k čitelnosti zrovna nepřispívá... Takže mi nepřijde jako geniální, ani jako prostý překvapení. Má svoje mouchy jako všechno...
Srozumitelné to možná je (ale to je kde co), ale problém je, že to musím přečíst celé abych věděl co to dělá. To samé mi vadí x if y else z
v Python. Ten konstrukt není pro mě přirozený, když ta podmínka je až za návratem. V tomhle pořadí se to nevyhodnocuje, tak nechápu proč by se to tak mělo zapisovat.
Jak píše Jakub, Ruby bylo jednu dobu dost pomalé. To už se sice zlepšilo, ale Python se kvůli tomu stal oblíbenější. Navíc Python měl tradičně lepší dostupnost některých knihoven (matematika a další), které ráda využívala akademická sféra nebo zpracování dat a výpočtové úlohy obecně. A to jde jedno s druhým. Ruby je v tomhle ohledu spíš hobby jazyk.
A Ruby on Rails není Ruby. Ten to Ruby tradičně ledatak prasí.
To je do jisté míry asi pravda. A pak se od něj odklánějí nebo štěpí viz třeba django_rest. Active record má svoje využití a limity. Ale nevím jaký jsou v RoR dnes postupy, plácám, nemám čas to rešeršovat ;) Každopádně nevidím na Ruby, RoR a někom kdo v tom dělá solidní aplikace nic špatného. Kromě zaměření, kde se dnes odchylují mi přijde stejně schopný jako Python. Je to asi o tom k čemu člověk přišel dřív a v jaké doméně se pohybuje. Pro data mi fakt Ruby k ničemu není, respektive investovat čas do vlastního řešení a alternativ k existujícímu Python ekosystému by bylo nad moje síly.
10. 1. 2024, 23:21 editováno autorem komentáře
V tom smyslu, že popírá jeho základní paradigmata, unáší a překopává standardní API atd. atd. V podstatě dělá z Ruby JavaScript. "Využít možností" můžete různým způsobem. Třeba ke zprasení. Ostatně pro dynamické jazyky to je typické.
A jako framework je RoR taky dost těžkopádný. Když už, to už radši třeba Symfony. A to jsem PHP opustil před spoustou let (a pak psal v Pythonu a následně v Ruby).
A co je to ta "objektivnost" určujete vy? To je tedy "objektivnost" jak noha. V Pythonu 3 jsem chvíli psal, ale oproti Pythonu 2 mě bavil podstatně méně a některé zavedené koncepty byly úplně zbytečně přesložitělé a jinak se nezměnilo nic, jen van Rossum začal ustupovat od KISS a myšlenkové jednoduchosti k jakési nesmyslné akademické čistotě. Ostatně je to asi dané tím kdo Python v té době velmi zhusta používal.
A rozhodně to nevydávám za objektivní pravdu. Je to můj subjektivní názor a to jak vidím Python 2 vs. Python 3 já.
A je to tady zase. Zase tenhle tvůj blábol, že Python 3 je zkažený a složitý. Chtěl bych vědět jediný důvod a protože to jsou od tebe jenom bláboly. Protože preferuješ Ruby, což není nic špatného, tak se nemusíš chovat jako spratek a psát tu tuhle blbost pokaždé k diskuzi k Python.
A nyní můžu zrecyklovat své příspěvky z minule:
Je to naprostý blábol, od někoho kdo s tím nikdy nedělal. Protože jestli si někdo myslí, že Python 2 byl lepší než Python 3, tak má asi nějaký problém. A ani u toho print nevidím žádnou výhodu.
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 toho 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!
Tady je odkaz na minulou diskuzi https://www.root.cz/zpravicky/python-3-12-0-je-o-5-rychlejsi/vlakno/2/
11. 1. 2024, 08:57 editováno autorem komentáře
A víš, proč jsem mu tam neodpověděl? Protože ani v Pythonu už nepíšu dlouho protože jsem přešel na Ruby a co se narodily děti, už ani v tom Ruby nepíšu protože programuju jenom pracovně a tam se Ruby hledá bohužel těžko.
Takže co přesně mi vadilo si už jednoduše po těch letech nepamatuju. K ničemu si to totiž pamatovat nepotřebuju. Takže ty se nechovej jako agresivní arogantní troll kdykoliv někdo napíše nějaký názor, co je ti proti srsti, působíš pak minimálně poněkud hloupě.
Ostatně možná by ses měl podívat, jakým komentářem tohle vlákno začalo, třeba ti to pak začne být jasnější, ty "spratku".
Já nemám problém s názory, ale tohle není názor:
některé zavedené koncepty byly úplně zbytečně přesložitělé a jinak se nezměnilo nic, jen van Rossum začal ustupovat od KISS a myšlenkové jednoduchosti k jakési nesmyslné akademické čistotě.
Tohle musíš podložit fakty, a ty tady neexistují, protože to není pravda.
A víš, proč jsem mu tam neodpověděl? Protože ani v Pythonu už nepíšu dlouho protože jsem přešel na Ruby a co se narodily děti, už ani v tom Ruby nepíšu protože programuju jenom pracovně a tam se Ruby hledá bohužel těžko.
Takže co přesně mi vadilo si už jednoduše po těch letech nepamatuju. K ničemu si to totiž pamatovat nepotřebuju. Takže ty se nechovej jako agresivní arogantní troll kdykoliv někdo napíše nějaký názor, co je ti proti srsti, působíš pak minimálně poněkud hloupě.
Ehmm tady už zbývalo jenom napsat, že bys do toho nerad zabrušoval (což by to celé dotáhlo k dokonalosti).
"Jednoduchy" je relativni. Ja mam pocit, ze Python povazuji za ne-jednoduchy spise programatori, kteri ho dobre znaji a pracuji s nim profesionalne. Pro zacatecnika, ktery potrebuje rychle zacit neco psat, je Python imho neporovnatelne jednodussi nez neco jako C++.
Ale jsou i jednodussi jazyky, zkusenost z univerzity (numericke metody) ukazuje, ze ve Fortranu to slo studentum lepe nez v Pythonu...
Zen of Python doporučuje "There should be one-- and preferably only one --obvious way to do it", ale poslední roky vývoje jazyka se mi zdá tohle úplně ignorují. Bobtná to jako C++, jeden PEP za druhým, a v některých aspektech je to totální chaos. Například způsob balení a distribuce modulů se neustále mění, teď je snad 15 různých způsobů jak distribuovat software v Pythonu: setuptools, distutils, setup.py, setup.cfg, pyproject.toml, k tomu pip freeze, poetry, conda a jejich vlastní konfigurační soubory... dnešní větší Pythonový projekt má v kořenovém adresáři bordel jak od Autotools.
Proti tomu Go, Rust a i Zig je naprostá pohádka. Jeden způsob jak to dělat, všechno vypadá stejně, předvídatelně. I Javascript je na tom lépe, přestože si tam konkuruje několik package managerů (npm, yarn, npx).
"Coz je nejspis lepsi cesta" - jako systemak - citation needed!
Pokud nekdo neumi konzistentne a ciste resit systemove zavislosti komponent nema v engineeringu co delat.
Neco jineho je experimentovani - tam je bordel do urcite urovne normalni. Ale prace na spolecnem projektu ktery bobtna vyzaduje poradek, jasnou komponentizaci a udrzovani zavislosti.
Zrovna v případě setup.py -> setup.cfg -> pyproject.toml bych řekl, že v každém kroku bylo to rozhodnutí dobré... Jen se těch dobrých rozhodnutí udělalo celkem dost. Rozhodně bych se nechtěl vracet k setup.py, a i ten setup.cfg byl krok kupředu, ale zlatej pyproject.toml.
Mimochodem celý tenhle bordel se dá vysledovat až k modulu json ve standardní knihovně... Občas si říkám, jestli ten formát nenadělal víc škody než užitku.
Pip, poetry a condu bych taky nepřičítal k tíži jazyku jako takovému... Nechci hájit současný stav*, ale dneska už se díváme zpětně. Žádné rozhodnutí nebylo ideální, ale jenom málokteré bych považoval za vysloveně špatné.
[*] pyproject.toml, build, twine, pip. Já vlastně nevím, co jednotlivé alternativy řeší, protože tohle mi funguje.
Pravda, teď píšu něco většího o Pythonu, tak se v tom vrtám do hloubky a některé novější PEPy jsou minimálně divné (a tipnu si, že o některých z nich vývojáři ani nemusí věděť). A situace ohledně správců projektů taky zatím nevede k jednomu přesně definovanému cíli.
Zase na druhou stranu děcka Python zvládly bez problémů. Samozřejmě vůbec ne do hloubky, ale první pokusy s něčím větším než Scratch jsou v tom pro ně, zdá se, naprosto v pohodě. Dtto MicroPython.
Muj nazor. Python byl od zacatku jednoduchy pro uzivatele, ale obsahoval pokrocile featury, ktere vyuzivaji prevazne autori knihoven. (Pretezovani operatoru, meta classy, hackovatelny mechanismus importu), kterym uzivatele teoreticky nemusi znat. Je otazka, jestli tomu tak skutecne je. Java nebo JavaScript jsou mozna na prvni pohled slozitejsi, ale vetsina uzivatelu zna cely jazyk.
10. 1. 2024, 20:36 editováno autorem komentáře
No ono uz jen pochopit importy je pro hodne lidi nadlisky problem. Balickovani te toho import hell(u) zbaví, ale zase musíš si načíst balíčkování -- takže jak někdo psal -- 15 různých způsobů. Ne není to tak hrozný dnes. Prostě pyproject.toml a venv v základní knihovně. Když to ale nesleduješ tak jsi právě za dva roky dnes úplně mimo. Kdo se např. nedrbal typováním od začátku postupně nebo není v obraze z jiných jazyků, tak dnes na to kouká a nevěří že to je Python (někdy ani Mypy nevěří). Ještě jinak řečeno, jak se Java a C++ dříve hejtovala(o), tak dnes ty jazyky nějak konvergují :D Po normálním programování a znalosti základů ale asi dnes není poptávka. Nedávno mi v jedný frikulínský firme rekli, že hledají nekoho s hard skills. Sami ale lepili ML knihovny v databriksu v noteboocích. Tak nevím, asi stárnu :D
10. 1. 2024, 23:34 editováno autorem komentáře
Já jsem naskočil rovnou do Pyton 3.10 a ten jazyk mi přijde normální. Až když jsem se musel šťourat v legacy kódu tak jsem zjistil, že ještě nedávno to bylo mnohem horší.
Pokrok je tam fajn. Že je konceptů moc najednou vám možná přijde i proto, že znáte i ty starší, které jsou teď obsolete. Tedy ony tam stále jsou, ale už nejsou potřeba. Například List vs list nebo f" vs jak se to dělalo dřív. Tím, že já to "dřív" neznám, tak zahlcen nejsem.
Podobné skoky dělala kdysi na přelomu tisíciletí i Java. A to doslova, kupříkladu změny ohledně generik. Dnes už byste starou Javu používat nechtěl. Stejně jako nováčci nebudou věřit, že v Pythonu byla generika dříve takový opruz a že to byl někdo ochoten používat :-)
https://docs.python.org/3/whatsnew/3.12.html#whatsnew312-pep695