Η Microsoft αρχίζει να μιλά για τη γλώσσα προγραμματισμού επόμενης γενιάς, C# για προγραμματισμό συστημάτων

Εικονίδιο ώρας ανάγνωσης 3 λεπτό. ανάγνωση


Οι αναγνώστες βοηθούν στην υποστήριξη του MSpoweruser. Ενδέχεται να λάβουμε προμήθεια εάν αγοράσετε μέσω των συνδέσμων μας. Εικονίδιο επεξήγησης εργαλείου

Διαβάστε τη σελίδα αποκάλυψης για να μάθετε πώς μπορείτε να βοηθήσετε το MSPoweruser να διατηρήσει τη συντακτική ομάδα Διάβασε περισσότερα

Ο Joe Duffy, αρχιτέκτονας και προγραμματιστής σε ένα ερευνητικό λειτουργικό σύστημα στη Microsoft, έχει δημοσιεύσει blog σχετικά με τη γλώσσα προγραμματισμού επόμενης γενιάς στην οποία εργάζονται τα τελευταία δύο χρόνια. Η Microsoft περιγράφει τώρα αυτήν την επερχόμενη γλώσσα ως επεκτάσεις "προγραμματισμού συστημάτων" στην C#. Η Microsoft προσπαθεί να παρουσιάσει αυτήν τη γλώσσα ως διασταύρωση μεταξύ C#, Java, κ.λπ. με επίκεντρο την Ασφάλεια και την Παραγωγικότητα, και την C++ με επίκεντρο την απόδοση.

Εδώ είναι τα 6 σημαντικά χαρακτηριστικά της γλώσσας,

) Δια βίου κατανόηση. Η C++ έχει RAII, ντετερμινιστική καταστροφή και αποτελεσματική κατανομή αντικειμένων. Η C# και η Java ενθαρρύνουν τους προγραμματιστές να βασίζονται υπερβολικά στο σωρό GC και προσφέρουν μόνο «χαλαρή» υποστήριξη για ντετερμινιστική καταστροφή μέσω του IDisposable. Μέρος αυτού που κάνει η ομάδα μου είναι να μετατρέπει τακτικά προγράμματα C# σε αυτή τη νέα γλώσσα και δεν είναι ασυνήθιστο να αντιμετωπίζουμε 30-50% χρόνο που ξοδεύουμε στο GC. Για διακομιστές, αυτό σκοτώνει την απόδοση. για τους πελάτες, υποβαθμίζει την εμπειρία, εισάγοντας λανθάνουσα κατάσταση στην αλληλεπίδραση. Έχουμε κλέψει μια σελίδα από την C++ — σε τομείς όπως οι αναφορές rvalue, η σημασιολογία μετακίνησης, η καταστροφή, οι αναφορές / ο δανεισμός — και ωστόσο διατηρήσαμε τα απαραίτητα στοιχεία ασφάλειας και τα συγχωνεύσαμε με ιδέες από λειτουργικές γλώσσες. Αυτό μας επιτρέπει να στοιβάζουμε επιθετικά αντικείμενα, να καταστρέφουμε ντετερμινιστικά και πολλά άλλα.

2) Κατανόηση των παρενεργειών. Αυτή είναι η εξέλιξη αυτού που δημοσιεύσαμε στο OOPSLA 2012, δίνοντάς σας στοιχεία C++ const (αλλά και πάλι με ασφάλεια), μαζί με πρώτης τάξεως αμετάβλητη και απομόνωση.

3) Ασύγχρονος προγραμματισμός σε κλίμακα. Η κοινότητα ήταν «στρογγυλή και στρογγυλή σε αυτό, δηλαδή εάν θα χρησιμοποιηθούν κορουτίνες συνέχισης-περάσματος ή ελαφριές κορουτίνες αποκλεισμού. Αυτό περιλαμβάνει την C# αλλά και σχεδόν κάθε άλλη γλώσσα στον πλανήτη. Η βασική καινοτομία εδώ είναι ένα συνθετικό σύστημα τύπων που είναι αγνωστικό στο μοντέλο εκτέλεσης και μπορεί να αντιστοιχιστεί αποτελεσματικά σε ένα από τα δύο. Θα ήταν αλαζονικό να ισχυριστούμε ότι έχουμε τον ένα σωστό τρόπο για να εκθέσουμε αυτά τα πράγματα, αλλά έχοντας εμπειρία με πολλές άλλες προσεγγίσεις, μου αρέσει που προσγειωθήκαμε.

4) Προγραμματισμός συστημάτων ασφαλείας τύπου. Υποστηρίζεται συνήθως ότι με την ασφάλεια τύπου έρχεται μια εγγενής απώλεια απόδοσης. Είναι αλήθεια ότι ο έλεγχος ορίων είναι αδιαπραγμάτευτος και ότι προτιμάμε τον έλεγχο υπερχείλισης από προεπιλογή. Είναι εκπληκτικό το τι μπορεί να κάνει εδώ ένας καλός μεταγλωττιστής βελτιστοποίησης, έναντι της μεταγλώττισης JIT. (Και χρειάζεται μόνο να ελέγξετε επιπόλαια ορισμένα πρόσφατα ενημερωτικά δελτία ασφαλείας για να δείτε γιατί αυτές οι δυνατότητες έχουν αξία.) Άλλοι τομείς περιλαμβάνουν τη δυνατότητα να κάνετε περισσότερα χωρίς να κάνετε εκχώρηση. Όπως το να έχουμε API που βασίζονται σε λάμδα που μπορούν να κληθούν με μηδενικές εκχωρήσεις (αντί για τις δύο συνηθισμένες: ένα για τον πληρεξούσιο, ένα για την οθόνη). Και να είστε σε θέση να χαράξετε εύκολα υπο-πίνακες και δευτερεύουσες συμβολοσειρές χωρίς εκχώρηση.

5) Σύγχρονο μοντέλο σφάλματος. Αυτό είναι άλλο ένα για το οποίο η κοινότητα διαφωνεί. Διαλέξαμε αυτό που πιστεύω ότι είναι το γλυκό σημείο: συμβόλαια παντού (προϋποθέσεις, μετασυνθήκες, αμετάβλητες, ισχυρισμοί, κ.λπ.), γρήγορη αποτυχία ως προεπιλεγμένη πολιτική, εξαιρέσεις για τη σπάνια δυναμική αποτυχία (ανάλυση, I/O, κ.λπ.), και δακτυλογραφημένες εξαιρέσεις μόνο όταν χρειάζεστε απολύτως πλούσιες εξαιρέσεις. Όλα ενσωματωμένα στο σύστημα τύπων με τρόπο 1ης κατηγορίας, έτσι ώστε να έχετε όλη την κατάλληλη συμπεριφορά υποτυποποίησης που είναι απαραίτητη για να είναι ασφαλές και υγιές.

6) Σύγχρονα πλαίσια. Αυτό είναι ένα catch-all bucket που καλύπτει πράγματα όπως το async LINQ, βελτιωμένη υποστήριξη απαριθμητή που ανταγωνίζεται τους επαναλήπτες C++ σε απόδοση και δεν απαιτεί αποστολή διπλής διεπαφής για εξαγωγή στοιχείων κ.λπ. Για να είμαστε απόλυτα ειλικρινείς, αυτή είναι η περιοχή που έχουμε η μεγαλύτερη λίστα με «σχεδιασμένα αλλά μη υλοποιημένα χαρακτηριστικά», που περιλαμβάνει πράγματα όπως void-as-a-1st-class-type, non-null τύπους, χαρακτηριστικά, πληκτρολόγηση εφέ πρώτης κατηγορίας και πολλά άλλα. Περιμένω να έχουμε μερικά από αυτά στο σημείο ελέγχου μας στα μέσα του 1, αλλά όχι όλα.

Διαβάστε περισσότερα από τον σύνδεσμο εδώ.

Περισσότερα για τα θέματα: c#, προγραμματιστές, microsoft