Programavimas

Kompiliatorius „Python-to-C ++“ žada greitesnį vykdymą

Kuo kalba populiaresnė, tuo įvairesnė jos įgyvendinimas. „Python“ yra klasikinis pavyzdys. Dauguma numatytojo vertėjo pakeitimų yra parašyti siekiant pagreitinti kalbos vykdymą. Tarp naujausių ir įdomiausių yra „Nuika“.

„Nuika“ („GitHub“ atvirasis šaltinis) kompiliuoja „Python“ į C ++ kodą, kurį vėliau galima vykdyti vietoje arba supakuoti kaip atskirą failą, kad būtų galima perskirstyti. Skirtingai nuo kai kurių kitų esamų „Python“ vertėjų pakeitimų, jis tvirtina, kad jie yra visiškai suderinami su visais „Python“ 2.6, 2.7, 3.2 ir 3.3 kalbų konstrukcijomis.

Pasak projekto vadovo, Kay Hayenas, pirmasis „Nuitka“ etapas - bruožas, lygiavertis kalbai, jau įvykdytas. Hayenas pristatė „Nuitka“ diskusiją dar „EuroPython 2012“ konferencijoje, o darbas rimtai (remiantis „GitHub“ įsipareigojimų istorija) prasidėjo tų metų pabaigoje.

Kad galėtų dirbti savo magija, „Nuitka“ reikalinga ir dabartinė „Python“ vertėjo versija (2.x arba 3.x filialas), ir C ++ kompiliatorius. Pastarosios palaiko „Microsoft Visual Studio“, „MinGW“ ir „Clang / LLVM“ tiek 32, tiek 64 bitų leidimuose. Tačiau kryžminis kompiliavimas - tarkime, nuo „Linux“ iki „Windows“ ar atvirkščiai - nepalaikomas, o norint kompiliuoti 64 bitų vykdomąjį failą sistemoje „Windows“ reikia „Microsoft“ kompiliatoriaus.

Kitas trūkumas yra atskirų vykdomųjų failų kūrimas. Norėdami tai padaryti, „Nuitka“ įtraukia „CPython“ perskirstomus failus (sistemoje „Windows“ DLL ir kitų palaikomųjų failų rinkinį) su vykdomuoju failu. Vadinasi, atskiros programos turi nemažą pridėtinę sumą: Paprastas „Hello, world“ komandinės eilutės scenarijus, skirtas „Python 2.7“, sukuria 2,6 MB 32 bitų „Windows“ vykdomąjį failą kartu su 7,4 MB palaikomųjų failų. (Tos pačios programos GUI versija svėrė 10 MB viso vykdomojo failo, iš viso 20 MB.)

Vis dėlto tai, ką „Nuitka“ jau gali nuveikti, yra įspūdinga, o Hayeno ateities planai yra ambicingi. Tolesni veiksmai yra padaryti „Nuitka“ sugeneruotą kodą efektyvesnį, įskaitant geresnį kintamų tipų valdymą ir valdymo srauto optimizavimą. Toliau kelio plane yra dar sudėtingesnių ir vertingesnių funkcijų, pavyzdžiui, turėti „Nuitka“ sąsają tiesiogiai su „C“ kodu, naudojamu „Python“ per kalbos „ctypes“ užsienio funkcijų sistemą.