Portál AbcLinuxu, 6. května 2025 00:57

Bože to je opruz.. proč nejsem chytřejší..

23.9.2006 09:42 | Přečteno: 1312× | Za vším hledej Linux

..abych si třeba uměl hravě doprogramovat konverzní pluginy? Takhle kolikrát jak idiot soubory ukládám, importuju, exportuju a zkouším co vyleze nejlíp. Mám takovou touhu - porozumět si s Pythonem. Čím to, že prozatím každý pokus skončil tím, že jsem se pokorně vrátil k shellu?

Koukal jsem se na dokumentaci k Pythonu - novinky oproti verzi 2.4 a tak nějak jsem si uvědomil že to bude nejspíš tím, že se ve spoustě vychytávek a možností už prostě ztrácím. Tím že v shellu pracuji prakticky neustále, mám zafixovánu řadu věcí, které bych musel v Pythonu kousat od píky. V syntaxi bashe se žádné revoluce nekonají - poslední "revoluční" změnou byla práce s poli - takže pohoda klídek. Někomu se možná bash jeví jako dinosaurus, ale pro mne je zatím přijatelnější a o chlup delší čekání na zpracování skriptu mě ještě neubíjí.

Python se prudce vyvíjí a především rozvíjí. No jo. Jenže nemám valné chuti neustále sledovat špici vývoje, podobně jako můj kámoš u PHP, CSS atp., abych mohl včas ošetřovat eventuální změny mezi verzemi.

Taky je takovým klackem na cestě fakt, že některé shodné či podobné věci se nazývají v Pythonu (a prakticky téměř v každém jazyku) terminologicky jinak. Do toho ještě kromě anglických pojmů české, ev. polské, ruské,.. Prostě udržovat pro jednu a tutéž věc několik zástupných pojmů je už na můj mozek asi trochu moc.

       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

23.9.2006 10:50 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Odpovědět | Sbalit | Link | Blokovat | Admin
To by ti mohlo pomoci — syntax across languages jako vcelku zajímavé shrnutí syntaktických rozdílů mezi jazyky.
When your hammer is C++, everything begins to look like a thumb.
23.9.2006 11:39 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Odpovědět | Sbalit | Link | Blokovat | Admin
Hmm, tak tento problem ma asi kazdy clovek, co sa pokusal programovat v niecom, na co nie je zvyknuty.

Reku, ze ked pouzivam linux, tak sa naucim bash. S nadavanim som presiel naspat k tcsh.

Python je dost podobny jave, preto mne ako javistovi nieco spravit v pythone nerobi az taky problem. Len na objektove rysy pythonu si niekedy zanadavam.

Jazyk treba pouzivat taky, aky sa cloveku viac hodi.(Pokial neprogramuje napriklad moduly do kernelu alebo nieco do prostredia kde sa vyzaduje jeden konkretny jazyk).
23.9.2006 12:29 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Python je dost podobny jave, preto mne ako javistovi nieco spravit v pythone nerobi az taky problem. Len na objektove rysy pythonu si niekedy zanadavam.
Můžeš to trochu rozvést? Nejlépe ukázat příklad, kde je Java podobná Pythonu? Případně, které objektové rysy Pythonu ti vadí.
When your hammer is C++, everything begins to look like a thumb.
23.9.2006 12:52 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Ano, taky by mě to zajímalo. :-) Už jsem si stihl za těch pár let, co o jazycích hlouběji uvažuju, všimnout, že mezi nimi může být podobnost i „podobnost“. :-D
23.9.2006 13:23 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Ale pánové.. tenhle blogpost je o tom, že můj mozek narazil na své hranice a ne o tom co je či není lepší...
23.9.2006 13:38 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
To si jenom myslíš … :-D Totiž, to, že Tvůj mozek narazil na nějaké hranice. To chce jen odstup a rozhled. ;-) Jestli Tě děsí Python, co teprve líné vyhodnocování ve funkcionálních jazycích, RPN jazyky a lispovská makra? :-D
23.9.2006 15:11 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Neříkám, co je lepší. Ale, pokud se dá programovat v Javě tak, aby to bylo podobné Pythonu (Jython neberu), chci to vědět :-D
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 17:07 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Nj. Podobné a "podobné". Proste človek pochopí paradigmu objektovo orientovaného programovania tak, že programuje v jave. Potom mu nerobí taký problém programovať v pythone, ako keď prechádza zo shellu.

Proste treba hlavne prekonať ten prechod medzi paradigmami. V C++ som nerobil skoro nič, ale asi sa na python podobá menej. Keďže je to vlaste iba vylepšené c-čko (napriklad neposkytuje reflexiu).
24.9.2006 18:37 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Já OOP pochopil až v Smalltalku :-D. V Javě to pro mě byly pořád jenom lepší struktury z C a něco, kam si můžu beztrestně schovat globální proměnné.
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 22:10 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
len mala technicka poznamka. smalltalk je objektovy jazyk, nie objektovo-orientovany.
24.9.2006 16:55 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Čo mi vadí:

1) riadenie prístupu k metódam a atribútom. private(__x) ostatne public.

nejake jemnejšie riadenie prístupu je proste v pytone problém zoznam atribútov je v pythone nejaký slovník, do ktrého sa dá pridávať aj za behu
x = mojatrieda()
x.atribut = 3
x.atrtbut = 7

Čo je niekedy dosť blbé pri preklepoch.

2) preťažovanie metód - proste podľa typu argumentov je problém preťažovať. Všetky tutorály to potom riešili cez pridané vetvenia pomocou if a zisťovanie triedy objektov pomocou RTTI.

3) všetky metódy aj atribúty sa dajú používať v statickom kontexte. čo môže tiež viesť k srandovným chybám.

4)polymorfizmus - počul som, že aj v pythone ide využívať, len som doposiaľ na to neprišiel, ako. Niečo na spôsob v jave:

Jidlo zvanec = Kobliha("s marmeládou");


Možno niektoré veci vyplývajú len z mojej neznalosti, ale musím podotknúť, že mám rád aj javu aj python. Aj spomínaný jython - keď mám možnosť za cenu rýchlosti používať v pzthone java api.

Inak, čo majú spoločné ? Oba sú to objektovo orientované jazyky. Keď si človek odmyslí niektoré kľučové slová z javoského kódu, pridá niektoré iné "fajnovosti" dostane pythonovský kód. Keď sa v jave používajú kolekcie, je to ako s pythonovskými listami a slovníkmi. Python nie je staticky typovaný. Oba jazyky su inšpirované rovnakými predchodcami. Javu kompilije človek do bytekodu pred spustením aplikácie, python sa kompiluje za chodu(alebo aspon po spusteni).

Proste, môže to byť len zdanie, ale python sa mi javí byť menej ukecanou trochu drevenejšou javou. Je to podľa mňa veľmi dobrý jazyk na prototypovanie javovských aplikácií. Javu som požíval zatiaľ štyri semestre v škole. Python sa učím doma na kolene.

Stačí takéto vysvetlenie ?
24.9.2006 16:57 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Ano, mam tam najmenej jednu chybu:

Jidlo zvanec = new Kobliha("s marmeládou");

:)
24.9.2006 19:15 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
1) riadenie prístupu k metódam a atribútom. private(__x) ostatne public.
Tohle mě taky napadlo. Je fakt, že se mi to moc nelíbí. Třeba v Smalltalku je tohle vyřešené moc hezky. Zde se třeba Java se svými getXXX/setXXX vůbec nechytá a žádné properties se asi nechystají.
x = mojatrieda()
x.atribut = 3
x.atrtbut = 7
No a to je důvod, proč obecně nemá cenu psát v dynamických jazycích nějaký kód, bez psaní testů :-). Ale v Pythonu (od verze 2.4) se to dá ručně vyřešit
#setter
def __setattr__(self, name, value):
if not name in self.nejaky_seznam_atributu:
    raise AttributeException
exec('self.__dict__[%s] = %s' % (name, value))
#getter
def __getattr__(self, name):
if not name in self.nejaky_seznam_atributu:
    raise AttributeException
exec('return self.__dict__[%s]' % (name,))
Komu se nelíbí podtržítka, nemůže mít rád Python :-D
2) preťažovanie metód - proste podľa typu argumentov je problém preťažovať. Všetky tutorály to potom riešili cez pridané vetvenia pomocou if a zisťovanie triedy objektov pomocou RTTI.
Ono to totiž podle typu nejde. Protože je to dynamicky typovaný jazyk, takže se bez ručního větvení člověk neobejde. Jenže v Pythonu se preferuje duck typing a pokud člověk musí zjišťovat instance, tak buďto píše nějaký wrapper, anebo spíš myslí pořád staticky.
3) všetky metódy aj atribúty sa dajú používať v statickom kontexte. čo môže tiež viesť k srandovným chybám.
Opět, podle mého názoru se v dynamických jazycích bez unittestů nedá vážně programovat. Ovšem tohle je spíše důsledek toho, že je samotná třída objekt. Ne nadarmo Smalltalkeři vytvořili SUnit.
Jidlo zvanec = Kobliha("s marmeládou");
Tento kód nedává v dynamicky typovaných jazycích smysl, protože v nich jsou typové informace implicitní. Jsou součástí reference a nedají se změnit. Ovšem právě proto jsou objekty polymorfní už z principu, protože to, co je podstatné jsou metody (zprávy) a ne typy. V terminologii Javy, každá metoda implementuje vlastní rozhraní (otřesná představa) :-D Obecně, pokud nějaký objekt rozumí potřebným zprávám, je zbytečné se pídit po jeho typu, ale prostě ji zavolat (no a i proto je nezbytné testovat).
Keď sa v jave používajú kolekcie, je to ako s pythonovskými listami a slovníkmi. Python nie je staticky typovaný. Oba jazyky su inšpirované rovnakými predchodcami. Javu kompilije človek do bytekodu pred spustením aplikácie, python sa kompiluje za chodu(alebo aspon po spusteni).
Až na to, že v Javě si nemůžu obsah pole, nebo seznamu deklarovat staticky :-). Navíc mi v ní chybí ntice. Takové a, b = nejaka_funkce() je paráda. Myslím, že Python není inspirován C++ jako Java, spíš C. Jeho kořeny jsou spíše v Module. A oddělení java a javac mi osobně dost vadí, protože také neposkytuje žádný exec
Stačí takéto vysvetlenie ?
OK, díky ;-). Jak sleduju na sobě, největším problémem není ani tak syntaxe, ale to, že prakticky každý jazyk vyžaduje odlišný styl programování a je zbytečné se ho snažit přiohnout k něčemu, na co vhodný není. Třeba takového Forthu se bojím dodnes a asi se na tom nic nezmění :-D
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 19:20 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
1) riadenie prístupu k metódam a atribútom. private(__x) ostatne public.
Tohle mě taky napadlo. Je fakt, že se mi to moc nelíbí. Třeba v Smalltalku je tohle vyřešené moc hezky. Zde se třeba Java se svými getXXX/setXXX vůbec nechytá a žádné properties se asi nechystají.
Napsal jsem to blbě. Třídní proměnné jsou ve Smalltalku vždy private, zatímco selektory zpráv (něco jako metody) jsou vždy public.
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 19:35 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
No co na to říct? Mikosi, půjč mi tu svěrací kazajku, tady pán bude jejich milovník… :-D Ale Michal Vyskočil to už rekl za mě, já jen dodám snad jen to, že řízení přístupu k metodám není ani ve Smalltalku a kdyby ho člověk potřeboval v Pythonu (nechápu ale proč?), asi by na to šel napsat při troše snahy dekorátor nebo možná ještě lépe metatřída. Proč místo objektově orientovaných jazyků nepřejdete rovnou na jazyky objektové? ;-)
24.9.2006 19:47 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
No, já se nemůžu dočkat na ten flamewar, který se zaručeně strhne, až vyjde 6. a 7. díl mého seriálu o překladačích. Teď jenom lituju, že ty skutečně zajímavé jazyky (Lisp, Smalltalk, Forth, Prolog nebo třeba Haskell) vůbec neznám :-)
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 22:20 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Nj. už si dám pozor pred tým, než na abclinuxu niečo napíšem :D Ale diky za rozbor, bol poučný aj pre mňa. Kiež by všetky flamewary boli takéto :D
25.9.2006 09:04 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
To byl flamewar? Já myslím, že ne ;-). Mě skutečně zajímalo, jestli se v Javě dá "pythonit" (wov, to je slovo) :-D. Znovu opakuji, největším problémem je, že se musí ke každému programovacímu jazyku přistupovat jinak a ne ohýbat jazyk podle toho, jak je člověk zvyklý. Z toho plyne většina nepochopení.

Žel bohu, já tím trpím taky, když si Javu snažím přiohnout více k dynamicky typovaným jazykům :-)

BTW: není zač se omlouvat. Na abclinuxu může psát každý. Pokud jsem ti pomohl, jsem jenom rád.
When your hammer is C++, everything begins to look like a thumb.
24.9.2006 23:59 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
:/ preco hned urazate ? nechapem.
25.9.2006 00:20 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Opravdu mi přijde, že používat Javu je svěrací kazajka, přinejmenším na mozek. Tedy alespoň z Vašich dotazů totiž plyne, že vám Java (nebo jiný jazyk?) vnutila pokřivený význam některých slov, jako je „objektový“, „polymorfismus“ a podobně. Nemohla se mi neasociovat ta věc s tím, jak Thinghwath nedávno chtěl Mikosovi nasadit svěrací kazajku. :-D Jestli to namísto bodrého rýpnutí vyznělo jako urážka, pak se omlouvám. Jako člověk, který nikdy nevynechá příležitost k žádné legraci včetně té ze sebe bych to od jiného takhle nikdy neinterpretoval. ;-)
25.9.2006 00:43 balino
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Nechápal som súvislosti, aký mikos, aká kazajka :) máte pravdu, v každý nosíme svoju zvieraciu kazajku :)

Teda, každý vidíme svoj malý kúsok sveta. Som odchovaný na C a Jave, tak všetko posudzujem podla nich.

So smalltalkom (najobjektovejším jazykom na svete) som sa chvíľu pokúšal robiť, ale akosi som sa nevedel dostať cez tú bariéru, že všetko je buď správa alebo objekt. Tak som rýchlo prestal :)

To je asi ako vyššie spomínaný prechod od procedurálneho programovania k oop. Tak toto je od oop k objektovému :)

Toš mám javistické chápanie pojmov. n.j. :D
25.9.2006 09:10 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
So smalltalkom (najobjektovejším jazykom na svete) ...
Jistí lidé tvrdí, že to je self :-)
When your hammer is C++, everything begins to look like a thumb.
25.9.2006 16:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Bože to je opruz.. proč nejsem chytřejší..
Well, I also suffer from excessive Self-confidence … :-D

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.