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

Η Python for .Net αναδύεται από τους νεκρούς

Η ανάπτυξη του IronPython, μιας εφαρμογής Python που εκτελείται στο .Net framework's Common Language Runtime (CLR), παίρνει ένα πλάνο στο χέρι χάρη στο έργο που άλλαξε πρόσφατα τα χέρια του σε ένα νέο προβάδισμα ανάπτυξης.

Ο Jeff Hardy, πρώην επικεφαλής προγραμματιστής IronPython, επιβεβαίωσε τη μετάβαση στη λίστα αλληλογραφίας χρηστών Ironpython νωρίτερα αυτό το μήνα. "Για πολλούς λόγους, δεν έχω τον χρόνο τώρα για να δώσω στον IronPython την προσοχή που του αξίζει", έγραψε ο Hardy, "οπότε παραδίδω τον έλεγχο του έργου στους [συνεισφέροντες του έργου] Alex Earl και Benedikt Eggers."

Ένα Python για .Net και αντίστροφα

Το IronPython, γραμμένο στο C #, δεν προορίζεται μόνο για την εκτέλεση προγραμμάτων Python. Μπορεί να παρέχει στους προγραμματιστές της Python μια γέφυρα σε υπάρχουσες εφαρμογές .Net και αντικείμενα. Το καλύτερο από όλα, αυτά τα αντικείμενα μπορούν να εισαχθούν και να αντιμετωπιστούν με την ίδια σύνταξη και ιδιωματισμούς με τα εγγενή αντικείμενα Python.

Η ανάπτυξη του IronPython επιβραδύνθηκε αναμφισβήτητα τα τελευταία δύο χρόνια. Η τελευταία σημαντική κυκλοφορία ήταν για το Python 2.7.5, στο τέλος του 2014. Το Python 3 δεν υποστηρίχθηκε από το IronPython - ένα σημαντικό μειονέκτημα, καθώς το Python 2 δεν θα υποστηρίζεται πλέον από το 2020 και το Python 3 είναι ο καθιερωμένος διάδοχος.

Σε μια συνάντηση στον ιστότοπο συνομιλίας προγραμματιστών, οι Gitter, Earl, Eggers και άλλοι έχουν καταγράψει τα πιο επείγοντα προβλήματα που αντιμετωπίζει το έργο καθώς προχωρά: τι να κάνετε για τα εκκρεμή ζητήματα IronPython στο CodePlex. τι είδους πρόγραμμα κυκλοφορίας θα εφαρμοστεί; και τι είδους οδικός χάρτης να σχεδιάσετε για το IronPython 3.

Ένα άλλο ζήτημα που προέκυψε στις συζητήσεις ήταν πώς να εφαρμόσετε υποστήριξη για βιβλιοθήκες Python που χρησιμοποιούν επεκτάσεις C. Εάν το IronPython πρόκειται να έχει το ευρύτερο δυνατό κοινό, αυτό δεν είναι επιλογή. Πολλές μεγάλες βιβλιοθήκες Python, όπως το Numpy, χρησιμοποιούν επεκτάσεις C για ταχύτητα και θα πρέπει ιδανικά να λειτουργούν όπως είναι στο IronPython χωρίς να χρειάζεται να μεταγλωττιστούν ξανά.

Τα καλά νέα είναι ότι έχει γίνει ήδη κάποια εργασία σε αυτόν τον τομέα, συγκεκριμένα το Ironclad, ένα έργο που επινοήθηκε για να επιτρέψει στις μεταγλωττισμένες επεκτάσεις CPython να λειτουργούν όπως είναι στο IronPython. Τα κακά νέα είναι ότι το έργο δεν έχει δει πολύ δουλειά εδώ και πολύ καιρό και θα πρέπει να αναθεωρηθεί σε μεγάλο βαθμό για να είναι χρήσιμο για τη σύγχρονη Python.

Ρουμπίνια και GILs

Ένα άλλο ζήτημα που προέκυψε ήταν ο τρόπος αντιμετώπισης ενός παρόμοιου έργου που χειρίζεται η ίδια ομάδα: IronRuby, η οποία είναι μια. Καθαρή εφαρμογή του Ruby, όπως υποδηλώνει το όνομα. Οι δύο γλώσσες έχουν συν-αναπτυχθεί, δεδομένου ότι προέρχονται από τις ίδιες προσπάθειες της Microsoft γύρω από το Dynamic Language Runtime, και παρέμειναν σε κοντινή απόσταση μετά τη Microsoft που τις κατέστρεψε σε κοινοτικές προσπάθειες το 2010.

Το σχέδιο είναι να κάνει το IronRuby το δικό του έργο για να προσελκύσει το δικό του κοινό προγραμματιστών. Το IronPython 2 θα συνεχίσει επίσης να αναπτύσσεται ως ξεχωριστό έργο.

Η μελλοντική ανάπτυξη IronPython μπορεί να αποδειχθεί καρποφόρα, παρέχοντας έναν τρόπο για να εκπληρώσει το μακροχρόνιο όνειρο ενός γρήγορου, πολύ-φιλικού χρόνου εκτέλεσης Python. Η IronPython δεν διαθέτει Global Interpreter Lock (GIL), ένα χαρακτηριστικό πολλών εφαρμογών Python που κατηγορείται ότι αποτελεί εμπόδιο στην υψηλή απόδοση.

Τούτου λεχθέντος, το γεγονός ότι η IronPython δεν έχει GIL δεν το κάνει αυτόματα πιο γρήγορο. ορισμένα σημεία αναφοράς IronPython είναι καλύτερα από το CPython, αλλά άλλα είναι πολύ χειρότερα. Προς το παρόν, η απλή αναβάθμιση του IronPython με τα τρέχοντα κλαδιά της Python, 2 και 3, πρέπει να είναι αρκετά αποστολή.