[python] for-else -> wtf?
superman
feed na centrum.cz
Čtvrtek Duben 24 21:27:59 CEST 2008
Ahoj Štěpáne,
jednak je ten výraz čitelný, jednak ho lze snadno zjednodušit a dále
zčitelnit, a v praxi člověk dbající na čitelnost použije spíš:
typedef void(*prazdna_funkce)();
prazdna_funkce(NULL)();
případně takto:
static_cast<void(*)()>(NULL)();
Nicméně je to výraz, a výraz může dosahovat obstojné složitosti i v
Pythonu a jiných jazycích. Navíc je to výraz, jehož hlavním principem je
přetypování a zachování správného statického typu, což je věc, kterou
srovnávat s Pythonem s dynamickým typováním (za což Python platí
pomalostí) je poněkud pasé. A navíc je to výraz neužitečný, k ničemu, je
vhodný jenom k tomu, abyste uměle vyrobili chybu v programu a operační
systém Vás odstřelil - nic jiného neudělá.
Zatímco tu kritizuji konstrukce Pythonu, a Ty jsou opravdu čím dál více
IMHO vymýšleny k nečitelnosti. Čemuž se nedivím, Python je one man show,
a když si key-man poněkud začne hrát, tak Python má smůlu.
A nezlobte se, základní konstrukce typu podmíněné přiřazení, select a
další jsou v C (a mnoha dalších jazycích) podstatně čitelnější, než v
Pythonu. Ale možná je to tím, že s Rossumem opravdu nesouzním -
například mi hlava nebere, proč Rossum nemá nic proti else po cyklu (v
tom je jedinečný, žádný jiný programovací jazyk neshledal tuto
konstrukci užitečnou a nezbytnou), zatímco proti velmi užitečné
konstrukci select (která je v obrovské spoustě jazyků, vlastně v
naprosté většině) se brání jako zbytečné.
Miloslav Ponkrác
Stepan napsal(a):
>
> Ahoj Supermane,
>
> ohledne necitelnosti Pythonu a citelnosti C; urcite znas:
>
> (* (void(*)( ) ) 0) ( );
>
> autor A. Koenig, ktery k tomu rika: “Takovyhle vyrazy jsou OK, nebojte
> se jich.”
>
> WTF?!
>
> Stepan
>
Další informace o konferenci Python