Prikaz ++i by mel byt prohlasen za syntakticky nespravny (RE:[python] kritika slovniku terminu Pythonu)

Jan Samohyl samohyl na webseek.cz
Úterý Srpen 26 20:06:51 CEST 2003


On Tue, Aug 26, 2003 at 01:09:54PM +0200, Petr Prikryl wrote:
> Jan Samohyl napsal...
> > pepr napsal...
> > > [...] Netvrdím, ?e se "?ádná
> > > funk?nost" p?íkazu ++i nedá rozumn? vysv?tlit. Tvrdím jen
> > > to, ?e je to matoucí. Pokud chcete psát záporný výraz, asi
> > > nenapí?ete nikdy ---x. Pokud ale pracujete v C/C++, pak
> > > se velmi ?asto seknete a napí?ete ++i místo i += 1. 
> > 
> > To je prave ono, matouci je to jenom pro toho, kdo zna C/C++, 
> > jinak ne. Myslim, ze C/C++ je tady ve skutecnosti spatne, a ze
> > pouzivani ++x misto x+=1 nebo x++ by se melo (v C) zakazat 
> > (beztak jsou to jen zkratky). A vubec spousta veci v Pythonu je pro
> > Cckare zprvu matouci, a napravovat to by byl nesmysl.
> 
> C a C++ jsou asi hlavní jazyky, ve kterých se pí?ou ne-pythonovské
> implementace pythonovských modul?.

Mel jsem na mysli napriklad lidi, kteri se uci s Pythonem programovat jako prvnim jazykem.

> V ?em je se srozumitelnost ++x li?í od srozumitelnosti x += 1 ?

Ja tvrdim, ze ++x neni tak srozumitelne jako x++ nebo x+=1, a proto by se melo omezit; kdyby ano, nevedli bychom tuhle 
diskusi. ;-)

> Oba tyto obraty pocházejí z C. Jiné jazyky vy?adují x = x + 1.

To Python vyzadoval taky, nez se prislo na to, ze x+=1 a x=x+1 je ve skutecnosti (v Pythonu) neco jineho a uzitecneho. Jinak
by zustalo u explicitniho x=x+1.

> Zatím jsem nem?l pocit, ?e by m? Python v ostatních v?cech n?jak
> mátl. V?ci, které vypadají stejn?, se i podobn? chovají (nebo 
> se chovají o?ekávaným zp?sobem). Kdy? n?kde uvidím zápis

No ve spouste veci se Python nechova jako C; co ja vim, tak nejcastejsi namitky, kdyz jsem nekomu vysvetloval Python, byly 
(evidentne Cckovske):

1. Proc vyraz neni prikaz?
2. Proc tam nejsou odkazy?
3. Proc se musi u metod psat self?

Jasne, tyka se to psani, nikoli cteni programu, ale vase puvodni namitka se taky tykala psani.

> "++x", pak to prost? nepova?uji za toté? co "x". Automaticky
> p?edpokládám, ?e k zápisu dvou plus musí být n?jaký d?vod. 
> Na základ? znalosti C p?edpokládám, ?e se jedná o inkrementaci.

To ja bych asi predpokladal taky; ale to holt cloveku uz asi musi dojit, ze cte jiny jazyk. ;-)

> > > A? po dlouhém bádání pak zjistíte, pro? ten vá? program 
> > > nefunguje. Toto je jádro mé námitky. Práv? proto si myslím, 
> > > ?e pro ++i by Python m?l hlásit syntaktickou chybu nebo 
> > > varování. V tomto smyslu jsem vznesl nám?t RFE 794519.
> > 
> > Blbost. Co kdyz si nekdo predefinuje operator prefixove + 
> > tak, ze nebude idempotentni, a bude se mu pak hodit ++++a apod.? 
> 
> Nenapadá m? d?vod, pro? bych si cht?l n?jakým zp?sobem 
> p?edefinovat operátor unární plus. Hlavn? m? nenapadá, 
> v ?em by to pak mohlo zp?ehlednit zápis programu.

To ja bych o nejakych (umelych) prikladech vedel (treba volba nasledujiciho prvku cyklicke grupy), ale jestli by to
zprehlednily, to asi ne (pokud by mela maly rad, tak mozna ano). Na druhou stranu, principialne to udelat lze, a pokud nekdo
chce, byla by asi chyba mu v tom branit syntaktickou chybou.

S pozdravem Jan Samohyl



Další informace o konferenci Python