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

Τι είναι η σκουριά; Ασφαλής, γρήγορη και εύκολη ανάπτυξη λογισμικού

Γρήγορη, ασφαλής, εύκολη στην εγγραφή — επιλέξτε τα δύο. Αυτή ήταν η κατάσταση ανάπτυξης λογισμικού εδώ και πολύ καιρό. Οι γλώσσες που δίνουν έμφαση στην ευκολία και την ασφάλεια τείνουν να είναι αργές (όπως η Python). Οι γλώσσες που δίνουν έμφαση στην απόδοση τείνουν να είναι δύσκολο να χρησιμοποιηθούν και εύκολα να χτυπήσουν τα πόδια σας (όπως C και C ++).

Μπορούν και τα τρία αυτά χαρακτηριστικά να παραδοθούν σε μία γλώσσα; Το πιο σημαντικό, μπορείτε να κάνετε τον κόσμο να συνεργαστεί με αυτόν; Η γλώσσα Rust, που δημιουργήθηκε αρχικά από τον Graydon Hoare και επί του παρόντος χρηματοδοτείται από την Mozilla Research, είναι μια προσπάθεια να κάνουμε μόνο αυτά τα πράγματα. (Η γλώσσα του Google Go έχει παρόμοιες φιλοδοξίες, αλλά ο Rust στοχεύει να κάνει όσο το δυνατόν λιγότερες παραχωρήσεις στην απόδοση.)

Σχετικό βίντεο: Ανάπτυξη ασφαλέστερου λογισμικού με το Rust

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

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

Πλεονεκτήματα γλώσσας προγραμματισμού σκουριάς

Το Rust ξεκίνησε ως ερευνητικό πρόγραμμα Mozilla εν μέρει με σκοπό την εκ νέου εφαρμογή βασικών στοιχείων του προγράμματος περιήγησης Firefox. Μερικοί βασικοί λόγοι οδήγησαν σε αυτήν την απόφαση: Ο Firefox άξιζε να κάνει καλύτερη χρήση σύγχρονων, πολλών πυρήνων επεξεργαστών. Και η απόλυτη πανταχού παρουσία των προγραμμάτων περιήγησης ιστού σημαίνει ότι πρέπει να είναι ασφαλείς στη χρήση.

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

Η σκουριά είναι γρήγορη

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

Η σκουριά είναι ασφαλής στη μνήμη

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

Η σκουριά είναι χαμηλή

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

Ο τρόπος μεταβίβασης της ιδιοκτησίας μεταξύ αντικειμένων διέπεται αυστηρά από τον μεταγλωττιστή, οπότε δεν υπάρχουν εκπλήξεις κατά το χρόνο εκτέλεσης με τη μορφή σφαλμάτων κατανομής μνήμης. Η προσέγγιση ιδιοκτησίας σημαίνει επίσης ότι δεν υπάρχει διαχείριση μνήμης που συλλέγεται σκουπίδια, όπως σε γλώσσες όπως το Go ή το C #. (Αυτό δίνει επίσης στον Rust μια άλλη ώθηση απόδοσης.) Κάθε κομμάτι μνήμης σε ένα πρόγραμμα Rust παρακολουθείται και απελευθερώνεται αυτόματα μέσω της μεταφοράς ιδιοκτησίας.

Η σκουριά είναι εύκαμπτη

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

Η σκουριά είναι εύχρηστη

Κανένα από τα χαρακτηριστικά ασφάλειας και ακεραιότητας του Rust δεν προσθέτει πολλά αν δεν χρησιμοποιούνται. Γι 'αυτό οι προγραμματιστές και η κοινότητα του Rust προσπάθησαν να κάνουν τη γλώσσα όσο το δυνατόν πιο χρήσιμη και φιλόξενη στους νεοεισερχόμενους.

Όλα όσα χρειάζονται για την παραγωγή δυαδικών Rust διατίθενται στο ίδιο πακέτο. Οι εξωτερικοί μεταγλωττιστές, όπως το GCC, χρειάζονται μόνο εάν συντάσσετε άλλα στοιχεία εκτός του οικοσυστήματος Rust (όπως μια βιβλιοθήκη C που συλλέγετε από την πηγή). Οι χρήστες των Microsoft Windows δεν είναι ούτε πολίτες δεύτερης κατηγορίας. η αλυσίδα εργαλείων Rust είναι τόσο ικανή όσο υπάρχει σε Linux και MacOS.

Η σκουριά είναι πλατφόρμας

Το Rust λειτουργεί και στις τρεις μεγάλες πλατφόρμες: Linux, Windows και MacOS. Άλλοι υποστηρίζονται πέραν αυτών των τριών. Αν θέλεις cross-compileή δημιουργήστε δυαδικά αρχεία για διαφορετική αρχιτεκτονική ή πλατφόρμα από αυτήν που εκτελείτε αυτήν τη στιγμή, απαιτείται περισσότερη δουλειά, αλλά μία από τις γενικές αποστολές του Rust είναι να ελαχιστοποιηθεί το ποσό της βαριάς ανύψωσης που απαιτείται για μια τέτοια εργασία. Επίσης, παρόλο που το Rust λειτουργεί στην πλειονότητα των τρεχουσών πλατφορμών, δεν είναι ο στόχος των δημιουργών του να συντάσσει το Rust απόλυτα παντού - μόνο σε ό, τι πλατφόρμες είναι δημοφιλείς και όπου δεν χρειάζεται να κάνουν περιττούς συμβιβασμούς για να το κάνουν.

Το Rust έχει ισχυρά χαρακτηριστικά γλώσσας

Λίγοι προγραμματιστές θέλουν να ξεκινήσουν να δουλεύουν σε μια νέα γλώσσα, αν διαπιστώσουν ότι έχουν λιγότερα ή πιο αδύναμα χαρακτηριστικά από αυτά που έχουν συνηθίσει. Τα χαρακτηριστικά της μητρικής γλώσσας του Rust συγκρίνονται ευνοϊκά με τις γλώσσες όπως το C ++: Οι μακροεντολές, τα γενικά, η αντιστοίχιση μοτίβων και η σύνθεση (μέσω των «χαρακτηριστικών») είναι όλοι πολίτες πρώτης κατηγορίας στο Rust.

Το Rust διαθέτει μια χρήσιμη τυπική βιβλιοθήκη

Ένα μέρος της μεγαλύτερης αποστολής της Rust είναι να ενθαρρύνει τους προγραμματιστές C και C ++ να χρησιμοποιούν το Rust αντί για αυτές τις γλώσσες όποτε είναι δυνατόν. Όμως, οι χρήστες C και C ++ αναμένουν να έχουν μια αξιοπρεπή τυπική βιβλιοθήκη - θέλουν να μπορούν να χρησιμοποιούν κοντέινερ, συλλογές και επαναληπτικούς ελέγχους, να εκτελούν χειρισμούς συμβολοσειρών, να διαχειρίζονται διαδικασίες και νήματα, να εκτελούν δίκτυο και αρχείο I / O και ούτω καθεξής. Το Rust κάνει όλα αυτά, και πολλά άλλα, στην τυπική βιβλιοθήκη του. Επειδή το Rust έχει σχεδιαστεί για cross-platform, η τυπική βιβλιοθήκη της μπορεί να περιέχει μόνο πράγματα που μπορούν να μεταφερθούν αξιόπιστα σε πλατφόρμες. Οι λειτουργίες για συγκεκριμένες πλατφόρμες όπως το epoll του Linux πρέπει να υποστηρίζονται μέσω συναρτήσεων σε βιβλιοθήκες τρίτων όπως libc, mio ​​ή tokio.

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

Ο Rust έχει πολλές βιβλιοθήκες τρίτων, ή "κιβώτια"

Ένα μέτρο της χρησιμότητας μιας γλώσσας είναι πόσο μπορεί να γίνει χάρη σε τρίτους. Το Cargo, το επίσημο αποθετήριο για βιβλιοθήκες Rust (ονομάζεται «κιβώτια») απαριθμεί περίπου δέκα χιλιάδες κιβώτια. Ένας υγιής αριθμός από αυτούς είναι δεσμεύσεις API σε κοινές βιβλιοθήκες ή πλαίσια, επομένως το Rust μπορεί να χρησιμοποιηθεί ως μια βιώσιμη επιλογή γλώσσας με αυτά τα πλαίσια. Ωστόσο, η κοινότητα Rust δεν παρέχει ακόμη λεπτομερή επιμέλεια ή κατάταξη των κιβωτίων με βάση τη συνολική ποιότητα και χρησιμότητα τους, οπότε δεν μπορείτε να πείτε τι λειτουργεί καλά χωρίς να δοκιμάσετε τα πράγματα μόνοι σας ή να κάνετε δημοσκοπήσεις στην κοινότητα.

Το Rust έχει καλή υποστήριξη IDE

Και πάλι, λίγοι προγραμματιστές θέλουν να αγκαλιάσουν μια γλώσσα με ελάχιστη ή καθόλου υποστήριξη στο IDE της επιλογής τους. Αυτός είναι ο λόγος για τον οποίο η Rust παρουσίασε πρόσφατα τον Rust Language Server, ο οποίος παρέχει ζωντανά σχόλια από τον μεταγλωττιστή Rust σε IDE όπως ο Microsoft Visual Studio Code.

Μειονεκτήματα γλώσσας προγραμματισμού σκουριάς

Μαζί με όλες τις ελκυστικές, ισχυρές και χρήσιμες δυνατότητές του, το Rust έχει τα μειονεκτήματά του. Μερικά από αυτά τα εμπόδια συναντούν νέους «rustaceans» (όπως οι οπαδοί του Rust καλούν ο ένας τον άλλον) και παλιά χέρια.

Η σκουριά είναι νέα

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

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

Η σκουριά είναι δύσκολο να μάθει

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

Η σκουριά είναι περίπλοκη

Μερικές από τις δυσκολίες προέρχονται από το πώς οι μεταφορές του Rust δημιουργούν περισσότερο ριζικό κώδικα, σε σύγκριση με άλλες γλώσσες. Για παράδειγμα, η συνένωση χορδών στο Rust δεν είναι πάντα τόσο απλή όσο string1 + string2. Ένα αντικείμενο μπορεί να είναι μεταβλητό και το άλλο αμετάβλητο. Ο Rust τείνει να επιμείνει στον προγραμματιστή να εξηγήσει πώς να χειριστεί τέτοια πράγματα, αντί να αφήσει τον μεταγλωττιστή να μαντέψει.

Ένα άλλο παράδειγμα: πώς συνεργάζονται οι Rust και C / C ++. Τις περισσότερες φορές, το Rust χρησιμοποιείται για σύνδεση σε υπάρχουσες βιβλιοθήκες γραμμένες σε C ή C ++. λίγα έργα σε C και C ++ ξαναγράφονται από το μηδέν στο Rust. (Και όταν είναι, τείνουν να ξαναγράφονται σταδιακά.)

Ο οδικός χάρτης της γλώσσας Rust

Η ομάδα Rust έχει επίγνωση πολλών από αυτά τα θέματα και εργάζεται για τη βελτίωσή τους. Για παράδειγμα, για να διευκολυνθεί η εργασία του Rust με τους C και C ++, η ομάδα Rust ερευνά εάν θα επεκτείνει έργα όπως το bindgen, το οποίο δημιουργεί αυτόματα Rust δεσμεύσεις στον κώδικα C. Η ομάδα έχει επίσης σχέδια να κάνει τον δανεισμό και τη διάρκεια ζωής πιο ευέλικτο και πιο κατανοητό.

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

$config[zx-auto] not found$config[zx-overlay] not found