[python] kritika slovniku terminu Pythonu

Petr Mach gsl na seznam.cz
Úterý Prosinec 17 17:17:48 CET 2002


Radek Hnilica wrote:
> On Tue, Dec 17, 2002 at 01:20:47PM +0100, Jarda wrote:
> 
>>>Nekdo prohlasil ze Python je snadny jazyk pro zacatecniky,jak se v nem
>>>lehko a krasne programuje a jak je srozumitelny a vsichni ostatni to po
>>>nem papouskuji, ale skutecnost je jina. Pythonu schazi takove zakladni
> 
> to lehke a krasne programovani musite vztahnout na Python versus
> ostatni jazyky ve sve dobe a kategorii.  Sveho casu byl taky FORTRAN
> jednoduchy a krasny.
To ne, protoze tak se o nem mluvi ted a mluvi se tak o soucasnych 
verzich. A imho Python  takovy neni. Nerikam ze to je uplna spatny 
jazyk, to by me nezajimal a nepsal bych o nem. Je to vyborny skriptovaci 
jazyk a kdyz to vezmu komplexne, tak nicc jineho lepsiho neni, alespon z 
toho co jsem poznal. Ale prave proto mi v nekterych ohledech pije krev. 
Python ma sve nejslabsi stranky ve vecech, ktere maji moderni jazyky
ciste vyreseny.

>>>konstrukce jako je switch, inkrementace nebo preruseni nekolika cyklu
>>>najednou. Osobne bych tuto roli spis priradil PHP, ktere si na nic
>>>nehraje a je opravdu snadne a k zacatecnikum privetive. Akorat ze
>>>to bohuzel je specializovany jazyk a ma mizernou podporu objektu,
>>>vyjimek a podobne.


> Python je Python, je relativne jednoduchy ale nejjednodussi rozhodne
> neni.  Ono taky zalezi jak tu jednoduchost pojmete.  Jestli nutne
> potrebujete switch (case), tak muzete zkusit jiny jazyk.  Ze
Potrebuju a nepotrebuju. Da se to obejit pres if-elif-else, ale vadi mi 
to. Python ma byt udajne velmi jasny a prehledny, doslovne se o nem 
tvrdi, ze ho jsou schopni cist i neprogramatori a pak takovehle lapsy.
Zrovna o switch nikdo nemuze tvrdit, ze by kod zneprehlednoval, spise
naopak.

> skriptovacich je velice pekny Ruby.  A pokud chcete neco opravdu
> mocneho, tak pokud vam nevadi zavorky, tak neni jine volby nez
> Lisp/Scheme (Nejmocnejsi jazyky o kterych vim).
Ruby znam, jednu dobu jsem si myslel, ze z nej ucinim svuj hlavni 
skriptovaci jazyk. Ale Ruby bohuzel neni moc zname, rozsirene a 
podprovane. Tezko se k nemu shani ruzne knihovny a neumi unicode. To ho 
bohuzel diskvalifikovalo. Jinak Ruby je prvni OOP jazyk, ktery se mi 
opravdu libil a dosud jsem nepoznal zadn, ktery by se mi svym navrhem 
libil vic. Bohuzel navrh jazyka neni vsechno. Jako jednodussi OOP jazyk 
se mi libi i JavaScript. Ten vsak take bohuzel neni univerzalni a chybi 
mu zas jine zakladni veci, ma napr. nedostatecnou podporu pro praci s 
retezci a pod.

Casto take slysim hlasku, ze Python byl navrzen jako OOP jazyk. Jestli
to je pravda, tak byl navrzen desne mizerne. Protoze veci jako len(pole) 
do cisteho OOP jazyka jednoduse nepatri. A jestli Python puvodne nebyl 
OOP jazyk, tak pak bych rad vedel, kde se tyto famy berou. Stejne tak 
bych red vedel, proc (at uz Python je jako OOP navrzen od pocatku nebo 
ne) je tak nekoncistentni, ze kombinuje dohromady jak pole.append() tak
len(pole). Chapal bych, kdyby bylo mozne oboji, len(pole) i pole.len,
kde prvni varianta by tam byla z dduvodu zpetne kompatibility, ale 
takhle? Pak mi to rozhodne nepripada jako jazyk dobry na vyuku.

Lisp/Scheme neznam. O lispu se nehovori jako o jazyku na vyvoj software, 
spis jako o ad on jazyku pro skriptovani, takze jsem ho ani nejak 
nezkoumal. Myslite ze je na neco takoveho vhodny? Pujde v nem jednoduse 
psat rozsahlejsi veci, ma dostatecnou podporu pro moderni svet (soucasne 
knihovny, GUI, unicode)? O scheme akorat vim ze existuje, to nesvedci o 
nicem moc dobrym. Nemusi to nutne znamenat ze samotny jazyk je spatny, 
bohuzel samotny jazyk neni vsechno. Jinak bych zustal u Ruby.

>>switch - myslim, ze casem bude, Python se vyviji
No jo, ale jestlize to je tak stary jazyk, jak se zde predklada 
(srovnanim s Fortranem), pak by uz takovou zakladni konstrukci mel davno 
mit. Navic to je jen priklad, me proste v mnoha ohledech prijde Python 
desne tezkopadnej (treba i tim rozlisovanim slozenych prikazu odsazenim 
kodu) a zastaralej. Jenze pak zas ma takovy veci jako jsou iteratory a 
tak nevim co si o Pythonu myslet. Iteratory jsou bezva, akorat si nejsem 
jist, nakolik je kod s iteratory pristupny a srozumitelny zacatecnikum.

> 
> Vyviji, Python drive a nyni je veliky rozdil.  Muzete si pockat ale
> nikdo vas nemuze nutit.
To bych mohl cekat az do smrti. Na Perl 6, ktery ma resit mnoho jeho
problemu a na nove objektove PHP, na nove Ruby s Unicode.

>>inkrementace - v cem je i++ lepsi nez i += 1, kdyz odhledneme od toho, ze
>>inkrementovani je
> 
> 
> Just a habit.
> 
> 
>>v assembleru rychlejsi nez scitani? Pokud jde o prefixove a postfixove
>>inkrementovani, to bych
>>do Pythonu rozhodne netahal...
Proc byste to tam netahal? Imho je to prehledne a nikdo nebude mit 
problemy s chapanim. Python by mel mit nejaky cil, poslani. Bud je cilem 
co nejjednodusi jazyk, kteremu se musi rict vse polopate (explicitne)
a co nejnazorneji (tedy nejdriv zmenim promennou a pak ji teprve 
pouziji), ale pak to bude hodne ukecanej a tezkopadnej jazyk (a imho 
tohle kod znecitelnuje taky a ne malo) a pak si myslim ze se nebude 
hodit na nic jineho nez hrani. A nebo je cilem moderni dynamicky jazyk 
pro snadny a rychly vyvoj skutecne pouzitelneho software a pak tam 
takove vci patri. A imho ma Python blize k tomu druhemu. Ma na to krasne 
vlastnosti jako "bajtovy kod", solidni rozsireni a podporu (coz je hlavi 
duvod proc mu nyni davam prednost pred Ruby), moznost "zkompilovat" 
program do spustitelneho balicku.

Jeste jedna vec mi na Pythonu chybi a at hledam jak hledam, nenachazim 
reseni. Chtel jsem udelat program, ktery by fungoval v textovem rezimu a 
byl prenositelny mezi windows a linuxem. Byl jsem velmi prekvapen, ze 
Python pod windows neumi curses a ani jej tomu nelze naucit. Nenasel 
jsem ani zadnou jinou univerzalni "TUI" knihovnu. Mel by pro me nekdo 
nejakou radu jak na to?

> Dle meho nazoru to snizuje citelnost programu.  Jsou jine zpusoby jak
> zkratit a zprehlednit zapis programu, pouzit jiny jazyk (ML, Haskel)


>>preruseni nekolika cyklu najednou - da se obejit tou vyjimkou. Osobne mi to
>>pripada porad
>>lepsi nez goto.
Nez goto jo. Ale napr. reseni z PHP (napr. continue 2) mi prijde idealni
a maximalne prehledne.


> Ted se mozna netrefim presne, konstrukce call-cc
> (call-with-current-continuation) je vasim "Swis army knife".  Jeste jsem
> do ni nepronikl.  POZN: Nevim je-li v Pythonu pritomna.
> 
> 
>>Pokud mate pocit, ze vam Python vicemene vyhovuje, ale chtelo by to sem tam
>>neco vylepsit,
>>muzete to navrhnout (ale tady to nepomuze, my vyvoj Pythonu neridime :-)
To muzu, ale obavam se, ze to bude narazet na tu legendu o jasnem a 
citelnem kodu Pythonu, ktera by se tim narusila a ktera imho uz neni 
pravdiva (jestli nekdy byla).

Petr Mach




Další informace o konferenci Python