
Ο Linus Benedict Torvalds είναι μηχανικός λογισμικού, γνωστός για την έναρξη και τη διατήρηση της ανάπτυξης του πυρήνα Linux.
πριν λίγες εβδομάδεςs μοιραζόμαστε εδώ στο blog τα νέα για μια πρόταση που έχει αναβιώσει μετά από πολλά χρόνια σε σχέση με τη βιωσιμότητα της υιοθέτησης κώδικα C++ στον πυρήνα του Linux, μια πρόταση που λανσαρίστηκε το 2018 ως αστείο.
La η πρόταση ξεκίνησε ξανά στις λίστες αλληλογραφίας του πυρήνα, αλλά με σοβαρό τρόπο για Χανς Πίτερ Άνβιν, Ένας βασικός προγραμματιστής και προγραμματιστής πυρήνα της Intel έθεσε τη σκοπιμότητα συμπερίληψης της C++ ως τρίτης γλώσσας προγραμματισμού στο Linux.
Με την εισαγωγή του σκουριά στο linux, πολλοί προγραμματιστές και μέρος της κοινότητας είδαν μια υπέροχη διαδρομή μπροστά στο Linux, καθώς και αυτό Έχουν προκύψει διάφορες «ιδέες» για την υλοποίηση άλλων γλωσσών προγραμματισμού, η πρόταση για την εφαρμογή της C++ ανοίγει για άλλη μια φορά μια συζήτηση μεταξύ πολλών από τους προγραμματιστές του Kernel και ακόμη και ο Linus Torvalds εξηγεί για άλλη μια φορά με τον πιο παθητικό και κατανοητό τρόπο, γιατί το Linux δεν είναι προετοιμασμένο για C++ (σαρκασμός).
Πρέπει να θυμόμαστε ότι το Rust δεν ήταν αποδεκτό στο Linux από τη μια στιγμή στην άλλη, δεδομένου ότι το έργο Rust στο Linux (Rust for Linux) είχε μια σειρά αναθεωρήσεων από τον ίδιο τον Linus Torvalds πριν γίνει δεκτό στον κύριο κλάδο του Kernel για να συμπεριληφθεί και αξίζει να αναφέρουμε ότι ο πατέρας του Linux δεν ήταν τίποτα μαλακό όταν κάνετε αναθεωρήσεις και σχολιάζετε τις προτεινόμενες αλλαγές.
Τώρα στην περίπτωση της πρότασης της C++ ως τρίτης γλώσσας προγραμματισμού, στην υποτιθέμενη περίπτωση, και λέω "φυσικά" Η υλοποίηση θα πρέπει να περάσει από παρόμοια σειρά αναθεωρήσεων, αν όχι ακόμη πιο αυστηρό από ό,τι ήταν για τον Rust. Και το γεγονός ότι το αναφέρουμε αυτό οφείλεται στο γεγονός ότι η C++ και το Linus έχουν την ιστορία τους, μικρή, αλλά ήδη πολλών ετών.
Ο λόγος της αναφοράς ότι η περίπτωση της C++ ως τρίτης γλώσσας Linux ως α "Υποτίθεται", είναι επειδή ο πατέρας του Linux, Linus Torvalds, δεν έχει και δεν θα δει ευνοϊκά τη C++., αφού σε περισσότερες από μία περιπτώσεις με κάθε ευκαιρία έχει αναφέρει ότι η C++ "είναι μια τρομερή γλώσσα."
Με αναφοράr μερικές από τις στιγμές κατά τις οποίες έχει εξεταστεί η χρήση της C++ σε Linux και Ο Linus Torvalds δεν έχει εκφράσει μόνο τη διαφωνία του, αλλά ένα "ορισμένο μίσος" προς την C++ που επικαλύπτεται για να αναφέρει γιατί "απλώς δεν είναι μια επιλογή για το Linux", ένα από τα πιο πρόσφατα ήταν κατά τη διάρκεια των κριτικών της εφαρμογής Rust, αφού κατά τη διάρκεια μιας συζήτησης σε μια ανάρτηση Google, η συμπερίληψη της C++ αναφέρθηκε ως πρόταση:
"Η λύση εδώ είναι απλή: απλώς χρησιμοποιήστε C++ αντί για Rust"
Προς το οποίο Ο Linus Torvalds δεν μπορούσε να συγκρατήσει τα γέλια και η απάντησή του ήταν:
"ΧΑΧΑΧΑ". «Η C++ δεν λύνει κανένα από τα προβλήματα της C και μόνο χειροτερεύει τα πράγματα, είναι πραγματικά μια γλώσσα σκουπιδιών.
Για άτομα που δεν τους αρέσει η C, προτιμήστε μια γλώσσα που πραγματικά σας προσφέρει κάτι που αξίζει τον κόπο. Όπως οι γλώσσες που είναι ασφαλείς για μνήμη και "ότι" μπορούν να αποφύγουν ορισμένες από τις παγίδες της C, ή γλώσσες που έχουν εσωτερική υποστήριξη "συλλογής σκουπιδιών" GC και διευκολύνουν τη διαχείριση της μνήμης. "Η C++ λύνει όλα τα λανθασμένα προβλήματα και όποιος λέει "ξαναγράψτε τον πυρήνα στη C++" είναι πολύ ανίδεος για να το γνωρίζει αυτό."
Linus Ο Torvalds πάντα θεωρούσε την C++ "απόβλητο" και τη θεωρούσε "άχρηστη" Λοιπόν, γιατί η C++ δεν μπορεί να λύσει καθόλου το πρόβλημα της γλώσσας C, απλώς θα κάνει τα πράγματα χειρότερα. Τόρβαλντς πιστέψτε ότι όσοι δεν τους αρέσει η γλώσσα C μπορούν να αναζητήσουν μια γλώσσα που μπορεί πραγματικά να προσθέσει αξία. Για παράδειγμα, γλώσσες που είναι ασφαλείς για τη μνήμη και μπορούν να αποφύγουν κρυφούς κινδύνους που προκαλούνται από το C (όπως το Rust).
Σε σύγκριση με την C++, Ο Linus ανέφερε γιατί το C είναι η τυπική του επιλογή:
«Όταν οι άνθρωποι μιλούν για τους κινδύνους που προκαλεί το C, μιλούν επίσης για ένα μέρος του λόγου για τον οποίο το C είναι τόσο ισχυρό: «Σας επιτρέπει να εφαρμόσετε αποτελεσματικά όλα αυτά τα πράγματα χαμηλού επιπέδου», ανέφερε ο Linus. Επίσης, αν και το GC είναι καλό για την απλοποίηση του προγραμματισμού στις περισσότερες περιπτώσεις, γενικά δεν είναι κάτι που μπορεί να γίνει σε προγραμματισμό συστημάτων χαμηλού επιπέδου.
Μάλιστα, στις λίστες αλληλογραφίας αναφέρεται ότι Κάποια στιγμή έγινε μια προσπάθεια χρήσης C++ σε Linux, το 1992 (περισσότερο ένα χρόνο μετά τη γέννηση του Linux), αλλά αυτό παρέμεινε μόνο «μια προσπάθεια», από τον Torvalds αναφέρω για αυτή την προσπάθεια:
Είναι απαίσιο. Πιστέψτε με: το να γράφετε κώδικα πυρήνα σε C++ είναι μια ΓΑΜΗΜΕΝΗ ΗΛΙΘΙΑ ΙΔΕΑ.
Το γεγονός είναι ότι οι μεταγλωττιστές C++ είναι αναξιόπιστοι. Ήταν ακόμη χειρότερα το 1992, αλλά ορισμένα θεμελιώδη δεδομένα δεν έχουν αλλάξει:
– όλος ο χειρισμός εξαιρέσεων στη C++ είναι ριζικά σπασμένος. Είναι "ειδικά" σπασμένο για πυρήνες.
– οποιοσδήποτε μεταγλωττιστής ή γλώσσα που του αρέσει να κρύβει πράγματα όπως εκχωρήσεις μνήμης πίσω από την πλάτη του απλά δεν είναι καλή επιλογή για έναν πυρήνα.
– μπορείτε να γράψετε αντικειμενοστραφή κώδικα (χρήσιμο για συστήματα αρχείων κ.λπ.) στο C, «χωρίς τα σκουπίδια που είναι η C++».
Δεδομένων αυτών και πολλών άλλων σχολίων, Μπορούμε να καταλάβουμε λίγο γιατί ο Linus Torvalds θεωρεί ότι η C++ είναι μια φρικτή γλώσσα., εκτός από την κριτική για τη χρήση της γλώσσας από «προγραμματιστές χαμηλής ποιότητας, σε σημείο που είναι πολύ, πολύ πιο εύκολο να δημιουργήσετε πλήρη και εντελώς σκουπίδια με αυτό.» Και είναι αυτό Φαίνεται ότι η C++ ήταν, κάποια στιγμή, μια πικρή γεύση στο στόμα του Torvalds., μιας και στις επικρίσεις σου φαίνεται ότι προσπαθώ να δοκιμάσω την C++, καλά Αναφέρω σε ένα email ότι:
«Η C++ οδηγεί σε πολύ κακές σχεδιαστικές επιλογές. Αρχίζετε πάντα να χρησιμοποιείτε τις «ωραίες» λειτουργίες της βιβλιοθήκης γλωσσών, όπως το STL και το Boost και άλλα πλήρη και απόλυτα σκουπίδια, που μπορεί να σας «βοηθήσουν» να προγραμματίσετε, αλλά προκαλούν:
ατελείωτοι πόνοι όταν δεν λειτουργούν (και όποιος μου λέει ότι το STL και ειδικά το Boost είναι σταθερό και φορητό είναι τόσο γεμάτο ανοησίες που δεν είναι καν αστείο)
"Αναποτελεσματικά μοντέλα αφηρημένου προγραμματισμού όπου δύο χρόνια αργότερα παρατηρείτε ότι κάποια αφαίρεση δεν ήταν πολύ αποτελεσματική, αλλά τώρα όλος ο κώδικάς σας εξαρτάται από όλα τα μοντέλα όμορφων αντικειμένων γύρω του και δεν μπορείτε να το διορθώσετε χωρίς να ξαναγράψετε την αίτησή σας."
Επιστρέφοντας λοιπόν στον τίτλο της δημοσίευσης και έχοντας ήδη καταλάβει λίγο την κορυφή του παγόβουνου του μίσους που τρέφει ο Linus Torvalds προς την C++, δεν χρειάζεται να το ερευνήσουμε πολύ αφού Για τον Torvalds, το Linux δεν χρειάζεται άλλη γλώσσα γιατί το C είναι αρκετό και σε όλο αυτό το διάστημα η C είναι, ήταν και θα είναι η γλώσσα που ταιριάζει στη δουλειά του και ο Linus θα συνεχίσει να επιτίθεται σε γλώσσες προγραμματισμού που δεν του αρέσουν, ειδικά στη C++.
Και ένας από τους πολλούς λόγους για τους οποίους η C++ απλά δεν λαμβάνεται υπόψη για Linux, είναι ότι επιτρέπει εξαιρέσεις, ενώ στον Rust δεν αρέσει το C, αφού στον προγραμματισμό πυρήνα, δεν επιτρέπεται Μια ακατάσχετη εξαίρεση μπορεί να απενεργοποιήσει το λειτουργικό σύστημα και δεν θα πρέπει καν να σκεφτείτε ότι ο πυρήνας θα αποτύχει ποτέ.
Y στο «υποτιθέμενο» δεδομένου ότι ο Torvalds ήρθε να εξετάσει την C++ στο linux, αυτό θα μπορούσε να είναι κάτι περισσότερο από ένα όφελος τη συμπερίληψη τρίτης ή περισσότερων γλωσσών προγραμματισμού, θα γινόταν πρόβλημα, αφού για παράδειγμα με την εφαρμογή του Rust αυτή τη στιγμή κάποια προβλήματα αρχίζουν να έρχονται στο φως, όπως αυτά που ήδη αναφέραμε σε δημοσίευμα για τα οποία την τρέχουσα κατάσταση του Rust στο Linux.
Μεταξύ των σημερινών προκλήσεων αναφέρουμε στο άρθρο ότι μία από αυτές είναι «προσλάβετε περισσότερους αναθεωρητές για τον κώδικα που αναπτύσσεται» επιπλέον Η πρόοδος του μεταγλωττιστή Rust που βασίζεται στο GCC έχει επιβραδυνθεί, πολύΥπάρχει πολύ μικρή πιθανότητα να ξαναγράψουν μεγάλα τμήματα του πυρήνα στο Rust βραχυπρόθεσμα και ακόμη και πολύ χαμηλές πιθανότητες να το κάνουν χωρίς να εισάγουν κάθε είδους σφάλματα και ιδιαίτερα προβλήματα συμβατότητας.
Εάν αυτά τα προβλήματα, που αντανακλώνται στο Rust τα προσθέτουμε σε C++ ή σε οποιαδήποτε άλλη γλώσσα που μπορεί να προστεθεί στο Linux, Η ανάπτυξη πυρήνα θα επηρεαστεί σε μεγάλο βαθμό Και με αυτό στην αρχή δεν θα λαμβάναμε μια έκδοση κάθε δύο μήνες, αλλά θα ήταν η ανάπτυξη μεταξύ μεγαλύτερων εκδόσεων, θα απαιτούνταν περισσότεροι προγραμματιστές, περισσότεροι αναθεωρητές και όλα αυτά μεταφράζονται σε μεγαλύτερη προσπάθεια.
Χωρίς αμφιβολία, η προσέγγιση της εισαγωγής της C++ ως τρίτης γλώσσας προγραμματισμού απέχει πολύ από το να εξεταστεί και όπως ήδη αναφέραμε, ένα από τα κύρια εμπόδια σε αυτό είναι ο ίδιος ο Linus Torvalds.