Πολλά από τα έργα C που υπάρχουν σήμερα ξεκίνησαν πριν από δεκαετίες.
Η ανάπτυξη του λειτουργικού συστήματος UNIX ξεκίνησε το 1969 και ο κώδικάς του ξαναγράφηκε το C το 1972. Η γλώσσα C δημιουργήθηκε για να μετακινήσει τον κώδικα πυρήνα UNIX από τη συναρμολόγηση σε μια γλώσσα υψηλότερου επιπέδου, που θα έκανε τις ίδιες εργασίες με λιγότερες γραμμές κώδικα .
Παράδειγμα api φυσικής γλώσσας google
Η ανάπτυξη βάσεων δεδομένων της Oracle ξεκίνησε το 1977 και ο κώδικάς της ξαναγράφηκε από τη συναρμολόγηση σε C το 1983. Έγινε μια από τις πιο δημοφιλείς βάσεις δεδομένων στον κόσμο.
Το 1985 κυκλοφόρησαν τα Windows 1.0. Αν και ο πηγαίος κώδικας των Windows δεν είναι διαθέσιμος στο κοινό, έχει δηλωθεί ότι Ο πυρήνας του γράφεται ως επί το πλείστον σε C , με ορισμένα εξαρτήματα στη συναρμολόγηση. Η ανάπτυξη του πυρήνα του Linux ξεκίνησε το 1991 και γράφτηκε επίσης στο C. Το επόμενο έτος, κυκλοφόρησε με την άδεια GNU και χρησιμοποιήθηκε ως μέρος του λειτουργικού συστήματος GNU. Το ίδιο το λειτουργικό σύστημα GNU ξεκίνησε να χρησιμοποιεί γλώσσες προγραμματισμού C και Lisp, έτσι πολλά από τα στοιχεία του είναι γραμμένα σε C.
Αλλά ο προγραμματισμός C δεν περιορίζεται σε έργα που ξεκίνησαν πριν από δεκαετίες, όταν δεν υπήρχαν τόσες πολλές γλώσσες προγραμματισμού όπως σήμερα. Πολλά έργα Γ ξεκινούν ακόμα σήμερα. υπάρχουν μερικοί καλοί λόγοι για αυτό.
Παρά την επικράτηση των γλωσσών υψηλότερου επιπέδου, ο Γ συνεχίζει να ενδυναμώνει τον κόσμο. Τα παρακάτω είναι μερικά από τα συστήματα που χρησιμοποιούνται από εκατομμύρια και είναι προγραμματισμένα στη γλώσσα Γ.
Ο πυρήνας των Windows της Microsoft έχει αναπτυχθεί κυρίως στο C , με ορισμένα μέρη στη γλώσσα συναρμολόγησης. Για δεκαετίες, το πιο χρησιμοποιούμενο λειτουργικό σύστημα στον κόσμο, με περίπου το 90 τοις εκατό του μεριδίου αγοράς , τροφοδοτήθηκε από έναν πυρήνα γραμμένο σε C.
Το Linux είναι επίσης γραμμένο ως επί το πλείστον σε C, με ορισμένα μέρη σε συναρμολόγηση. Περίπου το 97 τοις εκατό των 500 ισχυρότερων υπερυπολογιστών στον κόσμο εκτελέστε τον πυρήνα Linux . Χρησιμοποιείται επίσης σε πολλούς προσωπικούς υπολογιστές.
Οι υπολογιστές Mac τροφοδοτούνται επίσης από το C, από τότε ο πυρήνας OS X γράφεται κυρίως σε C . Κάθε πρόγραμμα και πρόγραμμα οδήγησης σε Mac, όπως σε υπολογιστές με Windows και Linux, εκτελείται σε πυρήνα με C.
iOS , Android και Windows Phone Οι πυρήνες γράφονται επίσης σε C. Είναι απλώς προσαρμογές για κινητές συσκευές από υπάρχοντες πυρήνες Mac OS, Linux και Windows. Έτσι, τα smartphone που χρησιμοποιείτε κάθε μέρα εκτελούνται σε πυρήνα C.
Οι πιο δημοφιλείς βάσεις δεδομένων στον κόσμο, όπως Βάση δεδομένων Oracle, MySQL, MS SQL Server , και PostgreSQL , κωδικοποιούνται σε C (τα πρώτα τρία από αυτά στην πραγματικότητα και στα C και C ++).
Οι βάσεις δεδομένων χρησιμοποιούνται σε όλα τα είδη συστημάτων: οικονομικά, κυβερνητικά, μέσα μαζικής ενημέρωσης, ψυχαγωγία, τηλεπικοινωνίες, υγεία, εκπαίδευση, λιανική, κοινωνικά δίκτυα, ιστός και παρόμοια.
Οι ταινίες 3D δημιουργούνται με εφαρμογές που είναι γενικά γραμμένες σε C και C ++. Αυτές οι εφαρμογές πρέπει να είναι πολύ αποτελεσματικές και γρήγορες, δεδομένου ότι χειρίζονται τεράστιο όγκο δεδομένων και κάνουν πολλούς υπολογισμούς ανά δευτερόλεπτο. Όσο πιο αποτελεσματικοί είναι, τόσο λιγότερος χρόνος χρειάζεται για τους καλλιτέχνες και τους εμψυχωτές να δημιουργήσουν τις ταινίες και τόσο περισσότερα χρήματα εξοικονομεί η εταιρεία.
Φανταστείτε ότι ξυπνάτε μια μέρα και πηγαίνετε για ψώνια. Το ξυπνητήρι που σας ξυπνά πιθανότατα είναι προγραμματισμένο σε C. Στη συνέχεια, χρησιμοποιείτε το φούρνο μικροκυμάτων ή την καφετιέρα σας για να φτιάξετε το πρωινό σας. Είναι επίσης ενσωματωμένα συστήματα και επομένως πιθανώς προγραμματίζονται στο C. Ενεργοποιείτε την τηλεόραση ή το ραδιόφωνο ενώ τρώτε το πρωινό σας. Αυτά είναι επίσης ενσωματωμένα συστήματα, που τροφοδοτούνται από το C. Όταν ανοίγετε την πόρτα του γκαράζ σας με το τηλεχειριστήριο, χρησιμοποιείτε επίσης ένα ενσωματωμένο σύστημα που είναι πιθανότατα προγραμματισμένο στο C .
Μετά μπαίνετε στο αυτοκίνητό σας. Εάν έχει τις ακόλουθες δυνατότητες, επίσης προγραμματισμένη στο C:
Φτάνετε στο κατάστημα, σταθμεύστε το αυτοκίνητό σας και πηγαίνετε σε ένα μηχάνημα αυτόματης πώλησης για να πάρετε μια σόδα. Ποια γλώσσα χρησιμοποίησαν για να προγραμματίσουν αυτό το μηχάνημα αυτόματης πώλησης; Πιθανώς Γ. Τότε αγοράζετε κάτι στο κατάστημα. Το ταμειακό πρόγραμμα είναι επίσης προγραμματισμένο σε C. Και όταν πληρώνετε με την πιστωτική σας κάρτα; Το μαντέψατε: ο αναγνώστης της πιστωτικής κάρτας είναι, πάλι, πιθανώς προγραμματισμένος στο C.
Όλες αυτές οι συσκευές είναι ενσωματωμένα συστήματα. Είναι σαν μικροί υπολογιστές που διαθέτουν μικροελεγκτή / μικροεπεξεργαστή μέσα στο οποίο εκτελείται ένα πρόγραμμα, που ονομάζεται επίσης υλικολογισμικό, σε ενσωματωμένες συσκευές. Αυτό το πρόγραμμα πρέπει να ανιχνεύει πατήματα πλήκτρων και να ενεργεί ανάλογα, και επίσης να εμφανίζει πληροφορίες στον χρήστη. Για παράδειγμα, το ξυπνητήρι πρέπει να αλληλεπιδρά με τον χρήστη, ανιχνεύοντας ποιο κουμπί πατάει ο χρήστης και, μερικές φορές, πόσο καιρό πιέζεται, και προγραμματίζει τη συσκευή αναλόγως, όλα ενώ εμφανίζει στον χρήστη τις σχετικές πληροφορίες. Το σύστημα αντιμπλοκαρίσματος φρένων του αυτοκινήτου, για παράδειγμα, πρέπει να είναι σε θέση να ανιχνεύσει ξαφνικό κλείδωμα των ελαστικών και να δράσει για να απελευθερώσει την πίεση στα φρένα για μικρό χρονικό διάστημα, ξεκλειδώνοντας τα και έτσι αποτρέποντας την ανεξέλεγκτη ολίσθηση. Όλοι αυτοί οι υπολογισμοί γίνονται από ένα προγραμματισμένο ενσωματωμένο σύστημα.
διαφορά μεταξύ s corp και c corp
Αν και η γλώσσα προγραμματισμού που χρησιμοποιείται σε ενσωματωμένα συστήματα μπορεί να διαφέρει από μάρκα σε μάρκα, συνήθως προγραμματίζεται στη γλώσσα C, λόγω των χαρακτηριστικών της γλώσσας ευελιξίας, αποτελεσματικότητας, απόδοσης και εγγύτητας με το υλικό.
Υπάρχουν πολλές γλώσσες προγραμματισμού, σήμερα, που επιτρέπουν στους προγραμματιστές να είναι πιο παραγωγικοί από ό, τι με το C για διαφορετικά είδη έργων. Υπάρχουν γλώσσες υψηλότερου επιπέδου που παρέχουν πολύ μεγαλύτερες ενσωματωμένες βιβλιοθήκες που απλοποιούν την εργασία με JSON, XML, UI, ιστοσελίδες, αιτήματα πελατών, συνδέσεις βάσης δεδομένων, χειραγώγηση μέσων και ούτω καθεξής.
Παρ 'όλα αυτά, υπάρχουν πολλοί λόγοι να πιστεύουμε ότι ο προγραμματισμός C θα παραμείνει ενεργός για μεγάλο χρονικό διάστημα.
Στις γλώσσες προγραμματισμού ένα μέγεθος δεν ταιριάζει σε όλους. Ακολουθούν ορισμένοι λόγοι για τους οποίους το C είναι ασυναγώνιστο και σχεδόν υποχρεωτικό για ορισμένες εφαρμογές.
Το C είναι σχεδόν ένα φορητή συναρμολόγηση Γλώσσα. Είναι όσο το δυνατόν πιο κοντά στο μηχάνημα, ενώ είναι σχεδόν καθολικά διαθέσιμο για υπάρχουσες αρχιτεκτονικές επεξεργαστών. Υπάρχει τουλάχιστον ένας μεταγλωττιστής C για σχεδόν κάθε υπάρχουσα αρχιτεκτονική. Και στις μέρες μας, λόγω των εξαιρετικά βελτιστοποιημένων δυαδικών αρχείων που δημιουργούνται από τους σύγχρονους μεταγλωττιστές, δεν είναι εύκολο να βελτιωθεί η παραγωγή τους με χειρόγραφη συναρμολόγηση.
Αυτή είναι η φορητότητα και η αποτελεσματικότητά του που 'Οι μεταγλωττιστές, οι βιβλιοθήκες και οι διερμηνείς άλλων γλωσσών προγραμματισμού εφαρμόζονται συχνά στο C' . Ερμηνευμένες γλώσσες όπως Πύθων , Ρουμπίνι , και PHP έχουν τις πρωταρχικές εφαρμογές τους γραμμένες σε Γ. Χρησιμοποιείται ακόμη και από μεταγλωττιστές για άλλες γλώσσες για επικοινωνία με το μηχάνημα. Για παράδειγμα, το C είναι η ενδιάμεση γλώσσα που διέπεται από τον Άιφελ και τον Φορθ. Αυτό σημαίνει ότι, αντί να δημιουργείται κωδικός μηχανής για κάθε αρχιτεκτονική που υποστηρίζεται, οι μεταγλωττιστές για αυτές τις γλώσσες δημιουργούν απλώς ενδιάμεσο κώδικα C και ο μεταγλωττιστής C χειρίζεται τη δημιουργία κώδικα μηχανής.
Το C έχει επίσης γίνει κοινή γλώσσα για επικοινωνία μεταξύ προγραμματιστών. Ως Alex Allain, Διευθυντής Dropbox Engineering και δημιουργός του Cprogramming.com, το βάζει :
express js έναντι κόμβου js
Το C είναι μια εξαιρετική γλώσσα για την έκφραση κοινών ιδεών στον προγραμματισμό με τρόπο που οι περισσότεροι άνθρωποι είναι άνετοι. Επιπλέον, πολλές από τις αρχές που χρησιμοποιούνται στο C - για παράδειγμα,
argc
καιargv
για παραμέτρους γραμμής εντολών, καθώς και κατασκευές βρόχου και μεταβλητούς τύπους - θα εμφανίζονται σε πολλές άλλες γλώσσες που μαθαίνετε, ώστε να μπορείτε να μιλήσετε με άτομα ακόμα και αν δεν γνωρίζουν το C με τρόπο που είναι κοινός και στα δύο από εσένα.
Η αυθαίρετη πρόσβαση στη διεύθυνση μνήμης και η αριθμητική του δείκτη είναι ένα σημαντικό χαρακτηριστικό που κάνει το C ιδανικό για προγραμματισμός συστήματος (λειτουργικά συστήματα και ενσωματωμένα συστήματα).
Στο όριο υλικού / λογισμικού, τα συστήματα υπολογιστών και οι μικροελεγκτές χαρτογραφούν τα περιφερειακά τους και τις καρφίτσες εισόδου / εξόδου σε διευθύνσεις μνήμης. Οι εφαρμογές συστήματος πρέπει να διαβάζουν και να γράφουν σε αυτές τις προσαρμοσμένες τοποθεσίες μνήμης για να επικοινωνούν με τον κόσμο. Επομένως, η ικανότητα του C να χειρίζεται αυθαίρετες διευθύνσεις μνήμης είναι επιτακτική για τον προγραμματισμό του συστήματος.
Ένας μικροελεγκτής θα μπορούσε να αρχειοθετηθεί, για παράδειγμα, έτσι ώστε το byte στη διεύθυνση μνήμης 0x40008000 να αποσταλεί από το καθολικός ασύγχρονος δέκτης / πομπός (ή UART, ένα κοινό στοιχείο υλικού για επικοινωνία με περιφερειακά) κάθε φορά που ο αριθμός bit 4 της διεύθυνσης 0x40008001 ορίζεται σε 1 και ότι αφού ορίσετε αυτό το bit, θα ρυθμιστεί αυτόματα από το περιφερειακό.
Αυτός θα ήταν ο κωδικός για μια συνάρτηση C που στέλνει ένα byte μέσω αυτού του UART:
#define UART_BYTE *(char *)0x40008000 #define UART_SEND *(volatile char *)0x40008001 |= 0x08 void send_uart(char byte) { UART_BYTE = byte; // write byte to 0x40008000 address UART_SEND; // set bit number 4 of address 0x40008001 }
Η πρώτη γραμμή της συνάρτησης θα επεκταθεί σε:
*(char *)0x40008000 = byte;
Αυτή η γραμμή λέει στον μεταγλωττιστή να ερμηνεύσει την τιμή 0x40008000
ως δείκτης σε ένα char
, στη συνέχεια ως αποδιάταξη (δώστε την τιμή που υποδεικνύεται από) αυτόν τον δείκτη (με τον αριστερότερο χειριστή *
χειριστή) και τέλος να αντιστοιχίσετε byte
τιμή σε αυτόν τον αναφερόμενο δείκτη. Με άλλα λόγια: γράψτε την τιμή της μεταβλητής byte
στη διεύθυνση μνήμης 0x40008000
.
Η επόμενη γραμμή θα επεκταθεί σε:
*(volatile char *)0x40008001 |= 0x08;
Σε αυτήν τη γραμμή, πραγματοποιούμε μια λειτουργία bitwise Ή στην τιμή στη διεύθυνση 0x40008001
και η τιμή 0x08
(00001000
σε δυαδικό, δηλαδή 1 στο bit αριθμός 4) και αποθηκεύστε το αποτέλεσμα στη διεύθυνση 0x40008001
. Με άλλα λόγια: ορίζουμε το bit 4 του byte που βρίσκεται στη διεύθυνση 0x40008001. Δηλώνουμε επίσης ότι η τιμή στη διεύθυνση 0x40008001
είναι πτητικός . Αυτό λέει στον μεταγλωττιστή ότι αυτή η τιμή μπορεί να τροποποιηθεί με διαδικασίες εκτός του κώδικα μας, οπότε ο μεταγλωττιστής δεν θα κάνει υποθέσεις σχετικά με την τιμή σε αυτήν τη διεύθυνση αφού γράψει σε αυτήν. (Σε αυτήν την περίπτωση, αυτό το bit δεν ρυθμίζεται από το υλικό UART αμέσως μόλις το ρυθμίσουμε από λογισμικό.) Αυτές οι πληροφορίες είναι σημαντικές για το εργαλείο βελτιστοποίησης του μεταγλωττιστή. Αν το κάναμε μέσα σε ένα for
βρόχος, για παράδειγμα, χωρίς να διευκρινιστεί ότι η τιμή είναι πτητική, ο μεταγλωττιστής μπορεί να υποθέσει ότι αυτή η τιμή δεν αλλάζει ποτέ μετά τον ορισμό και παραλείπει την εκτέλεση της εντολής μετά τον πρώτο βρόχο.
Ένα κοινό χαρακτηριστικό γλώσσας στο οποίο δεν μπορεί να βασιστεί ο προγραμματισμός του συστήματος είναι η συλλογή απορριμμάτων ή ακόμα και η δυναμική κατανομή για ορισμένα ενσωματωμένα συστήματα. Οι ενσωματωμένες εφαρμογές είναι πολύ περιορισμένες σε χρόνο και πόρους μνήμης. Χρησιμοποιούνται συχνά για συστήματα σε πραγματικό χρόνο , όπου δεν μπορεί να γίνει μια μη ντετερμινιστική κλήση στον συλλέκτη απορριμμάτων. Και εάν η δυναμική κατανομή δεν μπορεί να χρησιμοποιηθεί λόγω της έλλειψης μνήμης, είναι πολύ σημαντικό να υπάρχουν άλλοι μηχανισμοί διαχείρισης μνήμης, όπως η τοποθέτηση δεδομένων σε προσαρμοσμένες διευθύνσεις, όπως επιτρέπουν οι δείκτες C. Οι γλώσσες που εξαρτώνται σε μεγάλο βαθμό από τη δυναμική κατανομή και τη συλλογή απορριμμάτων δεν θα ήταν κατάλληλες για συστήματα περιορισμένων πόρων.
Το C έχει πολύ μικρό χρόνο εκτέλεσης. Και το αποτύπωμα μνήμης για τον κωδικό του είναι μικρότερο από ό, τι για τις περισσότερες άλλες γλώσσες.
είναι να αντιδρά ένα πλαίσιο ή βιβλιοθήκη
Σε σύγκριση με το C ++, για παράδειγμα, ένα δυαδικό που δημιουργείται από C που πηγαίνει σε μια ενσωματωμένη συσκευή έχει περίπου το μισό μέγεθος ενός δυαδικού που δημιουργείται από παρόμοιο κώδικα C ++. Μία από τις κύριες αιτίες για αυτό είναι η υποστήριξη εξαιρέσεων.
Οι εξαιρέσεις είναι ένα εξαιρετικό εργαλείο που προστέθηκε από το C ++ πάνω από το C και, εάν δεν ενεργοποιηθεί και εφαρμοστεί έξυπνα, δεν έχουν σχεδόν καθόλου χρόνο εκτέλεσης (αλλά με κόστος αύξησης του μεγέθους κώδικα).
Ας δούμε ένα παράδειγμα στο C ++:
// Class A declaration. Methods defined somewhere else; class A { public: A(); // Constructor ~A(); // Destructor (called when the object goes out of scope or is deleted) void myMethod(); // Just a method }; // Class B declaration. Methods defined somewhere else; class B { public: B(); // Constructor ~B(); // Destructor void myMethod(); // Just a method }; // Class C declaration. Methods defined somewhere else; class C { public: C(); // Constructor ~C(); // Destructor void myMethod(); // Just a method }; void myFunction() { A a; // Constructor a.A() called. (Checkpoint 1) { B b; // Constructor b.B() called. (Checkpoint 2) b.myMethod(); // (Checkpoint 3) } // b.~B() destructor called. (Checkpoint 4) { C c; // Constructor c.C() called. (Checkpoint 5) c.myMethod(); // (Checkpoint 6) } // c.~C() destructor called. (Checkpoint 7) a.myMethod(); // (Checkpoint 8) } // a.~A() destructor called. (Checkpoint 9)
Μέθοδοι A
, B
και C
οι τάξεις ορίζονται κάπου αλλού (για παράδειγμα σε άλλα αρχεία). Επομένως, ο μεταγλωττιστής δεν μπορεί να τις αναλύσει και δεν μπορεί να γνωρίζει εάν θα ρίξει εξαιρέσεις. Επομένως, πρέπει να προετοιμαστεί για να χειριστεί τις εξαιρέσεις που απορρέουν από οποιονδήποτε κατασκευαστή, καταστροφέα ή άλλη κλήση μεθόδου. Οι καταστροφείς δεν πρέπει να ρίχνουν (πολύ κακή πρακτική), αλλά ο χρήστης θα μπορούσε να ρίξει ούτως ή άλλως, ή θα μπορούσε να ρίξει έμμεσα καλώντας κάποια λειτουργία ή μέθοδο (ρητά ή σιωπηρά) που ρίχνει μια εξαίρεση.
Εάν κάποια από τις κλήσεις στο myFunction
ρίξτε μια εξαίρεση, το στοίβα ξετύλιγμα Ο μηχανισμός πρέπει να μπορεί να καλεί όλους τους καταστροφείς για τα αντικείμενα που είχαν ήδη κατασκευαστεί. Μια εφαρμογή για τον μηχανισμό ξετυλίγματος στοίβας θα χρησιμοποιήσει το διεύθυνση επιστροφής της τελευταίας κλήσης από αυτήν τη λειτουργία για την επαλήθευση του «αριθμού σημείου ελέγχου» της κλήσης που ενεργοποίησε την εξαίρεση (αυτή είναι η απλή εξήγηση). Αυτό το κάνει χρησιμοποιώντας μια βοηθητική λειτουργία αυτόματης δημιουργίας (ένα είδος πίνακα αναζήτησης) που θα χρησιμοποιηθεί για ξετύλιγμα στοίβας σε περίπτωση που υπάρξει εξαίρεση από το σώμα αυτής της λειτουργίας, η οποία θα είναι παρόμοια με αυτήν:
// Possible autogenerated function void autogeneratedStackUnwindingFor_myFunction(int checkpoint) { switch (checkpoint) { // case 1 and 9: do nothing; case 3: b.~B(); goto destroyA; // jumps to location of destroyA label case 6: c.~C(); // also goes to destroyA as that is the next line destroyA: // label case 2: case 4: case 5: case 7: case 8: a.~A(); } }
Εάν η εξαίρεση απορριφθεί από τα σημεία ελέγχου 1 και 9, κανένα αντικείμενο δεν χρειάζεται καταστροφή. Για σημείο ελέγχου 3, b
και a
πρέπει να καταστραφεί. Για σημείο ελέγχου 6, c
και a
πρέπει να καταστραφεί. Σε όλες τις περιπτώσεις πρέπει να τηρείται η εντολή καταστροφής. Για σημεία ελέγχου 2, 4, 5, 7 και 8, μόνο αντικείμενο a
πρέπει να καταστραφεί.
Αυτή η βοηθητική λειτουργία προσθέτει μέγεθος στον κώδικα. Αυτό είναι μέρος του γενικού χώρου που προσθέτει το C ++ στο C. Πολλές ενσωματωμένες εφαρμογές δεν μπορούν να αντέξουν αυτόν τον επιπλέον χώρο. Επομένως, οι μεταγλωττιστές C ++ για ενσωματωμένα συστήματα έχουν συχνά μια σημαία για απενεργοποίηση εξαιρέσεων. Η απενεργοποίηση εξαιρέσεων στο C ++ δεν είναι δωρεάν, επειδή το Βασική βιβλιοθήκη προτύπων βασίζεται σε μεγάλο βαθμό σε εξαιρέσεις για την ενημέρωση σφαλμάτων. Η χρήση αυτού του τροποποιημένου σχήματος, χωρίς εξαιρέσεις, απαιτεί περισσότερη εκπαίδευση για Προγραμματιστές C ++ για να εντοπίσετε πιθανά προβλήματα ή να εντοπίσετε σφάλματα.
Και, μιλάμε για το C ++, μια γλώσσα της οποίας η αρχή είναι: 'Δεν πληρώνετε για αυτό που δεν χρησιμοποιείτε.' Αυτή η αύξηση του δυαδικού μεγέθους επιδεινώνεται για άλλες γλώσσες που προσθέτουν επιπλέον επιβάρυνση με άλλες λειτουργίες που είναι πολύ χρήσιμες αλλά δεν μπορούν να καλυφθούν από ενσωματωμένα συστήματα. Ενώ το C δεν σας δίνει τη χρήση αυτών των επιπλέον δυνατοτήτων, επιτρέπει πολύ πιο συμπαγές αποτύπωμα κώδικα από τις άλλες γλώσσες.
Η Γ δεν είναι μια δύσκολη γλώσσα για μάθηση, οπότε όλα τα οφέλη από την εκμάθηση θα είναι αρκετά φθηνά. Ας δούμε μερικά από αυτά τα οφέλη.
Όπως ήδη αναφέρθηκε, το C είναι ένα κοινή γλώσσα για προγραμματιστές. Πολλές εφαρμογές νέων αλγορίθμων σε βιβλία ή στο Διαδίκτυο διατίθενται πρώτα (ή μόνο) στο C από τους συγγραφείς τους. Αυτό δίνει τη μέγιστη δυνατή φορητότητα για την υλοποίηση. Έχω δει προγραμματιστές που παλεύουν στο Διαδίκτυο να ξαναγράψουν έναν αλγόριθμο C σε άλλες γλώσσες προγραμματισμού, επειδή δεν ήξερε πολύ βασικές έννοιες του C.
Λάβετε υπόψη ότι το C είναι μια παλιά και διαδεδομένη γλώσσα, ώστε να μπορείτε να βρείτε όλους τους τύπους αλγορίθμων γραμμένους στο C στον ιστό. Επομένως, πιθανότατα θα επωφεληθείτε από τη γνώση αυτής της γλώσσας.
Όταν συζητάμε για τη συμπεριφορά ορισμένων τμημάτων κώδικα, ή ορισμένων χαρακτηριστικών άλλων γλωσσών, με συναδέλφους, καταλήγουμε να 'μιλάμε στο C:' Αυτό το τμήμα περνά ένα 'δείκτη' στο αντικείμενο ή αντιγράφει ολόκληρο το αντικείμενο; Θα μπορούσε να γίνει κάποιο 'cast' εδώ; Και ούτω καθεξής.
Σπάνια θα συζητούσαμε (ή σκεφτόμαστε) τις οδηγίες συναρμολόγησης που εκτελεί ένα τμήμα κώδικα κατά την ανάλυση της συμπεριφοράς ενός τμήματος κώδικα μιας γλώσσας υψηλού επιπέδου. Αντ 'αυτού, όταν συζητάμε τι κάνει το μηχάνημα, μιλάμε (ή σκεφτόμαστε) πολύ καθαρά στο C.
γιατί χρειάζομαι το node.js
Επιπλέον, εάν δεν μπορείτε να σταματήσετε και να σκεφτείτε έτσι τι κάνετε, μπορείτε να καταλήξετε στον προγραμματισμό με κάποιο είδος δεισιδαιμονίας για το πώς γίνονται (μαγικά) τα πράγματα.
Πολλά ενδιαφέροντα έργα , από μεγάλους διακομιστές βάσεων δεδομένων ή πυρήνες λειτουργικού συστήματος, έως μικρές ενσωματωμένες εφαρμογές που μπορείτε ακόμη και να κάνετε στο σπίτι για την προσωπική σας ικανοποίηση και διασκέδαση, γίνονται σε C. Δεν υπάρχει λόγος να σταματήσετε να κάνετε πράγματα που μπορεί να λατρέψετε για τον μοναδικό λόγο που δεν έχετε Δεν ξέρω μια παλιά και μικρή, αλλά ισχυρή και δοκιμασμένη στο χρόνο γλώσσα προγραμματισμού όπως το C.
Η γλώσσα προγραμματισμού C δεν φαίνεται να έχει ημερομηνία λήξης. Η εγγύτητα με το υλικό, η μεγάλη φορητότητα και η ντετερμινιστική χρήση των πόρων το καθιστούν ιδανικό για ανάπτυξη χαμηλού επιπέδου για πράγματα όπως πυρήνες λειτουργικού συστήματος και ενσωματωμένο λογισμικό. Η ευελιξία, η αποδοτικότητα και η καλή του απόδοση το καθιστούν μια εξαιρετική επιλογή για λογισμικό χειρισμού δεδομένων υψηλής πολυπλοκότητας, όπως βάσεις δεδομένων ή 3D animation. Το γεγονός ότι πολλές γλώσσες προγραμματισμού σήμερα είναι καλύτερες από το C για την προβλεπόμενη χρήση τους, δεν σημαίνει ότι κέρδισαν το C σε όλες τις περιοχές. Το C είναι ακόμα αξεπέραστο όταν η απόδοση είναι η προτεραιότητα.
Ο κόσμος λειτουργεί με συσκευές C. Χρησιμοποιούμε αυτές τις συσκευές κάθε μέρα είτε το συνειδητοποιούμε είτε όχι. Το C είναι το παρελθόν, το παρόν και, όσο μπορούμε να δούμε, εξακολουθεί να είναι το μέλλον για πολλούς τομείς λογισμικού.
Σχετίζεται με: Πώς να μάθετε τις γλώσσες C και C ++: Η απόλυτη λίστα