KEJML: když jsme u toho, tak jedna zbývající flow control struktura je konstrukce nějakého kontainer objektu, jehož velikost předem neznáš. a syntaxe, kterou na tohle nabízí Python, je sice elegantní, ale právě že jen v případě, pokud se vejdeš na jeden řádek (pokud mi teda něco neuniklo)
takže jedna konstrukce, která mi chybí i ve vyšších jazycích, je právě jakýsi "reverzní for" ... pro objekty umožňující serializaci (typicky soubor) je jednoduché použít nějakou obyčejnou smyčku... ale co když třeba chci, aby můj kód vypadal co nejvíc stejně pro konstrukci objektu v paměti (jehož velikost předem neznám, což třeba v C je složité), výstup do databázové tabulky i do souboru?
představ si jen, že výstup konstrukce typu [x for x in ....] chci zaprvé rozepsat na víc řádek - s tím x dělám něco složitého, ale současně jen jednou v celém kódu, takže definování funkce někde úplně jinde ve zdrojovém kódu mě může brzdit. a současně se třeba rozhodnu, že to nechci mít v paměti, ale v souboru ... a potom zase ne v souboru, ale v databázi...
vím, že PHP na tohle mělo nějaký "factory design pattern"... ale když si o tom něco začneš číst, tak je to skoro jako práce s Windows API v devadesátkách (a když se podíváš, o kolik více se od té doby zbastlilo webových aplikací, než aplikací využívajících nativní Windows API...)
takže ano... otázka, co má být překládano navíc oproti prostému if a for je dobrá otázka. určitě by byla blbost to vymýšlet tak, aby kód na 10 řádek v "metajazyce" vyšel na 10 řádek v C výstupu a 1 řádek v Pythonu ... spíš je potřeba uvažovat tak, aby 1 řádek v metajazyce zastoupl 3 řádky v pythonu, 10 řádek v PHP a 100 řádek v C :-)