[python] Guido o funkcich reduce(), filter() a map() v Python 3000

superman feed na centrum.cz
Úterý Červenec 1 01:57:34 CEST 2008


> Stále mě nabádáte, abych si našel nějaká fakta. Taky byste to měl
> někdy zkusit. Ale souhlasím s tím, že by Python mohl běžet ještě
> rychleji, což dokazuje třeba Psyco.
>   

Já to zkusil, právě proto píšu to co píšu. Navíc pomalost Pythonu je 
logická už z principu jazyka a z principu runtime. Nicméně pomalost 
neznamená vadu, je to daň za jiné pěkné vlastnosti, za které se platí 
rychlostí. A pak také daň za neustálé překopávání jazyka - to je další 
negativní důsledek Rossumových akcí - kdyby Python byl stálý, věřím, že 
by někomu stálo za to vyvinout dobrý runtime pro Python spolu s 
dynamickou optimalizací (které v Pythonu není) a možná i JITem (která je 
nesplnitelným snem).

Taková Java například to z velké pomalosti dotáhla na to, že v rychlosti 
čistého kódu se blíží rychlosti jazyka C. Je to důsledek vývoje runtimu, 
který trval mnoho let.

Ale Python prostě musí mít špatný a pomalý runtime, protože při 
neustálém překopávání jazyka nelze naprogramovat nic složitějšího, než v 
podstatě primitivní runtime prakticky bez optimalizací. Lidé pořád 
zapomínají, že změna v jazyce znamená změny v obrovském množství kódu a 
nástrojů.


> U hotové aplikace není důvod ani potřeba nic přepisovat. Nevím, jakou
> máte představu o tom, jak přejít na Python 3000, ale nikdo netvrdí, že
> musíte ze dne na den přejít z Pythonu 2.5 na Python 3000 (klidně
> můžete zůstat na Pythonu 2.5 až do smrti, přítomnost Pythonu 3000 ho
> nezruší). U většiny aplikací, u kterých probíhá vývoj, při plynulém
> přechodu na Python 2.6 a pak na Python 3000 s využitím připravených
> nástrojů, žádné extra náklady navíc nevzniknou.
>   

Jednou Vás to donutí přejít - pokud jste trochu zběhlý v praxi, tak se 
prostě nedá časem nepřejít. Jednoho dne se objeví něco - nepodpora 
něčeho v okolí programu, která je jenom v nové verzi a přejít prostě 
musíte chca nechca. Proč nutně musí u aplikací probíhat vývoj? A to s 
těmi žádnými extra náklady je dobrá věta - na prvního Apríla.

Ono totiž i když probéhá vývoj, tak v aplikaci jsou obrovské části kódu, 
na které se nesahá. To může být klidně i 90% kódu, které zůstávají beze 
změny. Mění se jen část projektu. Ty nezměněné části jsou odladěné, a je 
na ně spolehnutí. Ovšem při změně syntaxe jazyka musíte sáhnout na vše - 
na 100% kódu. Minimálně je otestovat - a jestli to neznamená dodatečné 
náklady navíc, pak jsem čínský papež.


> Takže je těch vlivů tolik, že stejně nelze určit, proč je Python někdy
> populární více a jindy méně.
>   

S tím nesouhlasím. Je rozdíl mezi tvrzením "je tam hodně vlivů" a 
tvrzení "nelze určit, které vlivy to jsou". Vy jste dost nekorektně bez 
důkazu tato dvě tvrzení zaměnil.


> I v případě Hitlera byla drtivá většina lidí, kterých se jeho činy
> dotýkaly, proti. V demokratické společnosti platí názor většiny, a
> pokud je většina pro změny, nic s tím nezmůžete. Je to blbej systém,
> ale ty ostatní jsou jenom horší.
>   

Ano? Zkuste si vzít obrovský prostor zvaný Německo a zkuste si zjistit 
jak moc lidí bylo proti.

Demokracii sem netahejte - navíc znovu - dokažte tvrzení "že všechny 
ostatní systémy jsou horší, než demokracie" - měl byste logický problém.


Miloslav Ponkrác


Další informace o konferenci Python