Co sa tyka realne pouzivanych jazykov, peklo robia z toho ludia, nie jazyky samotne.
Moj oblubeny priklad: https://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest
Souhlasím. To, že se v perlu (5) dají psát write only kódy neznamená, že se v něm nedá psát přehledně. Líbí se mi více než Python, který předepisuje jedinou správnou syntaxi. Má to sice něco do sebe, ale přijde mě to takové ... nesvobodné. Aneb je rozdíl když jsem se pro něco rozhodl dobrovolně a nedělám tu samou věc z donucení :-)
U C je problém, že specifikace určuje jak má fungovat, ale neříká, co se mám stát, když se použije jinak. No a dost často kódeři používají zkratky, které správně pracují jen na dané platformě nejlépe s danou verzí kompilátoru a parametry překladu. Ale na výše zmíněný kontest je to fajn v pořádku. :-D
Kdybys psal v perlu, tak zjistíš, že v některých chvílích je python nepružný.
V pythonu nemůžeš napsat lambdu, která například obsahuje for smyčku, nebo nedej bože try-except. Protože striktně 2D syntaxe. Na perlu 5 mi vadí jen práce s objekty. Ta je v Pythonu výrazně lepší, ale pak člověk narazí na duck-typing, kvůli kterému nelze rozšířit vše co je iterable o metodu map nebo filter (perl tohle trochu řeší speciální syntaxí pro map/filter). Takže zřetězení map/filter operací v pythonu vypadá jako LISP (spousta závorek). Zřetězení map/grep operací v perlu alespoň vypadá jako RPN, takže vím, že to mám číst odzadu, ale nejsou tam zbytečné závorky navíc.
Iterable věci nemají společného předka, nebo interfejs nebo něco. Jediné co je spojuje je, že mají metodu __iter__() která vrátí něco co má metodu next(). Takže neexistuje třída (nebo prototyp, nebo něco) co by se dalo modifikovat. Prostě si ten objekt musí člověk nejdřív wrapnout, což je celkem standardní věc, ale z hlediska sémantiky programu je to nulová operace, proto mi vadí.
V JavaScriptu v prohlížečích panuje podobná situace, spousta DOM funkcí vrací array-like objekty, které nemají prototyp pole, a tudíž se musí wrapnout nebo zkonvertovat. Nicméně třeba JQuery se tohle snaží řešit tak, že ta konverze je skrytá v knihovně.