Προγραμματισμός

Ο μεταγλωττιστής Python-to-C ++ υπόσχεται ταχύτερη εκτέλεση

Όσο πιο δημοφιλής είναι η γλώσσα, τόσο πιο ποικίλες είναι οι υλοποιήσεις της. Το Python είναι ένα κλασικό παράδειγμα, με τις περισσότερες από τις αντικαταστάσεις του προεπιλεγμένου διερμηνέα να γράφονται για να επιταχύνουν την εκτέλεση της γλώσσας. Ένα από τα πιο πρόσφατα και πιο ενδιαφέροντα είναι η Nuika.

Το Nuika (open source στο GitHub) μεταγλωττίζει τον κώδικα Python σε C ++, ο οποίος στη συνέχεια μπορεί να εκτελεστεί επιτόπου ή να συσκευαστεί ως αυτόνομο αρχείο για αναδιανομή. Σε αντίθεση με κάποιες άλλες αντικαταστάσεις για υπάρχοντες διερμηνείς της Python, ισχυρίζεται ότι υπάρχει πλήρης συμβατότητα με όλες τις γλωσσικές δομές στα Python 2.6, 2.7, 3.2 και 3.3.

Σύμφωνα με τον επικεφαλής του έργου, ο Kay Hayen, το πρώτο ορόσημο της Nuitka - η ισοτιμία με τη γλώσσα - έχει ήδη επιτευχθεί. Ο Hayen παρουσίασε μια συζήτηση για τη Nuitka στο συνέδριο του EuroPython 2012 και οι εργασίες ξεκίνησαν με σοβαρότητα (βάσει της ιστορίας του GitHub komitmen) γύρω στα τέλη του ίδιου έτους.

Για να δουλέψει τη μαγεία του, το Nuitka απαιτεί τόσο μια τρέχουσα έκδοση του διερμηνέα Python (κλάδος 2.x ή 3.x) όσο και έναν μεταγλωττιστή C ++. Όλα τα Microsoft Visual Studio, MinGW και Clang / LLVM υποστηρίζονται για τις τελευταίες εκδόσεις, σε εκδόσεις 32 και 64 bit. Ωστόσο, η διασταυρούμενη συλλογή - ας πούμε, από Linux σε Windows ή αντίστροφα - δεν υποστηρίζεται και η μεταγλώττιση 64 bit με δυνατότητα εκτέλεσης σε Windows απαιτεί μεταγλωττιστή της Microsoft.

Ένα άλλο μειονέκτημα είναι η δημιουργία αυτόνομων εκτελέσιμων. Για να γίνει αυτό, το Nuitka περιλαμβάνει αναδιανεμήσιμα προϊόντα CPython (στα Windows, μια συλλογή DLL και άλλα αρχεία υποστήριξης) με το εκτελέσιμο. Κατά συνέπεια, τα μεμονωμένα προγράμματα συνοδεύονται από αρκετή επιβάρυνση: Ένα απλό σενάριο γραμμής εντολών "Hello, world" για το Python 2.7 παράγει εκτελέσιμα Windows 2.6MB 32-bit, μαζί με 7.4MB αρχεία υποστήριξης. (Μια έκδοση GUI του ίδιου προγράμματος ζυγίστηκε στα 10MB για το εκτελέσιμο, συνολικά 20MB.)

Ωστόσο, αυτό που ήδη μπορεί να επιτύχει η Nuitka είναι εντυπωσιακό και τα σχέδια του Hayen για το μέλλον του είναι φιλόδοξα. Τα επόμενα βήματα είναι να καταστήσουμε τον κώδικα που δημιουργείται από τη Nuitka πιο αποτελεσματικό, συμπεριλαμβανομένου του καλύτερου χειρισμού μεταβλητών τύπων και βελτιστοποιήσεων για τη ροή ελέγχου. Ακόμα πιο έξω στον οδικό χάρτη υπάρχουν ακόμη πιο εξελιγμένα και πολύτιμα χαρακτηριστικά, όπως η διασύνδεση Nuitka απευθείας με τον κώδικα C που χρησιμοποιείται στο Python μέσω του συστήματος ξένων λειτουργιών ctypes της γλώσσας.