Μπορεί να μην βλέπετε παντού τη γλώσσα προγραμματισμού C, αλλά είναι ανεπαίσθητα παρούσα παντού. Όταν ξεκινάτε το αυτοκίνητό σας, η μητρική πλακέτα του αυτοκινήτου σας πιθανότατα χρησιμοποιεί C για να επικοινωνήσει με τα διάφορα εξαρτήματά του. Όταν χρησιμοποιείτε το τηλέφωνό σας, είτε πρόκειται για iOS είτε για Android, ο πυρήνας του λειτουργικού συστήματος είναι γραμμένος σε C. Δεν μπορείς να αγνοήσεις τη γλώσσα C.

Εντάξει. Κακό λογοπαίγνιο. Αλλά ποια είναι η ιστορία πίσω από το γράμμα C; Όταν εμφανίστηκε η γλώσσα προγραμματισμού C, έφερε επανάσταση στον κόσμο. Αλλά γιατί ονομάστηκε C;
Γρήγοροι σύνδεσμοι
Μια φορά κι έναν καιρό, στα Εργαστήρια Bell…
Λαμπρά μυαλά και τεράστιοι προϋπολογισμοί

Για να απαντήσουμε σε αυτό, θα πρέπει να γυρίσουμε πίσω στο χρόνο και να δούμε ένα μικρό αλλά εκτεταμένο κτίριο που βρίσκεται στο Νιου Τζέρσεϊ. Αυτό το κτίριο είναι τα Bell Laboratories. Ιδρύθηκε από τον Alexander Graham Bell (σας φαίνεται γνωστό το όνομα;) και εκείνη την εποχή ανήκε στην AT&T —η οποία ήταν, στην πραγματικότητα, ένα μονοπώλιο που υποστηριζόταν από την κυβέρνηση— τα Bell Laboratories απολάμβαναν έναν μεγάλο προϋπολογισμό και την ελευθερία να πειραματίζονται και να πειραματίζονται με ιδέες.
Αυτή η μη επεμβατική προσέγγιση οδήγησε στην εφεύρεση του τρανζίστορ (γι' αυτό και οι υπολογιστές δεν έχουν πλέον το μέγεθος οικοδομικών τετραγώνων), των λέιζερ και των ηλιακών κυψελών, για να αναφέρουμε μόνο μερικά. Η γλώσσα προγραμματισμού C είναι επίσης προϊόν των θρυλικών Bell Labs. Αλλά πριν υπάρξει η C, υπήρχε η B.
Υπήρχε μια γλώσσα Β
Β για καλύτερο BCPL

Το 1969, ο Ken Thompson, ένας λαμπρός και αξιοσημείωτα ανεξάρτητος ερευνητής στα Bell Labs, εργαζόταν σε ένα τεράστιο και υπερβολικό έργο λειτουργικού συστήματος που ονομαζόταν Multics. Όταν τα Bell Labs διέκοψαν το έργο Multics, ο Thompson βρέθηκε με λίγο ελεύθερο χρόνο και ένα πολύ συγκεκριμένο πρόβλημα: ήθελε να παίξει ένα παιχνίδι που είχε γράψει η ίδια και ονομαζόταν... Διαστημικό ταξίδι Σε έναν παλιό, σκονισμένο υπολογιστή DEC PDP-7 που βρισκόταν στο διάδρομο.

Το PDP-7 ήτανΗ εικόνα βρίσκεται στα δεξιά.Ήταν ξεπερασμένο ακόμη και για τα πρότυπα της δεκαετίας του 1960. Είχε πολύ λίγη μνήμη (περίπου 8 kilobyte). Για να τρέξει το παιχνίδι του στο PDP-7, ο Thompson έχτισε ένα νέο λειτουργικό σύστημα από την αρχή. Αυτή ήταν η γέννηση του Unix. Ωστόσο, η συγγραφή του Unix στη γλώσσα... κώδικας συναρμολόγησης (Η ακατέργαστη, πρωτόγονη γλώσσα που μιλάει στις μηχανές χρησιμοποιώντας 1 και 0) ήταν ένας εφιάλτης. Ο Τόμπσον χρειαζόταν μια γλώσσα υψηλού επιπέδου, κάτι πιο κοντά στην ανθρώπινη λογική.
Εκείνη την εποχή, η σχετική γλώσσα προγραμματισμού υψηλού επιπέδου ήταν η BCPL (Basic Combined Programming Language). Η BCPL ήταν πολύ μεγάλη για το στενό υλικό της PDP-7, οπότε ο Thompson πήρε τη λέξη «Basic» από την BCPL, την αφαίρεσε από τα ουσιώδη στοιχεία της και δημιούργησε μια νέα γλώσσα. Ονόμασε αυτή τη νέα γλώσσα B. Ήταν γρήγορη, ήταν απλή και ήταν το πρώτο βήμα προς τον σύγχρονο προγραμματισμό.

Ωστόσο, η γλώσσα Β ήταν τελικά καταδικασμένη. Λειτουργούσε καλά με την PDP-7, αλλά όταν τα Bell Labs αναβάθμισαν στην πιο προηγμένη PDP-11, μια γλώσσα χωρίς συγκεκριμένο τύπο όπως η Β δεν ήταν πλέον επαρκής. Ήταν αναποτελεσματική και έκανε τη νέα, ακριβή PDP-11 να τρέχει πολύ πιο αργά από ό,τι ήταν ικανή.
Το C έγινε το νέο B
Ο Β πήρε προαγωγή

Αυτό μας φέρνει στον Ντένις Ρίτσι, τον στενό φίλο και συνεργάτη του Τόμσον. Ο Ρίτσι συνειδητοποίησε ότι για να επιβιώσει το Unix σε νεότερα μηχανήματα, η γλώσσα στην οποία ήταν γραμμένο έπρεπε να εξελιχθεί - έτσι αφιέρωσε δύο χρόνια δουλεύοντας πάνω στη Β για να τη διορθώσει.
Η καινοτομία του ήταν η εισαγωγή του Συστήματος Τύπων. Δημιούργησε τον τύπο char για τους χαρακτήρες και τον τύπο int για τους ακέραιους αριθμούς. Τώρα ο προγραμματιστής μπορούσε να πει στον υπολογιστή ότι ένα πλαίσιο προοριζόταν για έναν μόνο χαρακτήρα, επομένως δεν σπαταλούσε επιπλέον χώρο σε αυτό. Αυτό επέτρεψε στο πρόγραμμα να γίνει πιο φιλικό προς τις μηχανές.

Για ένα διάστημα, οι Ritchie και Thompson αναφέρονταν απλώς σε αυτό το έργο ως «Νέα Β». Αλλά καθώς η γλώσσα γινόταν όλο και πιο δημοφιλής και ισχυρή, συνειδητοποίησαν ότι άξιζε τη δική της ταυτότητα. Καθώς ήταν ο διάδοχος της γλώσσας Β, κοίταξαν το επόμενο γράμμα του αλφαβήτου και το ονόμασαν C.
Στη συνέχεια, το 1973, οι Ritchie και Thompson ξαναέγραψαν τον πυρήνα του λειτουργικού συστήματος Unix σε C. Πριν από αυτό, τα λειτουργικά συστήματα γράφονταν πάντα σε γλώσσα assembly επειδή όλοι γνώριζαν ότι οι γλώσσες υψηλού επιπέδου ήταν πολύ αργές. Η C απέδειξε ότι όλοι έκαναν λάθος. Ήταν γρήγορη, κομψή και, το πιο σημαντικό, φορητή.
...μετά ήρθε ο Δ.
Ή τι?

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

Όταν ήρθε η ώρα για τον Στράουστραπ (Δείτε τον στο γραφείο του στα αριστεράΈχοντας δώσει το όνομα της εφεύρεσής του, το επόμενο λογικό βήμα θα ήταν η D. Αλλά οι άνθρωποι στα Bell Labs λάτρευαν τα λογοπαίγνια. Έτσι, ο Maschetti, ένας συνάδελφος του Stroustrop, πρότεινε την C++. Τουλάχιστον για αυτούς, ήταν μια ιδιοφυΐα. Υποδήλωνε ότι η γλώσσα ήταν η C, αλλά εμπλουτισμένη με μία. Η C ήταν... Αλλά καλύτερα.
Αυτή η επιλογή ονόματος ήταν τόσο ελκυστική που η θέση D στην αλφαβητική ακολουθία παρέμεινε κενή για σχεδόν είκοσι χρόνια. Η C++ έγινε το πρότυπο για τα πάντα, από βιντεοπαιχνίδια μέχρι προγράμματα περιήγησης ιστού, και ο κόσμος απλώς προχώρησε. Αν δεν γνωρίζετε, στη C, πώς να αυξήσετε έναν αριθμό κατά ένα, χρησιμοποιείτε μια ειδική εντολή: ++Αν έχετε μια μεταβλητή x Και έγραψε x++Θα γίνει x + 1.
Η γλώσσα D υπάρχει ήδη.
Αλλά εμφανίστηκε δεκαετίες αργότερα

Μόλις το 2001 ο βετεράνος μηχανικός switcher, Walter Bright, αποφάσισε τελικά να διεκδικήσει τον τίτλο. Ο Bright είχε αφιερώσει χρόνια στην κατασκευή εργαλείων C++ και ήταν απογοητευμένος από το πόσο «αχανής» και «ανασφαλής» ήταν η γλώσσα, καθώς έπρεπε να παραμείνει συμβατή με τον παλαιότερο κώδικα της δεκαετίας του 1970.
Ήθελε την ακατέργαστη ισχύ της C και τα οργανωτικά χαρακτηριστικά της C++, αλλά με ένα μοντέρνο, καθαρό και άθραυστο σχεδιασμό. Έτσι, δημιούργησε τη γλώσσα προγραμματισμού D. Η D προσέφερε καλύτερη διαχείριση μνήμης και χαρακτηριστικά ασφαλείας που απέτρεπαν τα είδη σφαλμάτων που προκαλούν την Μπλε Οθόνη Θανάτου στον υπολογιστή σας.
Όμως, παρά τα επιτεύγματά της, η D αντιμετώπισε ένα κλασικό πρόβλημα. Όταν εμφανίστηκε η D, ο κόσμος την είχε ήδη ξεπεράσει. Οι επιχειρήσεις χρησιμοποιούσαν Java και C#, και ο κόσμος ήταν ακόμα σταθερά προσκολλημένος στη C και την C++. Λίγα χρόνια αργότερα, εμφανίστηκε μια γλώσσα που ονομάζεται Rust, η οποία έδωσε ισχυρή έμφαση στην ακεραιότητα της μνήμης (η ίδια αρχή με την D), και κατάφερε να τραβήξει την προσοχή του τεχνολογικού κόσμου με τρόπο που η D δεν κατάφερε ποτέ πλήρως - ουσιαστικά καθιστώντας την D άσχετη.
Σήμερα, η D υπάρχει ως μια εξαιρετικά σεβαστή εξειδικευμένη γλώσσα. Χρησιμοποιείται ήδη από εταιρείες όπως το Netflix και το eBay για συγκεκριμένες εργασίες υψηλής απόδοσης. Είναι μια εξαιρετική γλώσσα, αλλά ποτέ δεν έγινε βασιλιάς.
Υπήρχε γλώσσα Α;
Ναι, αλλά... όχι ακριβώς
Εντάξει. Τώρα ξέρουμε ότι το C είναι C επειδή προήλθε από το B. Αλλά υπήρχε κάποια γλώσσα Α που προηγήθηκε του B; Η απάντηση είναι ναι, αλλά όχι με τον τρόπο που ίσως νομίζετε. Βλέπετε, δεν υπήρχε επίσημη γλώσσα Α πριν από αυτές τις γλώσσες. Ναι, το C έγινε C επειδή προήλθε μετά το B. Αλλά το B έγινε B επειδή ήταν το πρώτο γράμμα του BCPL, όχι επειδή προήλθε μετά το A.

Ωστόσο, αν εντοπίσουμε σωστά την καταγωγή, η ιστορία ξεκινά πριν από τα Bell Labs. Πολύ πριν από το B ή το C, υπήρχε η ALGOL. Η ALGOL, συντομογραφία του Algorithmic Language, γεννήθηκε το 1958. Δεν ήταν προϊόν ενός ανθρώπου, αλλά μιας επιτροπής Ευρωπαίων και Αμερικανών επιστημόνων που ήθελαν έναν καθολικό τρόπο περιγραφής των μαθηματικών πράξεων. Αν ψάχνουμε για τον προπάππου της σύγχρονης σημειογραφίας - το πραγματικό "Α" στην κορυφή της πυραμίδας - είναι η ALGOL.
Μια γλώσσα που ονομάζεται CPL (Combined Programming Language - Συνδυασμένη Γλώσσα Προγραμματισμού) δημιουργήθηκε με βάση τις ιδέες της ALGOL, αλλά ήταν πολύ περίπλοκη—πολύ περίπλοκη για τις μηχανές της εποχής. Αυτό οδήγησε σε μια «βασική» έκδοση της CPL, που ονομάζεται BCPL. Και εκεί ξεκινά η ιστορία μας με τα Bell Labs.
Τώρα, το 2026, ζούμε ακόμα στην εποχή της C. Ακόμα και οι φανταχτερές νέες γλώσσες όπως η Python ή η JavaScript συνήθως ερμηνεύονται από προγράμματα γραμμένα στην ίδια την C. Η C παραμένει η βάση. Μια γλώσσα που γεννήθηκε σε ένα εργαστήριο στο Νιου Τζέρσεϊ για να βοηθήσει κάποιον να παίξει ένα διαστημικό παιχνίδι σε έναν υπολογιστή που ουσιαστικά ήταν μια γιγάντια αριθμομηχανή.










