Hlavní navigace

Co přinese chystaný Python 3.0?

Jakub Šťastný 21. 6. 2007

Popularita Pythonu stále roste, projektů v něm přibývá, komunita se rozrůstá. Chystá se Python 3.0, který má přinést rozsáhlé změny a který si, co se zpětné kompatibility týče, servítky brát rozhodně nebude. Jaký bude nový Python? Co všechno přinese? Máme se těšit nebo se obávat?

Článek vychází ze zápisku v blogu tvůrce Pythonu o připravovaném Pythonu 3.0

Jak se celá situace vyvíjela?

Myšlenka tvorby nové, pokrokové, ale nekompatibilní verze začala na tvůrce Pythonu doléhat kolem roku 2000 na konferenci o Pythonu. Guido van Rossum si uvědomoval, že je třeba udělat jisté změny, které bohužel však nutně povedou k nekompatibilitě se současnou verzí. Zajímavostí je jméno projektu – ten byl pojmenován Python 3000, inspirován názvem Windows 2000, jak uvádí Guido. Dále se též můžete setkat se synonymním přízviskem Py3k, přičemž chystaná verze se bude jmenovat Python 3.0.

Zpočátku byl celý Python 3000 jen seznamem stížností a věcí, které by se měly udělat lépe, vlastní práce na něm započaly teprve zhruba před rokem a půl, když se stal Guido zaměstnancem společnosti Google a získal více času na vývoj Pythonu.

Sbohem, kompatibilito!

„Python 3.0 ukončí veškerou zpětnou kompatibilitu. Naprosto. Nehodláme zachovat ani základy. Samozřejmě že tu bude určitá kompatibilní část, která bude docela velká, ale nechceme se zaměřovat na snadnou, či vůbec možnou tvorbu programů v ní. Bude to jen sada vlastností, která se náhodou nezměnila mezi verzemi 2.6 a 3.0,” uvádí na svém blogu Guido van Rossum.

Je jasné, že zrušit zpětnou kompatibilitu a nechat to „jen tak” nelze. Guido slibuje dostupnost konverzního nástroje z Pythonu 2.6 a zřejmě i Pythonu 2.5 do nového Pythonu 3.0.

Dva hroznýši vedle sebe

Python 3.0 není jediná verze, která je v součastnosti vyvíjena. Paralelně vzniká Python 2.6, který má být oním hraničním kamenem mezi dvojkovou a trojkovou řadou. Bude zpětně kompatibilní s předchozími verzemi, zároveň již se bude snažit připravit půdu pro nadcházející Python 3.0 a bude s ním v některých oblastech dopředu kompatibilní.

První alfaverze Pythonu 3.0 je plánována na konec srpna, přičemž finální verzi lze očekávat v srpnu příštího roku. Finální verze Pythonu 2.6 vyjde o něco dříve, na jeho stabilní vydání se můžeme těšit několik měsíců před verzí 3.0, alfaverze má být k dispozici asi čtyři měsíce před ní. Pokud se vám zdá, že v tom případě vyjde alfa Pythonu 2.6 později než alfa Pythonu 3.0, máte pravdu.

Jaký bude přechod a co bude pak?

Python 2.6 bude, jak již jsem zmínil, jak zpětně kompatibilní s Pythonem 2.5, tak v některých ohledech též dopředu kompatibilní s Pythonem 3.0. V čem konkrétně bude tato předběžná kompatibilita spočívat?

Python 2.6 bude obsahovat Py3k mód varování, jehož cílem bude dynamicky upozorňovat na funkce, které již v Pythonu 3.0 nebudou. V Pythonu 2.6 bude obsaženo mnoho backportovaných Py3k vlastností dostupných z modulu __future__ či jednoduše povolením staré a nové syntaxe, aby se daly používat současně, tedy nebude-li zápis vyhovovat syntaxi Pythonu 2.6, zkusí jej interpret vyhodnotit podle syntaxe Pythonu příští generace.

Aby byl umožněn co nejsnazší přechod na novou generaci jazyka Python, bude k dispozici utilitka umožňující konverzi kódu v Pythonu 2.6 na kód v Pythonu 3.0. Tento prográmek bude zvládat bezkontextovou konverzi kódu. Složitější věci, jako je například analýza toku dat, typová analýza nebo rozlišení datového typu, však obsahovat nebude.

Co se týče přesného scénáře přechodu, Guido navrhuje toto:

  • Řádné otestování aplikace jednotkovými testy.
  • Portování projektu do Pythonu 2.6.
  • Zapnutí Py3k módu varování.
  • Testovat a upravovat, dokud nebudou veškerá varování eliminována.
  • Konverze projektu pomocí konverzní utility.
  • Testování pod Pythonem 3.0.

Co Guido plánuje?

Seznam změn v chystaném Pythonu 3.0 rozhodně malý není. Jaké jsou tedy nejdůležitější změny?

Velké změny čekají Python v oblasti implementace řetězců, binárních dat a v implementaci unicode. Python bude nyní používat systém známý z Javy, tedy neměnné textové řetězce budou interně reprezentovány v unicode a binární data zase jako oddělené a proměnlivé byty (tedy datový typ „bytes”). Krom toho parser bude přátelštější k unicode, za defaultní kódování bude bráno UTF-8 a dokonce v identifikátorech budou povoleny i jiné znaky než pouze ty v základní ASCII sadě. Ve standardní knihovně se však s unicode názvy nepotkáte.

Přepisu se nevyhne ani I/O knihovna, která se tak má jednak zbavit závislosti na céčkovské stdio.h, ale především je třeba, aby byla kompatibilní s plánovanými změnami. Textové streamy budou mít nový atribut „encoding” (kódování) a nová knihovna bude též jasně rozlišovat mezi textovými a binárními streamy.

Další změny postihnou tisknutí a formátování – print se nyní stane stane funkcí a formátování pomocí % bude nyní nahrazeno metodou format() řetězců.

Další dosti rozsáhlé změny se mají týkat například systému tříd, vypustění funkce reduce() či naopak příslib prozatimního zachování lambdy. Pro technické podrobnosti doporučuji přečíst si, jak to vidí autor Pythonu.

Odkazy

Anketa

Považujete předpokládané změny za změny k lepšímu?

Našli jste v článku chybu?

1. 7. 2008 19:36

danaketh (neregistrovaný)
Já dal nedávno sbohem PHP na čemkoliv větším a začal jsem se plně věnovat Pythonu. Líbí se mi že jsem nucen dodržovat nějaké formátování kódu, logovací modul a spousta dalších věcí. Navíc mně vypeskuje za kdeco, takže píšu kód správně a za moje obezličky, které jsem uplatňoval v PHP teď od Pythonu dostávám přes ruce :)

Už jsem si pořídil i hrneček a tričko. K lepším výkonům to nepomáhá ale rozšířil jsem si sbírku :)

25. 6. 2007 12:59

Hmm, tak to už je lepší Erlnag HiPe, dává jim na prdel oběma :-)
Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí