Page 37 - 33039-C++4ed

Basic HTML Version

1.4.2
Τα πρώτα χρόνια
39
σφαλμάτων που βασίζεται σε εξαιρέσεις (συμπεριλαμβανομένου του ιδιωματισμού γενικής δια-
χείρισης πόρων «πρόσληψη πόρων ίσον καθορισμός αρχικής τιμής» – Resource Acquisition Is
Initialization).
1997
Εκδίδεται το βιβλίο
The C++ Programming Language, Third Edition
[Stroustrup, 1997]
2
πα-
ρουσίασε το πρότυπο ISO της C++, στο οποίο περιλαμβάνονταν οι χώροι ονομάτων, οι δυναμι-
κές μετατροπές τύπων (
dynamic_cast
), και πολλές βελτιώσεις των προτύπων. Η καθιερωμένη βι-
βλιοθήκη πρόσθεσε την υποδομή STL για γενικούς περιέκτες και αλγορίθμους.
1998
Δημοσιεύεται το πρότυπο ISO της C++.
2002
Ξεκινούν οι εργασίες για την αναθεώρηση του προτύπου, γνωστού ως C++0x.
2003
Δημοσιεύεται μια αναθεώρηση «διόρθωσης σφαλμάτων» (bug fix) του προτύπου ISO της C++.
Μια τεχνική αναφορά της C++ εισήγαγε νέα συστατικά της καθιερωμένης βιβλιοθήκης, όπως
κανονικές παραστάσεις (regular expressions), μη διατεταγμένους περιέκτες (πίνακες κατακερ-
ματισμού, hash tables), και δείκτες διαχείρισης πόρων, τα οποία αργότερα έγιναν μέρος του
προτύπου C++0x.
2006
Εκδίδεται μια τεχνική αναφορά για την απόδοση της πρότυπης C++ που αντιμετωπίζει ζητήμα-
τα κόστους, προβλεψιμότητας, και τεχνικών, τα οποία σχετίζονταν κυρίως με τον προγραμμα-
τισμό ενσωματωμένων συστημάτων.
2009
Ολοκληρώνεται η συμπερίληψη χαρακτηριστικών στο πρότυπο C++0x. Πλέον παρείχε ομοιό-
μορφο καθορισμό αρχικών τιμών (uniform initialization), σημασιολογία μετακίνησης (move
semantics), πρότυπα μεταβλητής λίστας ορισμάτων (variadic templates), παραστάσεις λάμδα,
ψευδώνυμα τύπων, ένα μοντέλο μνήμης κατάλληλο για ταυτοχρονισμό, και πολλά περισσότε-
ρα. Η καθιερωμένη βιβλιοθήκη απέκτησε αρκετά συστατικά, όπως νήματα (threads), κλειδώμα-
τα (locks), και πολλά από τα συστατικά της τεχνικής αναφοράς του 2003.
2011
Εγκρίνεται επίσημα το πρότυπο ISO της C++11.
2012
Εμφανίζονται οι πρώτες ολοκληρωμένες υλοποιήσεις της C++11.
2012
Ξεκινούν οι εργασίες για τα μελλοντικά πρότυπα ISO της C++ (τα οποία αναφέρονται ως
C++14 και C++17).
2013
Το βιβλίο που κρατάτε στα χέρια σας
The C++ Programming Language, Fourth Edition,
πα-
ρουσιάζει τη C++11.
Κατά την ανάπτυξη, η C++11 ήταν γνωστή ως C++0x. Όπως συνηθίζεται στα μεγάλα έργα, ήμασταν υπερβολικά
αισιόδοξοι για την ημερομηνία ολοκλήρωσης.
1.4.2 Τα πρώτα χρόνια
Αρχικά σχεδίασα και υλοποίησα τη γλώσσα επειδή ήθελα να κατανείμω τις υπηρεσίες ενός πυρήνα UNIX σε πολ-
λούς επεξεργαστές και τοπικά δίκτυα (τα οποία τώρα είναι γνωστά ως πολυπύρηνοι επεξεργαστές και συστάδες ή
συστοιχίες, clusters). Για τον λόγο αυτό, χρειαζόμουν κάποιες προσομοιώσεις οδηγούμενες από συμβάντα (event-
driven), για τις οποίες η Simula θα ήταν ιδανική, αν εξαιρέσουμε τα ζητήματα απόδοσης. Επίσης έπρεπε να αντι-
μετωπίζω με άμεσο τρόπο το υλικό και να παρέχω μηχανισμούς ταυτοχρονισμένου προγραμματισμού υψηλής α-
πόδοσης για τους οποίους η C θα ήταν ιδανική, με εξαίρεση την ανεπαρκή υποστήριξή της για την αρθρωτή οργά-
νωση (τμηματικότητα) και τον έλεγχο τύπων. Το αποτέλεσμα που προέκυψε με την προσθήκη κλάσεων τύπου
Simula στη C, η «C with Classes», χρησιμοποιήθηκε για σημαντικά έργα στα οποία ελέγχθηκαν διεξοδικά οι υπη-
ρεσίες που επέτρεπαν το γράψιμο προγραμμάτων σε ελάχιστο χρόνο και με ελάχιστο χώρο μνήμης. Η «C with
Classes» δεν διέθετε υπερφόρτωση τελεστών, αναφορές (references), εικονικές συναρτήσεις (virtual functions),
πρότυπα, εξαιρέσεις, και πάρα πολλά άλλα στοιχεία [Stroustrup, 1982]. Η C++ χρησιμοποιήθηκε για πρώτη φορά
έξω από ερευνητικά ιδρύματα τον Ιούλιο του 1983.
Η ονομασία C++ (διαβάζεται «σι πλας πλας») επινοήθηκε από τον Rick Mascitti το καλοκαίρι του 1983, και
την επέλεξα για αντικατάσταση της «C with Classes». Το όνομα υποδηλώνει την εξελικτική φύση των αλλαγών
2
Η γλώσσα προγραμματισμού C++, 3η έκδοση
[Εκδόσεις Κλειδάριθμος, 1999]