"Η σκουριά είναι το μέλλον του προγραμματισμού συστήματος, η C είναι η νέα συναρμολόγηση" - μια ομιλία ενός από τους κορυφαίους μηχανικούς της Intel

Στην πρόσφατη Σύνοδο Τεχνολογίας Ανοικτού Κώδικα (OSTS) Τζος Τρίπλετ, ανώτερος μηχανικός της Intel, είπε ότι η εταιρεία του ενδιαφέρεται να φτάσει το Rust στην «ισότητα» με τη γλώσσα C που εξακολουθεί να κυριαρχεί στα συστήματα και την ανάπτυξη χαμηλού επιπέδου στο εγγύς μέλλον. Στην ομιλία του Υπό τον τίτλο "Intel and Rust: The Future of Systems Programming", μίλησε επίσης για την ιστορία του προγραμματισμού συστημάτων, πώς η C έγινε η προεπιλεγμένη γλώσσα προγραμματισμού συστημάτων, ποια χαρακτηριστικά της Rust της δίνουν πλεονέκτημα έναντι της C και πώς θα μπορούσε να αντικαταστήστε το C σε αυτόν τον τομέα προγραμματισμού.

"Η σκουριά είναι το μέλλον του προγραμματισμού συστήματος, η C είναι η νέα συναρμολόγηση" - μια ομιλία ενός από τους κορυφαίους μηχανικούς της Intel

Ο προγραμματισμός συστήματος είναι η ανάπτυξη και διαχείριση λογισμικού που χρησιμεύει ως πλατφόρμα για τη δημιουργία εφαρμογών, διασφαλίζοντας ότι οι τελευταίες αλληλεπιδρούν με τον επεξεργαστή, τη μνήμη RAM, τις συσκευές εισόδου/εξόδου και τον εξοπλισμό δικτύου. Το λογισμικό συστήματος δημιουργεί μια ειδική αφαίρεση με τη μορφή διεπαφών που βοηθούν στη δημιουργία λογισμικού εφαρμογών χωρίς να εμβαθύνουμε στις λεπτομέρειες του τρόπου λειτουργίας του ίδιου του υλικού.

Ο ίδιος ο Triplett ορίζει τον προγραμματισμό συστημάτων ως «κάτι που δεν είναι εφαρμογή». Περιλαμβάνει πράγματα όπως BIOS, υλικολογισμικό, bootloaders και πυρήνες λειτουργικού συστήματος, διάφορους τύπους ενσωματωμένου κώδικα χαμηλού επιπέδου και υλοποιήσεις εικονικής μηχανής. Είναι ενδιαφέρον ότι ο Triplett πιστεύει ότι ένα πρόγραμμα περιήγησης Ιστού είναι επίσης λογισμικό συστήματος, αφού το πρόγραμμα περιήγησης έχει γίνει εδώ και πολύ καιρό κάτι περισσότερο από «απλό πρόγραμμα», μετατρέποντας σε μια αυτόνομη «πλατφόρμα για ιστότοπους και εφαρμογές Ιστού».

Στο παρελθόν, τα περισσότερα προγράμματα συστήματος, συμπεριλαμβανομένου του BIOS, των bootloaders και του firmware, ήταν γραμμένα σε γλώσσα assembly. Στη δεκαετία του 1960, τα πειράματα άρχισαν να παρέχουν υποστήριξη υλικού για γλώσσες υψηλού επιπέδου, οδηγώντας στη δημιουργία γλωσσών όπως PL/S, BLISS, BCPL και ALGOL 68.

Στη συνέχεια, στη δεκαετία του 1970, ο Dennis Ritchie δημιούργησε τη γλώσσα προγραμματισμού C για το λειτουργικό σύστημα Unix. Δημιουργημένο στη γλώσσα προγραμματισμού Β, που δεν είχε καν υποστήριξη πληκτρολόγησης, το C ήταν γεμάτο με ισχυρές λειτουργίες υψηλού επιπέδου που ήταν οι πλέον κατάλληλες για τη σύνταξη λειτουργικών συστημάτων και προγραμμάτων οδήγησης. Αρκετά στοιχεία του UNIX, συμπεριλαμβανομένου του πυρήνα του, ξαναγράφτηκαν τελικά σε C. Στη συνέχεια, πολλά άλλα προγράμματα συστήματος, συμπεριλαμβανομένης της βάσης δεδομένων Oracle, μεγάλο μέρος του πηγαίου κώδικα των Windows και του λειτουργικού συστήματος Linux, γράφτηκαν επίσης σε C.

Η C έχει λάβει τεράστια υποστήριξη προς αυτή την κατεύθυνση. Αλλά τι ακριβώς έκανε τους προγραμματιστές να στραφούν σε αυτό; Η Triplett πιστεύει ότι για να παρακινηθούν οι προγραμματιστές να αλλάξουν από μια γλώσσα προγραμματισμού στην άλλη, η τελευταία πρέπει πρώτα να παρέχει νέες δυνατότητες χωρίς να χάσει παλιές δυνατότητες.

Πρώτον, η γλώσσα πρέπει να προσφέρει «εύλογα εντυπωσιακά» νέα χαρακτηριστικά. «Δεν θα μπορούσε να είναι καλύτερος. Πρέπει να είναι πολύ καλύτερο για να δικαιολογηθεί η προσπάθεια και ο χρόνος μηχανικής που χρειάζεται για να γίνει η μετάβαση», εξηγεί. Σε σύγκριση με τη γλώσσα assembly, η C είχε πολλά πράγματα να προσφέρει. Υποστήριξε κάπως ασφαλή συμπεριφορά, παρείχε καλύτερη φορητότητα και απόδοση με κατασκευές υψηλού επιπέδου και παρήγαγε πολύ πιο ευανάγνωστο κώδικα συνολικά.

Δεύτερον, η γλώσσα πρέπει να παρέχει υποστήριξη για παλιά χαρακτηριστικά, πράγμα που σημαίνει ότι στην ιστορία της μετάβασης στο C, οι προγραμματιστές έπρεπε να είναι σίγουροι ότι δεν ήταν λιγότερο λειτουργική από τη γλώσσα assembly. Η Triplett εξηγεί: «Μια νέα γλώσσα δεν μπορεί απλώς να είναι καλύτερη, πρέπει επίσης να είναι εξίσου καλή». Εκτός από το ότι είναι ταχύτερο και υποστηρίζει οποιονδήποτε τύπο δεδομένων που θα μπορούσε να χρησιμοποιήσει η γλώσσα συναρμολόγησης, η C είχε επίσης αυτό που ο Triplett αποκαλούσε "καταπακτή διαφυγής"—δηλαδή, υποστήριζε την εισαγωγή κώδικα γλώσσας συναρμολόγησης μέσα του.

"Η σκουριά είναι το μέλλον του προγραμματισμού συστήματος, η C είναι η νέα συναρμολόγηση" - μια ομιλία ενός από τους κορυφαίους μηχανικούς της Intel

Ο Triplett πιστεύει ότι η C γίνεται τώρα αυτό που ήταν η γλώσσα assembly πριν από πολλά χρόνια. «Ο C είναι ο νέος συναρμολογητής», δηλώνει. Τώρα οι προγραμματιστές αναζητούν μια νέα γλώσσα υψηλού επιπέδου που όχι μόνο θα λύσει τα προβλήματα που έχουν συσσωρευτεί στη C και δεν μπορούν πλέον να επιλυθούν, αλλά θα προσφέρει και συναρπαστικές νέες δυνατότητες. Μια τέτοια γλώσσα πρέπει να είναι αρκετά συναρπαστική ώστε να κάνει τους προγραμματιστές να μεταβούν σε αυτήν, πρέπει να είναι ασφαλής, να παρέχει αυτόματη διαχείριση μνήμης και πολλά άλλα.

«Οποιαδήποτε γλώσσα θέλει να είναι καλύτερη από την C πρέπει να προσφέρει πολλά περισσότερα από την απλή προστασία υπερχείλισης buffer, εάν θέλει πραγματικά να είναι μια συναρπαστική εναλλακτική. Οι προγραμματιστές ενδιαφέρονται για τη χρηστικότητα και την απόδοση, γράφοντας κώδικα που είναι αυτονόητος και κάνει περισσότερη δουλειά σε λιγότερες γραμμές. Πρέπει επίσης να αντιμετωπιστούν θέματα ασφάλειας. Η ευκολία χρήσης και η απόδοση πάνε χέρι-χέρι. Όσο λιγότερο κώδικα πρέπει να γράψετε για να πετύχετε κάτι, τόσο λιγότερες ευκαιρίες έχετε να κάνετε λάθη, που σχετίζονται με την ασφάλεια ή όχι», εξηγεί η Triplett.

Σύγκριση Σκουριάς και Γ

Το 2006, ο Graydon Hoare, υπάλληλος της Mozilla, άρχισε να γράφει το Rust ως προσωπικό έργο. Και το 2009, η Mozilla άρχισε να χορηγεί την ανάπτυξη του Rust για τις δικές της ανάγκες και επίσης επέκτεινε την ομάδα για να αναπτύξει περαιτέρω τη γλώσσα.

Ένας από τους λόγους που η Mozilla ενδιαφέρθηκε για τη νέα γλώσσα είναι ότι ο Firefox γράφτηκε σε πάνω από 4 εκατομμύρια γραμμές κώδικα C++ και είχε αρκετά κρίσιμα τρωτά σημεία. Το Rust κατασκευάστηκε με γνώμονα την ασφάλεια και την ταυτόχρονη χρήση, καθιστώντας το ιδανική επιλογή για την επανεγγραφή πολλών στοιχείων του Firefox ως μέρος του έργου Quantum για τον πλήρη επανασχεδιασμό της αρχιτεκτονικής του προγράμματος περιήγησης. Η Mozilla χρησιμοποιεί επίσης το Rust για να αναπτύξει το Servo, μια μηχανή απόδοσης HTML που θα αντικαταστήσει τελικά την τρέχουσα μηχανή απόδοσης Firefox. Πολλές άλλες εταιρείες έχουν αρχίσει να χρησιμοποιούν το Rust για τα έργα τους, όπως οι Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu και πολλές άλλες.

Το Rust λύνει ένα από τα πιο σημαντικά προβλήματα της γλώσσας C. Προσφέρει αυτόματη διαχείριση μνήμης, ώστε οι προγραμματιστές να μην χρειάζεται να την εκχωρούν με μη αυτόματο τρόπο και στη συνέχεια να την ελευθερώνουν για κάθε αντικείμενο της εφαρμογής. Αυτό που κάνει το Rust να διαφέρει από τις άλλες σύγχρονες γλώσσες είναι ότι δεν διαθέτει συλλέκτη σκουπιδιών που αφαιρεί αυτόματα τα αχρησιμοποίητα αντικείμενα από τη μνήμη, ούτε έχει το περιβάλλον χρόνου εκτέλεσης που απαιτείται για να λειτουργήσει, όπως το Java Runtime Environment για Java. Αντίθετα, το Rust έχει τις έννοιες της ιδιοκτησίας, του δανεισμού, των παραπομπών και της διάρκειας ζωής. «Η Rust έχει ένα σύστημα για τη δήλωση κλήσεων σε ένα αντικείμενο για να δείξει εάν ο ιδιοκτήτης το χρησιμοποιεί ή απλώς το δανείζεται. Αν απλώς δανειστείτε ένα αντικείμενο, ο μεταγλωττιστής θα το παρακολουθεί και θα διασφαλίσει ότι το πρωτότυπο παραμένει στη θέση του όσο το αναφέρετε. Το Rust θα διασφαλίσει επίσης ότι το αντικείμενο θα αφαιρεθεί από τη μνήμη μόλις ολοκληρωθεί η χρήση του, εισάγοντας μια αντίστοιχη κλήση στον κώδικα τη στιγμή της μεταγλώττισης χωρίς επιπλέον χρόνο», λέει ο Triplett.

Η έλλειψη εγγενούς χρόνου εκτέλεσης μπορεί επίσης να θεωρηθεί θετικό χαρακτηριστικό του Rust. Η Triplett πιστεύει ότι οι γλώσσες στις οποίες εκτελείται είναι δύσκολο να χρησιμοποιηθούν ως εργαλεία προγραμματισμού συστημάτων. Όπως εξηγεί: «Πρέπει να αρχικοποιήσετε αυτόν τον χρόνο εκτέλεσης για να μπορέσετε να καλέσετε οποιονδήποτε κωδικό, πρέπει να χρησιμοποιήσετε αυτόν τον χρόνο εκτέλεσης για να καλέσετε συναρτήσεις και ο ίδιος ο χρόνος εκτέλεσης μπορεί να εκτελεί επιπλέον κώδικα πίσω από την πλάτη σας σε απροσδόκητες στιγμές».

Η Rust προσπαθεί επίσης να παρέχει ασφαλή παράλληλο προγραμματισμό. Τα ίδια χαρακτηριστικά που το καθιστούν ασφαλές στη μνήμη παρακολουθούν πράγματα όπως ποιο νήμα ανήκει ποιο αντικείμενο και ποια αντικείμενα μπορούν να περάσουν μεταξύ των νημάτων και ποια χρειάζονται κλείδωμα.

Όλα αυτά τα χαρακτηριστικά κάνουν το Rust αρκετά συναρπαστικό ώστε οι προγραμματιστές να το επιλέξουν ως νέο εργαλείο για προγραμματισμό συστημάτων. Ωστόσο, όσον αφορά τους παράλληλους υπολογιστές, ο Rust βρίσκεται ακόμα λίγο πίσω από το C.

Η Triplett σκοπεύει να δημιουργήσει μια ειδική ομάδα εργασίας που θα επικεντρωθεί στην εισαγωγή των απαραίτητων χαρακτηριστικών στο Rust ώστε να μπορεί να εξισώσει πλήρως, να ξεπεράσει και να αντικαταστήσει το C στον τομέα του προγραμματισμού συστημάτων. ΣΕ νήμα στο Reddit, αφιερωμένος στην ομιλία του, είπε ότι «η ομάδα FFI/C Parity βρίσκεται σε διαδικασία δημιουργίας και δεν έχει αρχίσει ακόμη να εργάζεται», προς το παρόν είναι έτοιμος να απαντήσει σε οποιεσδήποτε ερωτήσεις και στο μέλλον σίγουρα θα δημοσιεύσει άμεσα σχέδια για την ανάπτυξη του Rust στο πλαίσιο της πρωτοβουλίας του για όλους τους ενδιαφερόμενους.

Μπορούμε να υποθέσουμε ότι η ομάδα FFI/C Parity θα επικεντρωθεί πρώτα απ' όλα στη βελτίωση της υποστήριξης πολλαπλών νημάτων στο Rust, εισάγοντας υποστήριξη για το BFLOAT16, μια μορφή κινητής υποδιαστολής που έχει εμφανιστεί στους νέους επεξεργαστές Intel Xeon Scalable, καθώς και στη σταθεροποίηση της συναρμολόγησης εισαγωγές κωδικών.



Πηγή: 3dnews.ru

Προσθέστε ένα σχόλιο