Page 36 - 33039-C++4ed

Basic HTML Version

38
Σημειώσεις για τον αναγνώστη
Κεφάλαιο 1
[17]
Η C++ παρέχει μόνο ελάχιστη αντανάκλαση κατά τον χρόνο εκτέλεσης: τους τελεστές
dynamic_cast
και
typeid
(Κεφάλαιο 22). Να βασίζεστε περισσότερο σε υπηρεσίες που παρέχονται κατά τη μεταγλώττιση
(όπως ο πολυμορφισμός κατά τη μεταγλώττιση – Κεφάλαιο 27, Κεφάλαιο 28).
Οι περισσότερες από αυτές τις συμβουλές ισχύουν και για τους προγραμματιστές της C#.
1.4
Ιστορικό σημείωμα
Εγώ ο ίδιος επινόησα τη C++, έγραψα τους πρώτους ορισμούς της, και κατασκεύασα την πρώτη της υλοποίηση.
Επέλεξα και διατύπωσα τα κριτήρια σχεδιασμού για τη C++, σχεδίασα όλα τα σημαντικά χαρακτηριστικά της, α-
νέπτυξα ή βοήθησα στην ανάπτυξη πολλών από τις πρώτες βιβλιοθήκες, και ήμουν υπεύθυνος για την επεξεργασία
των προτάσεων επέκτασης στην επιτροπή προτύπων της C++.
Η C++ σχεδιάστηκε για να παρέχει τις υπηρεσίες της Simula για την οργάνωση προγραμμάτων [Dahl, 1970]
[Dahl, 1972] μαζί με την αποδοτικότητα και την ευελιξία της C για τον προγραμματισμό συστημάτων [Kernighan,
1978] [Kernighan, 1988]. Η Simula ήταν η αρχική πηγή έμπνευσης για τους μηχανισμούς αφαίρεσης της C++. Η
έννοια της κλάσης (με παράγωγες κλάσεις και εικονικές συναρτήσεις) είναι δανεισμένη από αυτή. Ωστόσο, τα
πρότυπα και οι εξαιρέσεις ήρθαν στη C++ αργότερα με διαφορετικές πηγές έμπνευσης.
Η C++ πάντα εξελισσόταν μέσα στο πλαίσιο χρήσης της. Κατανάλωσα πολύ χρόνο ακούγοντας τους χρήστες
και αναζητώντας τις γνώμες πεπειραμένων προγραμματιστών. Πιο συγκεκριμένα, οι συνάδελφοί μου στα Εργα-
στήρια Bell της AT&T έπαιξαν καθοριστικό ρόλο για την ανάπτυξη της C++ κατά την πρώτη δεκαετία της.
Η ενότητα αυτή παρέχει μια περιεκτική επισκόπηση· δεν αναφέρει κάθε χαρακτηριστικό της γλώσσας και κά-
θε συστατικό της βιβλιοθήκης. Επίσης, δεν μπαίνει σε λεπτομέρειες. Για περισσότερες πληροφορίες, και πιο συ-
γκεκριμένα για περισσότερα ονόματα ατόμων που έχουν συνεισφέρει, δείτε [Stroustrup, 1993], [Stroustrup, 2007],
και [Stroustrup, 1994]. Οι δύο εργασίες μου από το συνέδριο History of Programming Languages (Ιστορία των
γλωσσών προγραμματισμού) του ACM και το βιβλίο μου
Design and Evolution of C++
(«Σχεδιασμός και εξέλιξη
της C++», γνωστό ως «D&E») περιγράφουν λεπτομερώς τον σχεδιασμό και την εξέλιξη της C++ και τεκμηριώ-
νουν τις επιρροές της από άλλες γλώσσες προγραμματισμού.
Τα περισσότερα έγγραφα που συντάχθηκαν κατά τη δημιουργία των προτύπων ISO για τη C++ είναι διαθέσι-
μα στο Διαδίκτυο [WG21]. Στη σελίδα μου συχνών ερωτήσεων (FAQ), προσπαθώ να διατηρώ μια σύνδεση μεταξύ
των υπηρεσιών του προτύπου και των ανθρώπων που πρότειναν και βελτίωσαν αυτές τις υπηρεσίες [Stroustrup,
2010]. Η C++ δεν είναι η δουλειά μιας απρόσωπης, ανώνυμης επιτροπής, ή ενός υποτιθέμενου παντοδύναμου «αι-
ώνιου δικτάτορα»· είναι η δουλειά πολλών αφοσιωμένων, πεπειραμένων, σκληρά εργαζόμενων ατόμων.
1.4.1 Χρονική ανασκόπηση
Η δουλειά που οδήγησε στη γέννηση της C++ ξεκίνησε στο τέλος του 1979 με το όνομα «C with Classes» (C με
κλάσεις). Ακολουθεί μια σύντομη χρονική ανασκόπηση:
1979
Ξεκινά η δουλειά στη «C with Classes». Το αρχικό σύνολο χαρακτηριστικών περιλάμβανε
κλάσεις και παράγωγες κλάσεις, δημόσιο/ιδιωτικό έλεγχο πρόσβασης, συναρτήσεις κατασκευής
και καταστροφής, και δηλώσεις συναρτήσεων με έλεγχο ορισμάτων. Η πρώτη βιβλιοθήκη υπο-
στήριζε μη εκτοπιστικές ταυτοχρονισμένες εργασίες και γεννήτριες τυχαίων αριθμών.
1984
Η «C with Classes» μετονομάστηκε σε C++. Μέχρι τότε, η C++ είχε αποκτήσει εικονικές συ-
ναρτήσεις, υπερφόρτωση συναρτήσεων και τελεστών, αναφορές, και τις βιβλιοθήκες ρευμάτων
εισόδου/εξόδου (I/O stream) και μιγαδικών αριθμών.
1985
Δημοσιεύεται η πρώτη εμπορική έκδοση της C++ (14 Οκτωβρίου). Η βιβλιοθήκη περιλάμβανε
ρεύματα εισόδου/εξόδου (Ε/Ε), μιγαδικούς αριθμούς, και εργασίες (μη εκτοπιστικός χρονοπρο-
γραμματισμός).
1985
Εκδίδεται το βιβλίο
The C++ Programming Language
(«TC++PL», 14 Οκτωβρίου) [Stroustrup,
1986].
1989
The Annotated C++ Reference Manual
(«ARM»)
.
1991
Εκδίδεται το βιβλίο
The C++ Programming Language, Second Edition
[Stroustrup, 1991], στο
οποίο παρουσιάζονται ο γενικευμένος προγραμματισμός με χρήση προτύπων και ο χειρισμός