Nejak mi v clanku chybi motivace, proc se ucit Python a nepouzit Perl nebo Javu (z textu jsem ziskal dojem, ze to je neco mezi tim). Zdravim.
Neni to vubec neco mezi tim. Python ma prvky ruznych jazyku, ma funkcionalni prvky, jeho objektovym vlastnostem se Java nebo Perl ani zdaleka nepriblizuji. Perfektni vec je interaktivni interpreter, to byste u vetsiny jazyku marne hledali. Uzasne jsou moznosti vestaveni interpreteru Pythonu do ruznych programu - Python muzeme pouzivat v Gimpu, Xchatu, Blenderu, AutoCADu apod. Snadno se vytvareji rozsirujici moduly v C/C++. Urcite za uvahu stoji. Ale jestlize nekomu vyhovuje Perl nebo Java, proc ne?
Na zaver takovy mirne OT dotaz: Nevite nekdo, jak se spravne vyslovuje Guidovo jmeno? Neexistuje na Internetu nejaka stranka, ktera se zabyva spravnym vyslovovanim jmen nejruznejsich osobnosti?
Motivace? To musite proste zkusit, stejne jako ja. Kdysi, kdyz jsem vyztrizlivel z pocatecniho nadseni nad Objective C a GNUstepem jsem hledal neco, co by dokonale naplnilo moje programatorsky choutky. Podle meho motivace ani moc nutna neni, kazdy programator vyznava to svoje nabozenstvi a jeho osobnost (a tim i vyznani) se meni jen behem par prvnich let zivota. Zaryteho vyznavace Perlu stejne nepresvedcim, ze krasa a uhlednost kodu predevsim, ten vyznava chaos. A chaos je pro nej svaty. U programovani nejde ani tak o to, v cem progrmujete, jako co.
Tato serie clanku by mela pomoc tem ateistickym programatorum, kteri hledaji tu pravou viru pro sebe. Zadny z nich nevi, co hleda, ale vi, ze to chce. Proto ta zdanlive chybejici motivace.
PS: Re: OT: Guidovo jmeno... Mozna neco jako [Kvido], ale nevim, anglicky zrovna moc dobre nevalim, skoncil jsem na urovni cteni manualovych stranek a webu.
Hezky vanoce vsem a stastny novy rok pro priznivce pythonu.
Maly detailik: Guido je Holandan, takze znalost anglictiny nam asi moc nepomuze. Z jeho jmena jsem si jisty jenom vyslovnosti toho "van". Mozna zkusim Python mailing list.
Kazdopadne dekuji za odpoved a preju i Vam hezke svatky a bohatou nadilku.
Zaroven bych chtel na tomto miste poprat hezke vanoce i provozovatelum root.cz a autorum vsech skvelych clanku, ktere tu vysly. Root je super. :-)
Podle kamarada holandana se to spravne cte "Chuijido", ale holandske jmeno to pry neni. ;).
M.
no nemam v Pythone velky prehlad, ale mozte konkretizovat k akym objektovym vlastnostiam P. sa napr. Java "ani zdaleka nepriblizuje" ?
Napriklad nasobna dedicnost - v Jave to ale docela elegantne obesli pomoci interfacu, misto volani metod se posilaji zpravy a objekt sam pri behu programu rozhodne, co se s danou zpravou da delat, objekt muze mit krome atributu a metod spolecnych pro tridu jeste vlastni jedinecne atributy a metody, za behu muzeme do tridy nebo objektu pridavat metody, muzeme za behu dokonce zmenit hierarchii trid atd.
hmm...zaujimave..ako je to v Jave viem... Ale zatial som si nie celkom isty, ci takato volnost (v P.) je to prave orechove... hmm, zmena hierarchie tried za behu programu... V kontexte celeho runtimu ?
No, kazdopadne, nasadili ste mi chrobaka do hlavy, asi sa na to predsa len pozriem blizsie ! Nakoniec Java s Pythonom ide vraj kominovat velmi dobre...(Jython - Python beziaci v JVM ako java bytcode...)
Tak to se jeste kouknete i na jazyk RUBY (http://rubycentral.com/book/index.html). Spoustu veci, ktere jsou do Pythonu pridavany az nyni (viz. novinky verze 2.2) byly do Ruby zacleneny jiz v dobe navrhu. Ten jazyk je naprosto cistej, srozumitelnej a "pure OO"... Vazne to stoji za to....
Dle mého názoru interfaces v Javě slouží, bez ohledu na to co tvrdí marketingová oddělení, nikoliv k řešení problému vícenásobné dědičnosti, nýbrž jako určité řešení nemožnosti rozumné práce s funkcemi/metodami. Java vícenásobnou dědičnost podle mně nemá proto, že dobře udělaná vícenásobná dědičnost (není případ C++) klade jisté nároky na IQ programátora, což je v rozporu s cíly Javy. Pokud vícenásobnou dědičnost jednou za čas potřebujete, máte v Javě smůlu a interfaces v tomto směru ničemu nepomohou.
Python pracuje s funkcemi, a od verze 2.2 i s vícenásobnou dědičností, přiměřeně rozumně. Kromě toho oproti Javě v oblasti OOP nabízí i další věci jako třeba přizpůsobitelný přístup k atributům a metodám nebo možnost přetížení operátorů.
"Pokud vícenásobnou dědičnost jednou za čas potřebujete, máte v Javě smůlu a interfaces v tomto směru ničemu nepomohou."
Viacnasobna dedicnost sa da v Jave vyriesit pomocou vnutornych tried.
...primo na jeho strankach je audio file se spravnou vyslovnosti jeho jmena ;o)
Re OT: Guido van Rossum se vyslovuje nejak takhle: chejdo fan rosym
Nejsou ti Holandani divni? :)
Srovnávat python s Javou nebo ObjC mi příjde docela odvážné. Už jenom proto, že python jaksi nezná slůvka private a protected, bych si to nikdy nedovolil. Nad Perlem Python vítězí čistotou a čitelností kódu. Ostatně ruku na srdce Perlisti, který jazyk se tímto nevyznačuje ;)
Nepritomnost private a protected nijak nesnizuje kvalitu jazyka, pokud se podivate na smalltalk, tak ten je taky nema a jaky je to jazyk.
uhgr
ja nechapu proc se bavite o takovych blbostech.
Kdyz delam v perlu, stejne musim mit styl, jinak se v tom ani ja nevyznam.
Nijak nevidim necistotu v mych programech.
A kdyz nekdo chce prasacky programovat, tak to udela v cemkoliv. ;o)
no myslim, ze mozno bavit sa o cistote/style pisania zdrojakov este moze byt blbost, ale otazka objektoveho programovania je imho o niecom uplne inom...a o prinose OOP snad dnes pochybuju uz len zaryty C-ckari, ktori nechcu opustat zabehane cesticky, vyvojari driverov a Visual Basicisti...;)
To je pravda, ale ruku na srdce: jsou jazyky, kde i celkem normalni program vypada tak, ze kdo perfektne nezna syntax, netusi, co to dela. A Perl je diky spouste syntaktickeho cukru (mnoho zpusobu jak rict totez, ale zaroven nerict vic) neprehledny vic nez dost... Na druhou stranu je to puvodne nahrada za skriptovani v shellu, takze vlastne (ne)citelnost svych predchudcu pouze rozsiruje ;)
Ja tedy nevim, skoly nemam ale jediny "sugar" ktery me napada jakozto necitelny jsou regularni vyrazy pripadne retezcova konstanty psane pomoci operatoru q, qq, qw a qx.
A ve srovnani s tim co tvrdi autor clanku, ze v Pythonu u prikazu print "Je-li za posledním výrazem umístěna čárka, nedojde k vložení znaku nového řadku. " ...
Nejak me nedochazi co je tak necitelneho treba na
die "Can't find the file : $filename" unless -e $filename;
Nebo jaky cukr mate na mysli?
Mam fakt rad python. Je to imho nejlepsi jazyk (ruby mel smulu, ze jsem na nej prisel asi o pul roku pozdeji). Takze je moc prima, ze o tom nekdo pise konecne nejaky cesky navod.
Ad srovnani s javou: java ma ten problem, ze se snazi byt vysoko- i nizkourovnovy jazyk zaroven, a to je podle me velke omezeni. Libi se mi filozofie, kterou vyznava python, napiste to nejdriv rychle v pythonu (vyssim programovacim jazyce)
Na druhou stranu i Python ma nektere principialni problemy (ktere tusim neresi ale ani zminovany ruby). Napr. asynchronni obsluhu udalosti, thready a podobne. Naproti tomu java ma synchronizovane sekce, uplnou podporu threadu a RMI. Co se mi jave ovsem nelibi je hruby ustupek optimalizacim, ze jsou objekty-neobjekty - Cckovite zakladni typy....
Thready jsou skutecne velka slabina pythonu. Je to dano puvodni architekturou, nekdo by musel cely interpret prepsat. Ruby je na tom o dost lepe, aspon to tvrdi autor.
newsy o pythonu : cz.comp.lang.python - ktera je cesky, jinak asi stoji za to procist obcas comp.lang.python
jo a jeste jak tu nekdo rikal neco o citelnosti/necitelnosti kodu, tak mam pocit, ze napsat bez vetsi snahy neco necitelnyho v pythonu je temer nemozne
Mně se naopak ta filozofie, že polovina "pythonového" softwaru je v C, vůbec nelíbí. Do značné míry se tím výhoda použití jazyka vyšší úrovně ztrácí a v určitých okamžicích je pak člověk víceméně namydlený.
Zaujalo me nekolik pripominek. Myslim, ze
python a Perl je neco jineho, perl ma spoutu
zajimavych vlastnosti, python take. Zalezi co
se implementuje. Pokud potrebujete OO, asi nesahnete
po perlu (i kdyz umoznuje nekolik fint, ktere se v P.
delaji dost krkolomne). I ja jsem unesen jednoduchosti
ObjC ale je to neco jineho, je to jen objektova nadstavba C, nic vic. A Java, to, pekny OO jazyk, dost
veci ma veci se da vynutit na urovni jazyka (ono abstract, interface atd)...Ale to jsem odbocil.
Myslim, ze spravny programator by nemel hledat ten
"svuj" jazyk, ten "pravy", spis by mel mit prehled
a umet vybrat ten spravny jazyk na implementaci
toho ktereho problemu...
nazdaaaar. nevim jestli to neni blbost, ale muzu v programech v Pythonu a v Ruby pouzivat dll knihovny? Napriklad podporu OpenGL...
Mimochodem, nejakej serial o Pythonu vysel pred straaaaaaaaaaaaaaaasne dlouhou dobou na serveru www.novinky.cz -- viz napriklad http://www.google.com/search?q=novinky.cz+python&hl=cs
Ja sa k článku dostávam v "ďalekej budúcnosti", v roku 2014 :)
Tiež ďakujem autorovi, rovnako len začínam a prvé kroky vysvetľuje skutočne skvele.