Η ιστορία της ανάπτυξης της γλώσσας C. §1 Γενικές πληροφορίες για τη γλώσσα. Στάδια σχεδιασμού προγράμματος. Μοντέλα κύκλου ζωής εφαρμογής. Γλώσσα C και UNIX

Η C++ (προφέρεται c-plus-plus) είναι μια μεταγλωττισμένη, στατικά πληκτρολογημένη, γενικής χρήσης γλώσσα προγραμματισμού που μπορεί να χρησιμοποιηθεί για τη δημιουργία προγραμμάτων οποιουδήποτε επιπέδου πολυπλοκότητας.
Για περισσότερα από 20 χρόνια, αυτή η γλώσσα βρίσκεται στις τρεις πρώτες δημοφιλέστερες και πιο απαιτητικές γλώσσες προγραμματισμού. (Αυτό μπορεί να επαληθευτεί με επίσκεψη στον ιστότοπο της TIOBE).
Η γλώσσα ξεκίνησε στις αρχές της δεκαετίας του 1980, όταν ο υπάλληλος της Bell Labs, Björn Stroustrup, κατέληξε σε μια σειρά από βελτιώσεις στη γλώσσα C για τις δικές του ανάγκες.

Bjarne Stroustrup - δημιουργός της γλώσσας C++

Ο Stroustrup αποφάσισε να επεκτείνει τη γλώσσα C με τις δυνατότητες που είναι διαθέσιμες στη γλώσσα Simula. Η γλώσσα C, που είναι η βασική γλώσσα του συστήματος UNIX στο οποίο έτρεχαν οι υπολογιστές Bell, είναι γρήγορη, πλούσια σε χαρακτηριστικά και φορητή. Ο Stroustrup πρόσθεσε σε αυτό την ικανότητα να εργάζεται με κλάσεις και αντικείμενα. Ως αποτέλεσμα, τα πρακτικά προβλήματα μοντελοποίησης αποδείχθηκαν προσβάσιμα τόσο από την άποψη του χρόνου ανάπτυξης (λόγω της χρήσης κλάσεων τύπου Simula) όσο και από την άποψη του χρόνου υπολογισμού (λόγω της ταχύτητας του C).
Να πώς το λέει ο ίδιος ο προγραμματιστής της γλώσσας:



Το 1998, το πρώτο γλωσσικό πρότυπο, γνωστό ως C++98, δημοσιεύτηκε από μια επιτροπή προτύπων. Η C++ συνεχίζει να εξελίσσεται για να ανταποκρίνεται στις σύγχρονες απαιτήσεις. Μία από τις ομάδες που αναπτύσσει τη γλώσσα C++ και στέλνει προτάσεις στην επιτροπή τυποποίησης της C++ για τη βελτίωσή της είναι Ωθηση, που ασχολείται, μεταξύ άλλων, με τη βελτίωση των δυνατοτήτων της γλώσσας με την προσθήκη χαρακτηριστικών μεταπρογραμματισμού σε αυτήν. Το πιο πρόσφατο πρότυπο κυκλοφόρησε το 2017 και ονομάζεται C++17. Το επόμενο πρότυπο δεν θα αργήσει να έρθει και αναμένεται να εμφανιστεί το 2020.
Κανείς δεν κατέχει τα δικαιώματα στη γλώσσα C++, είναι δωρεάν. Τον Μάρτιο του 2016, δημιουργήθηκε στη Ρωσία η ομάδα εργασίας WG21 C++. Η ομάδα οργανώθηκε για να συγκεντρώσει προτάσεις για το πρότυπο C++, να τις υποβάλει στην επιτροπή και να τις υπερασπιστεί σε γενικές συνελεύσεις του Διεθνούς Οργανισμού Τυποποίησης.
Η C++ είναι μια γλώσσα πολλαπλών παραδειγμάτων (από τη λέξη paradigm - στυλ γραφής προγραμμάτων υπολογιστή), η οποία περιλαμβάνει ένα ευρύ φάσμα διαφορετικών στυλ και τεχνολογιών προγραμματισμού. Συχνά αναφέρεται ως αντικειμενοστρεφής γλώσσα, αλλά, αυστηρά, αυτό δεν συμβαίνει. Κατά τη διαδικασία της εργασίας, ο προγραμματιστής αποκτά απόλυτη ελευθερία στην επιλογή εργαλείων, έτσι ώστε το πρόβλημα που επιλύεται χρησιμοποιώντας τη μία ή την άλλη προσέγγιση να επιλύεται όσο το δυνατόν πιο αποτελεσματικά. Με άλλα λόγια, η C++ δεν αναγκάζει τον προγραμματιστή να τηρεί μόνο ένα στυλ ανάπτυξης προγράμματος (για παράδειγμα, αντικειμενοστραφή).
Η C++ διαθέτει μια πλούσια τυπική βιβλιοθήκη που περιλαμβάνει κοινά κοντέινερ και αλγόριθμους, I/O, κανονικές εκφράσεις, υποστήριξη πολλαπλών νημάτων και πολλά άλλα. Η C++ έχει επηρεάσει πολλές γλώσσες προγραμματισμού, όπως: Java, C#, D. Δεδομένου ότι η C++ ανήκει στην οικογένεια των γλωσσών που βασίζονται στη σύνταξη της γλώσσας C, άλλες γλώσσες προγραμματισμού αυτής της οικογένειας μπορούν εύκολα να κατακτηθούν: JavaScript , PHP, Perl, Objective-C και πολλά άλλα. . κ.λπ., συμπεριλαμβανομένης της ίδιας της μητρικής γλώσσας - Γ. ()
Κατά τη διάρκεια της ύπαρξής του, στη γλώσσα C ++ έχουν εδραιωθεί σταθεροί μύθοι, οι οποίοι διαψεύδονται εύκολα (δείτε εδώ: Μέρος 1 και Μέρος 2)

Η ιστορία της γλώσσας και η απελευθέρωση προτύπων

1983

Δημιουργός γλώσσας - Bjorn Stroustrup, στα Bell Labs, παρουσίασε μια πρώιμη έκδοση της C++ ("C with Classes")

1985

Πρώτη εμπορική κυκλοφορία της C++, η γλώσσα παίρνει σύγχρονο όνομα

1986

Κυκλοφορία της πρώτης έκδοσης της γλώσσας προγραμματισμού C++, ενός βιβλίου C++ γραμμένο από τον Bjorn Stroustrup

1998

Το διεθνές πρότυπο γλώσσας C++ επικυρώθηκε: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

2003
2005

Κυκλοφόρησε η Τεχνική Έκθεση Βιβλιοθήκης 1 (TR1). Αν και δεν αποτελεί επίσημα μέρος του προτύπου, η αναφορά περιέγραφε επεκτάσεις στην τυπική βιβλιοθήκη που θα πρέπει να συμπεριληφθούν στην επόμενη έκδοση της γλώσσας C++.

2011

Έκδοση ενός νέου προτύπου - C++11 ή ISO/IEC 14882:2011. το νέο πρότυπο περιλάμβανε προσθήκες στον πυρήνα της γλώσσας και μια επέκταση στην τυπική βιβλιοθήκη, συμπεριλαμβανομένου μεγάλου μέρους του TR1

2014

Έκδοση του προτύπου C++14 («Διεθνές Πρότυπο ISO/IEC 14882:2014(E) Γλώσσα προγραμματισμού C++»); Η C++14 μπορεί να θεωρηθεί ως μια μικρή επέκταση της C++11, η οποία περιέχει κυρίως διορθώσεις σφαλμάτων και μικρές βελτιώσεις.

2017

Η κυκλοφορία του νέου προτύπου είναι C++1z (C++17). Αυτό το πρότυπο έχει κάνει πολλές αλλαγές και προσθήκες. Για παράδειγμα, το STD περιελάμβανε βιβλιοθήκες του προτύπου C11, ένα σύστημα αρχείων βασισμένο στο boost::filesystem και το μεγαλύτερο μέρος της πειραματικής βιβλιοθήκης TS I.

2020

Το C++20 είναι το ανεπίσημο όνομα για το πρότυπο ISO/IEC για τη γλώσσα προγραμματισμού C++, το οποίο αναμένεται μετά τη C++17. Προσχέδιο του προτύπου N4800.

Φιλοσοφία C++

Στο The Design and Evolution of C++ (2007), ο Bjorn Stroustrup περιγράφει τις αρχές που ακολούθησε κατά τον σχεδιασμό της C++ (δίνονται σε συντομογραφία):

  • Αποκτήστε μια καθολική γλώσσα με στατικούς τύπους δεδομένων, την αποτελεσματικότητα και τη φορητότητα του C.
  • Άμεση και ολοκληρωμένη υποστήριξη ποικίλων στυλ προγραμματισμού.
  • Δώστε στον προγραμματιστή ελευθερία επιλογής, ακόμα κι αν του δίνει τη δυνατότητα να επιλέξει λανθασμένα.
  • Διατηρήστε τη συμβατότητα με το C όσο το δυνατόν περισσότερο, καθιστώντας έτσι δυνατή την εύκολη εναλλαγή από τον προγραμματισμό στο C.
  • Αποφύγετε τη σύγχυση μεταξύ C και C++: οποιαδήποτε κατασκευή επιτρέπεται και στις δύο γλώσσες πρέπει να σημαίνει το ίδιο πράγμα σε καθεμία από αυτές και να οδηγεί στην ίδια συμπεριφορά προγράμματος.
  • Αποφύγετε λειτουργίες που εξαρτώνται από την πλατφόρμα ή δεν είναι καθολικές.
  • "Μην πληρώνετε για ό,τι δεν χρησιμοποιείτε" - Καμία δυνατότητα γλώσσας δεν πρέπει να προκαλεί υποβάθμιση της απόδοσης για προγράμματα που δεν τη χρησιμοποιούν.
  • Μην απαιτείτε πολύ περίπλοκο περιβάλλον προγραμματισμού.

C και C++

Η σύνταξη C++ κληρονομείται από τη γλώσσα C. Αν και, τυπικά, μία από τις αρχές της C++ παραμένει η διατήρηση της συμβατότητας με τη γλώσσα C, στην πραγματικότητα, οι ομάδες τυποποίησης αυτών των γλωσσών δεν αλληλεπιδρούν και οι αλλαγές που κάνουν όχι μόνο να μην συσχετίζονται, αλλά συχνά να αντιφάσκουν θεμελιωδώς μεταξύ τους ιδεολογικά. Έτσι, τα στοιχεία που προσθέτουν τα νέα πρότυπα C στον πυρήνα είναι στοιχεία της τυπικής βιβλιοθήκης στο πρότυπο C ++ και γενικά απουσιάζουν στον πυρήνα, για παράδειγμα, δυναμικοί πίνακες, πίνακες με σταθερά όρια, εγκαταστάσεις παράλληλης επεξεργασίας. Ο Stroustrup πιστεύει ότι ο συνδυασμός της ανάπτυξης αυτών των δύο γλωσσών θα είχε μεγάλο όφελος, αλλά δεν είναι σχεδόν εφικτό για πολιτικούς λόγους. Έτσι η πρακτική συμβατότητα μεταξύ C και C++ θα χαθεί σταδιακά.
Σε αυτό το παράδειγμα, ανάλογα με τον μεταγλωττιστή που χρησιμοποιείται, θα βγει είτε "C++" ή "C":

Πρόγραμμα 9.1

#περιλαμβάνω int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

Αυτό οφείλεται στο γεγονός ότι οι σταθερές χαρακτήρων στο C είναι τύπου int και στη C++ είναι τύπου char, αλλά τα μεγέθη αυτών των τύπων διαφέρουν.

Μοντέλα κύκλου ζωής εφαρμογής

Κύκλος ζωήςλογισμικό είναι μια χρονική περίοδος που ξεκινά από τη στιγμή που λαμβάνεται μια απόφαση σχετικά με την ανάγκη δημιουργίας ενός προϊόντος λογισμικού και λήγει τη στιγμή της πλήρους απόσυρσής του από τη λειτουργία. Αυτός ο κύκλος είναι η διαδικασία δημιουργίας και ανάπτυξης λογισμικού (SW). Υπάρχουν πολλά μοντέλα κύκλου ζωής.
Cascade μοντέλοο κύκλος ζωής (αγγλικό μοντέλο καταρράκτη) προτάθηκε το 1970 από τον Winston Royce. Προβλέπει τη διαδοχική υλοποίηση όλων των σταδίων του έργου με αυστηρά καθορισμένη σειρά. Η μετάβαση στο επόμενο στάδιο σημαίνει την πλήρη ολοκλήρωση της εργασίας στο προηγούμενο στάδιο. Οι απαιτήσεις που ορίζονται στο στάδιο διαμόρφωσης απαιτήσεων τεκμηριώνονται αυστηρά με τη μορφή όρων αναφοράς και καθορίζονται για όλη τη διάρκεια της ανάπτυξης του έργου. Κάθε στάδιο καταλήγει στην έκδοση ενός πλήρους συνόλου τεκμηρίωσης που επαρκεί για να συνεχιστεί η ανάπτυξη από άλλη ομάδα ανάπτυξης.
Στάδια έργου σύμφωνα με το μοντέλο καταρράκτη:

  1. Διαμόρφωση απαιτήσεων;
  2. Σχέδιο;
  3. Εκτέλεση;
  4. Δοκιμές;
  5. εκτέλεση;
  6. Λειτουργία και συντήρηση.

Στο μοντέλο καταρράκτη, η μετάβαση από τη μια φάση του έργου στην άλλη προϋποθέτει την πλήρη ορθότητα του αποτελέσματος της προηγούμενης φάσης. Σε μεγάλα έργα, αυτό είναι σχεδόν αδύνατο να επιτευχθεί. Επομένως, ένα τέτοιο μοντέλο είναι κατάλληλο μόνο για την ανάπτυξη ενός μικρού έργου. (Ο ίδιος ο W. Royce δεν τηρούσε αυτό το μοντέλο και χρησιμοποίησε ένα επαναληπτικό μοντέλο).
Επαναληπτικό μοντέλο
Μια εναλλακτική λύση στο μοντέλο του καταρράκτη είναι το μοντέλο της επαναληπτικής και σταδιακής ανάπτυξης (IID), το οποίο έλαβε από τον T. Gilb τη δεκαετία του '70. το όνομα του εξελικτικού μοντέλου. Το μοντέλο IID αναλύει τον κύκλο ζωής ενός έργου σε μια ακολουθία επαναλήψεων, καθεμία από τις οποίες μοιάζει με ένα «μίνι-έργο», συμπεριλαμβανομένων όλων των διαδικασιών ανάπτυξης που εφαρμόζονται για τη δημιουργία μικρότερων τμημάτων λειτουργικότητας, σε σύγκριση με το έργο ως σύνολο. Ο στόχος κάθε επανάληψης είναι να αποκτήσει μια λειτουργική έκδοση του συστήματος λογισμικού, συμπεριλαμβανομένης της λειτουργικότητας που ορίζεται από το ενσωματωμένο περιεχόμενο όλων των προηγούμενων και τρεχουσών επαναλήψεων. Το αποτέλεσμα της τελικής επανάληψης περιέχει όλη την απαιτούμενη λειτουργικότητα του προϊόντος. Έτσι, με την ολοκλήρωση κάθε επανάληψης, το προϊόν λαμβάνει μια αύξηση - μια προσαύξηση - των δυνατοτήτων του, οι οποίες, επομένως, αναπτύσσονται εξελικτικά.


Διάφορες παραλλαγές της επαναληπτικής προσέγγισης εφαρμόζονται στις περισσότερες σύγχρονες μεθοδολογίες ανάπτυξης:

Διαδικασία ανάπτυξης - Ορθολογική ενοποιημένη διαδικασία (RUP)

Ορθολογική ενοποιημένη διαδικασία (RUP)Το (Rational Unified Process) είναι μια μεθοδολογία ανάπτυξης λογισμικού που διατηρεί η Rational Software (IBM). Η μεθοδολογία παρέχει συστάσεις για όλα τα στάδια ανάπτυξης: από την επιχειρηματική μοντελοποίηση έως τη δοκιμή και την έναρξη λειτουργίας του ολοκληρωμένου προγράμματος. Ως γλώσσα μοντελοποίησης χρησιμοποιείται η Unified Modeling Language (UML).
Ο πλήρης κύκλος ζωής ανάπτυξης προϊόντος αποτελείται από τέσσερις φάσεις, καθεμία από τις οποίες περιλαμβάνει μία ή περισσότερες επαναλήψεις.

  • Αρχικό στάδιο (Έναρξη)
  • Καθορισμός του αντικειμένου του έργου και του ποσού των απαιτούμενων πόρων. Καθορίζονται οι κύριες απαιτήσεις, οι περιορισμοί και η βασική λειτουργικότητα του προϊόντος. Οι κίνδυνοι αξιολογούνται. Σχεδιασμός δράσης. Στο τέλος της αρχικής φάσης, αξιολογείται η επίτευξη του στόχου του στόχου κύκλου ζωής, που συνεπάγεται συμφωνία μεταξύ των ενδιαφερομένων για τη συνέχιση του έργου.

  • Επεξεργασία
  • Τεκμηρίωση απαιτήσεων. Σχεδιασμός, υλοποίηση και δοκιμή της εκτελέσιμης αρχιτεκτονικής. Προσδιορισμός όρων και κόστους. Μείωση των κύριων κινδύνων. Η επιτυχής ολοκλήρωση της φάσης ανάπτυξης σημαίνει την επίτευξη του ορόσημου της αρχιτεκτονικής του κύκλου ζωής.

  • Κατασκευή
  • Στη φάση «Δόμηση», υλοποιείται το μεγαλύτερο μέρος της λειτουργικότητας του προϊόντος: ολοκληρώνεται ο σχεδιασμός της εφαρμογής, γράφεται ο πηγαίος κώδικας. Η φάση κατασκευής τελειώνει με την πρώτη εξωτερική έκδοση του συστήματος και το ορόσημο της αρχικής λειτουργικής ικανότητας.

  • Υλοποίηση (Μετάβαση)
  • Στη φάση «Υλοποίηση» δημιουργείται η τελική έκδοση του προϊόντος και μεταφέρεται από τον προγραμματιστή στον πελάτη. Αυτό περιλαμβάνει ένα πρόγραμμα δοκιμών beta, εκπαίδευση χρηστών και διασφάλιση ποιότητας προϊόντων. Σε περίπτωση που η ποιότητα δεν ανταποκρίνεται στις προσδοκίες των χρηστών ή τα κριτήρια που τέθηκαν στη φάση Έναρξης, η φάση υλοποίησης επαναλαμβάνεται ξανά. Η επίτευξη όλων των στόχων σημαίνει να φτάσετε στο ορόσημο του τελικού προϊόντος (Κυκλοφορία προϊόντος) και να ολοκληρώσετε τον πλήρη κύκλο ανάπτυξης.



"ΤΕΧΝΟΛΟΓΙΑ της ΠΛΗΡΟΦΟΡΙΑΣ. Μηχανική συστημάτων και λογισμικού. Διαδικασίες κύκλου ζωής λογισμικού». Αυτό το πρότυπο έχει υιοθετηθεί από την Ομοσπονδιακή Υπηρεσία Τεχνικού Κανονισμού και Μετρολογίας της Ρωσικής Ομοσπονδίας και είναι παρόμοιο με το διεθνές πρότυπο ISO/IEC 12207:2008. Αυτό το πρότυπο καθιερώνει ένα γενικό πλαίσιο για τις διαδικασίες του κύκλου ζωής του λογισμικού που μπορεί να χρησιμοποιηθεί ως καθοδήγηση στη βιομηχανία λογισμικού. Το πρότυπο δεν προτείνει συγκεκριμένο μοντέλο κύκλου ζωής. Οι διατάξεις του είναι κοινές σε οποιαδήποτε μοντέλα κύκλου ζωής, μεθόδους και τεχνολογίες για τη δημιουργία λογισμικού. Περιγράφει τη δομή των διαδικασιών του κύκλου ζωής χωρίς να προσδιορίζει τον τρόπο υλοποίησης ή εκτέλεσης των δραστηριοτήτων και των εργασιών που περιλαμβάνονται σε αυτές τις διαδικασίες.

Παρουσίαση για το μάθημα
Θέματα μηνυμάτων
  • Ίδρυμα Ελεύθερου Λογισμικού (FSF)
  • Άδειες χρήσης ελεύθερου λογισμικού
  • Ελεύθερο Λογισμικό και Ανοιχτό Κώδικα
  • Ιστορία της ανάπτυξης των γλωσσών προγραμματισμού
  • Ιστορία C. C και C++
  • Ιστορία
  • Κριτική της C++
  • Ιστορία του UNIX
  • Μοντέλο Κύκλου Ζωής Λογισμικού Spiral
  • UML (Αγγλική ενοποιημένη γλώσσα μοντελοποίησης - ενοποιημένη γλώσσα μοντελοποίησης)
  • Microsoft Solutions Framework
  • IDE για προγραμματισμό C/C++ σε Windows
  • C/C++ μεταγλωττιστές
  • Δημιουργία εφαρμογής Κονσόλας στα Windows
Ερωτήσεις
  1. Γιατί το μοντέλο ανάπτυξης λογισμικού waterfall δεν χρησιμοποιείται σε μεγάλα έργα;
  2. Ποια είναι η διαφορά μεταξύ μοντέλων καταρράκτη και επαναληπτικής ανάπτυξης;
  3. Καταγράψτε τα στάδια ανάπτυξης λογισμικού στη μεθοδολογία Rational Unified Process (RUP).

Γλώσσα προγραμματισμού C++

Τελευταία ενημέρωση: 28/08/2017

Η γλώσσα προγραμματισμού C++ είναι μια γλώσσα προγραμματισμού γενικής χρήσης, στατικά δακτυλογραφημένη, υψηλού επιπέδου, μεταγλωττισμένη γλώσσα που είναι κατάλληλη για τη δημιουργία μεγάλης ποικιλίας εφαρμογών. Η C++ είναι μια από τις πιο δημοφιλείς και διαδεδομένες γλώσσες σήμερα.

Έχει τις ρίζες του στη γλώσσα C, η οποία αναπτύχθηκε το 1969-1973 στα Bell Labs από τον προγραμματιστή Dennis Ritchie. Στις αρχές της δεκαετίας του 1980, ο Δανός προγραμματιστής Bjarne Stroustrup, τότε στο Bell Labs, ανέπτυξε την C++ ως επέκταση της γλώσσας C. Στην πραγματικότητα, στην αρχή, η C++ απλώς συμπλήρωσε τη γλώσσα C με ορισμένα χαρακτηριστικά αντικειμενοστρεφούς προγραμματισμού. Και έτσι ο ίδιος ο Stroustrup στην αρχή το ονόμασε "C με τάξεις" ("C με τάξεις").

Στη συνέχεια, η νέα γλώσσα άρχισε να κερδίζει δημοτικότητα. Προστέθηκαν νέα χαρακτηριστικά σε αυτό που το έκαναν όχι απλώς μια προσθήκη στη C, αλλά μια εντελώς νέα γλώσσα προγραμματισμού. Ως αποτέλεσμα, το "C with classes" μετονομάστηκε σε C++. Και από τότε, και οι δύο γλώσσες άρχισαν να αναπτύσσονται ανεξάρτητα η μία από την άλλη.

Η C++ είναι μια ισχυρή γλώσσα, η οποία κληρονομεί πλούσιες δυνατότητες μνήμης από τη C. Ως εκ τούτου, η C++ βρίσκει συχνά την εφαρμογή της στον προγραμματισμό συστημάτων, ιδιαίτερα κατά τη δημιουργία λειτουργικών συστημάτων, προγραμμάτων οδήγησης, διαφόρων βοηθητικών προγραμμάτων, προγραμμάτων προστασίας από ιούς κ.λπ. Παρεμπιπτόντως, τα Windows είναι κυρίως γραμμένα σε C++. Αλλά η χρήση αυτής της γλώσσας δεν περιορίζεται στον προγραμματισμό του συστήματος. Η C++ μπορεί να χρησιμοποιηθεί σε προγράμματα οποιουδήποτε επιπέδου όπου η ταχύτητα και η απόδοση είναι σημαντικές. Συχνά χρησιμοποιείται για τη δημιουργία εφαρμογών γραφικών, διαφόρων προγραμμάτων εφαρμογών. Χρησιμοποιείται επίσης ιδιαίτερα συχνά για τη δημιουργία παιχνιδιών με πλούσια πλούσια οπτική. Επιπλέον, πρόσφατα κερδίζει δυναμική η κατεύθυνση για κινητά, όπου και η C ++ έχει βρει την εφαρμογή της. Και ακόμη και στην ανάπτυξη ιστού, μπορείτε επίσης να χρησιμοποιήσετε τη C++ για να δημιουργήσετε εφαρμογές Ιστού ή κάποιου είδους βοηθητικές υπηρεσίες που εξυπηρετούν εφαρμογές Ιστού. Γενικά, η C++ είναι μια ευρέως χρησιμοποιούμενη γλώσσα στην οποία μπορείτε να γράψετε σχεδόν κάθε είδους πρόγραμμα.

Η C++ είναι μια μεταγλωττισμένη γλώσσα, που σημαίνει ότι ο μεταγλωττιστής μεταφράζει τον πηγαίο κώδικα της C++ σε ένα εκτελέσιμο αρχείο που περιέχει ένα σύνολο εντολών μηχανής. Αλλά διαφορετικές πλατφόρμες έχουν τα δικά τους χαρακτηριστικά, επομένως τα μεταγλωττισμένα προγράμματα δεν μπορούν απλώς να μεταφερθούν από τη μια πλατφόρμα στην άλλη και να εκτελεστούν εκεί. Ωστόσο, σε επίπεδο πηγαίου κώδικα, τα προγράμματα C++ είναι ως επί το πλείστον φορητά, εκτός εάν χρησιμοποιούνται ορισμένες λειτουργίες που αφορούν συγκεκριμένα το λειτουργικό σύστημα. Και η διαθεσιμότητα μεταγλωττιστών, βιβλιοθηκών και εργαλείων ανάπτυξης για σχεδόν όλες τις κοινές πλατφόρμες καθιστά δυνατή τη μεταγλώττιση του ίδιου πηγαίου κώδικα C++ σε εφαρμογές για αυτές τις πλατφόρμες.

Σε αντίθεση με τη C, η γλώσσα C++ σάς επιτρέπει να γράφετε εφαρμογές σε αντικειμενοστραφή στυλ, αντιπροσωπεύοντας ένα πρόγραμμα ως μια συλλογή κλάσεων και αντικειμένων που αλληλεπιδρούν μεταξύ τους. Αυτό απλοποιεί τη δημιουργία μεγάλων εφαρμογών.

Σταθμοί ανάπτυξης

Το 1979-80, ο Bjarne Stroustrup ανέπτυξε μια επέκταση στη γλώσσα C - "C με τάξεις". Το 1983 η γλώσσα μετονομάστηκε σε C++.

Το 1985 κυκλοφόρησε η πρώτη εμπορική έκδοση της γλώσσας C++, καθώς και η πρώτη έκδοση του βιβλίου "The C++ Programming Language", που αντιπροσώπευε την πρώτη περιγραφή αυτής της γλώσσας ελλείψει επίσημου προτύπου.

Το 1989, κυκλοφόρησε μια νέα έκδοση της γλώσσας C++ 2.0, η οποία περιλάμβανε μια σειρά από νέες δυνατότητες. Μετά από αυτό, η γλώσσα αναπτύχθηκε σχετικά αργά μέχρι το 2011. Ταυτόχρονα όμως, το 1998, έγινε η πρώτη προσπάθεια τυποποίησης της γλώσσας από τον ISO (Διεθνής Οργανισμός Τυποποίησης). Το πρώτο πρότυπο ονομαζόταν ISO/IEC 14882:1998 ή C++98 για συντομία. Αργότερα το 2003 δημοσιεύτηκε μια νέα έκδοση του προτύπου C++03.

Το 2011 δημοσιεύτηκε το νέο πρότυπο C++11, το οποίο περιείχε πολλές προσθήκες και εμπλούτισε τη γλώσσα C++ με μεγάλο αριθμό νέων χαρακτηριστικών. Ακολούθησε το 2014 μια μικρή προσθήκη στο πρότυπο, επίσης γνωστό ως C++14. Και μια άλλη βασική έκδοση της γλώσσας έχει προγραμματιστεί για το 2017.

Μεταγλωττιστές και περιβάλλοντα ανάπτυξης

Για να αναπτύξετε προγράμματα σε C++, χρειάζεστε έναν μεταγλωττιστή - μεταφράζει τον πηγαίο κώδικα της C++ σε ένα εκτελέσιμο αρχείο, το οποίο στη συνέχεια μπορεί να εκτελεστεί. Αλλά αυτή τη στιγμή υπάρχουν πολλοί διαφορετικοί μεταγλωττιστές. Ενδέχεται να διαφέρουν από διάφορες πτυχές, ιδίως όσον αφορά την εφαρμογή προτύπων. Μια βασική λίστα μεταγλωττιστών για C++ μπορεί να βρεθεί στη wikipedia. Συνιστάται για την ανάπτυξη να επιλέξετε εκείνους τους μεταγλωττιστές που αναπτύσσουν και εφαρμόζουν όλα τα πιο πρόσφατα πρότυπα. Για παράδειγμα, σε όλο αυτό το σεμινάριο, ο δωρεάν μεταγλωττιστής g++, που αναπτύχθηκε από το έργο GNU, θα χρησιμοποιείται κυρίως.

Μπορείτε επίσης να χρησιμοποιήσετε IDE όπως Visual Studio, Netbeans, Eclipse, Qt κ.λπ. για να δημιουργήσετε προγράμματα.

Γλώσσα C και UNIX

Γλώσσα προγραμματισμού ΑΠΟ(προφέρεται "C") δημιουργήθηκε στις αρχές της δεκαετίας του '70 όταν ο Ken Thompson και ο Dennis Ritchie των Bell Labs ανέπτυξαν το λειτουργικό σύστημα UNDC. Πρώτα δημιούργησαν το μέρος του μεταγλωττιστή ΑΠΟ, στη συνέχεια το χρησιμοποίησε για να μεταγλωττίσει τον υπόλοιπο μεταγλωττιστή ΑΠΟκαι τελικά χρησιμοποίησε τον μεταγλωττιστή που προέκυψε για να μεταγλωττίσει το UNIX. Το λειτουργικό σύστημα UNIX αρχικά διανεμήθηκε σε πηγαίους κώδικες ΑΠΟμεταξύ πανεπιστημίων και εργαστηρίων, και ο παραλήπτης θα μπορούσε να συντάξει τον πηγαίο κώδικα στη γλώσσα ΑΠΟσε εγγενή κώδικα χρησιμοποιώντας έναν κατάλληλο μεταγλωττιστή ΑΠΟ.

Η διανομή του πηγαίου κώδικα έκανε το λειτουργικό σύστημα UNIX μοναδικό. ο προγραμματιστής θα μπορούσε να αλλάξει το λειτουργικό σύστημα και ο πηγαίος κώδικας θα μπορούσε να μεταφερθεί από τη μια πλατφόρμα υλικού στην άλλη. Σήμερα, το πρότυπο POSIX ορίζει το τυπικό σύνολο κλήσεων συστήματος UNIX που είναι διαθέσιμο στο ΑΠΟ, το οποίο πρέπει να υλοποιηθεί σε εκδόσεις του UNIX που είναι συμβατές με το POSIX. Η C ήταν η τρίτη γλώσσα που αναπτύχθηκε από τους Thomson και Ritchie κατά τη δημιουργία του UNIX. Τα δύο πρώτα ήταν, φυσικά, ΑΛΛΑΚαι ΣΕ.

Γλώσσα συναρμολόγησης για φορητές συσκευές C

Σε σύγκριση με την προηγούμενη γλώσσα - BCPL, η γλώσσα ΑΠΟέχει βελτιωθεί με την προσθήκη συγκεκριμένων τύπων δεδομένων μήκους. Για παράδειγμα, ο τύπος δεδομένων int θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία μιας μεταβλητής με έναν ορισμένο αριθμό bit (συνήθως 16), ενώ ο τύπος δεδομένων long θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία μιας ακέραιας μεταβλητής με περισσότερα bit (συνήθως 32). Σε αντίθεση με άλλες γλώσσες υψηλού επιπέδου, ΑΠΟθα μπορούσε να λειτουργήσει με διευθύνσεις μνήμης απευθείας χρησιμοποιώντας δείκτες και αναφορές. Στο βαθμό που ΑΠΟδιατήρησε τη δυνατότητα άμεσης πρόσβασης στο υλικό, συχνά αναφέρεται ως γλώσσα μεσαίου επιπέδου ή αναφέρεται αστειευόμενα ως "γλώσσα συναρμολόγησης για κινητά".

C - δομημένη γλώσσα προγραμματισμού

Όσον αφορά τη γραμματική και το συντακτικό, ΑΠΟείναι μια δομημένη γλώσσα προγραμματισμού. Ενώ πολλοί σύγχρονοι προγραμματιστές σκέφτονται με όρους κλάσεων και αντικειμένων, οι προγραμματιστές ΑΠΟσκεφτείτε με όρους διαδικασιών και λειτουργιών. ΣΕ ΑΠΟμπορείτε να ορίσετε τους δικούς σας αφηρημένους τύπους δεδομένων χρησιμοποιώντας τη λέξη-κλειδί struct. Ομοίως, μπορείτε να περιγράψετε τους δικούς σας ακέραιους τύπους (αριθμήσεις) και να δώσετε άλλα ονόματα σε υπάρχοντες τύπους δεδομένων χρησιμοποιώντας τη λέξη-κλειδί typedef. Με αυτή την έννοια ΑΠΟείναι μια δομική γλώσσα με τα μικρόβια του αντικειμενοστρεφούς προγραμματισμού.

Τυποποίηση της γλώσσας Γ

Διαδεδομένη γλώσσα ντοσε διαφορετικούς τύπους υπολογιστών (μερικές φορές ονομάζονται πλατφόρμες υλικού) έχει δυστυχώς οδηγήσει σε πολλές παραλλαγές της γλώσσας. Ήταν παρόμοια αλλά ασυμβίβαστα μεταξύ τους. Αυτό ήταν ένα σημαντικό πρόβλημα για τους προγραμματιστές λογισμικού που έπρεπε να γράψουν συμβατά προγράμματα που θα μπορούσαν να εκτελούνται σε πολλές πλατφόρμες. Έγινε σαφές ότι χρειαζόταν μια τυπική έκδοση ντο. Το 1983 Η ANSI (Αμερικανική Εθνική Επιτροπή Προτύπων) σχημάτισε την τεχνική επιτροπή X3J11 για τη δημιουργία ενός γλωσσικού προτύπου ντο(για την "παροχή ενός σαφούς και ανεξάρτητου από μηχανή ορισμού γλώσσας"). Το 1989 το πρότυπο εγκρίθηκε. Το ANSI έχει συνεργαστεί με τον ISO (Διεθνής Οργανισμός Προτύπων) για την τυποποίηση ντοδιεθνώς? ένα κοινό πρότυπο δημοσιεύθηκε το 1990 και ονομάστηκε ANSI/ISO 9899:1990. Αυτό το πρότυπο εξακολουθεί να βελτιώνεται και υποστηρίζεται από τους περισσότερους προγραμματιστές μεταγλωττιστών.

Γέννηση της C++

Ο Bjorn Stroustrup απελευθερώνει αντικειμενοστρεφές δυναμικό ΑΠΟμεταφέροντας χαρακτηριστικά τάξης Simula 67σε ΑΠΟ. Αρχικά, η νέα γλώσσα ονομαζόταν «Γ με τάξεις» και μόνο τότε άρχισε να λέγεται C++. Γλώσσα C++πέτυχε δημοτικότητα με την ανάπτυξη στα εργαστήρια Bell, αργότερα μεταφέρθηκε σε άλλες βιομηχανίες και εταιρείες. Σήμερα είναι μια από τις πιο δημοφιλείς (και έγκυρες) γλώσσες προγραμματισμού στον κόσμο. C++κληρονομεί και τις καλές και τις κακές πλευρές ΑΠΟ.

Εξομολογήσεις του Bjorn Stroustrup

Bjorn Stroustrup: «Σκέφτηκα C++, έγραψε τον αρχικό του ορισμό και έκανε την πρώτη εφαρμογή. Επέλεξα και διατύπωσα κριτήρια σχεδιασμού C++, ανέπτυξε τα κύρια χαρακτηριστικά του και ήταν υπεύθυνος για την τύχη των προτάσεων επέκτασης της γλώσσας στην επιτροπή τυποποίησης C++», - γράφει ο συγγραφέας της δημοφιλέστερης γλώσσας προγραμματισμού. - «Γλώσσα C++οφείλει πολλά στη γλώσσα ντοκαι γλώσσα ντοπαραμένει ένα υποσύνολο Γλώσσα C++(αλλά το C++ διορθώνει αρκετά σοβαρά ελαττώματα στο σύστημα τύπου C). Κράτησα και κεφάλαια ντο, τα οποία είναι αρκετά χαμηλού επιπέδου για να χειρίζονται τις πιο κρίσιμες εργασίες συστήματος. Γλώσσα ντο, με τη σειρά του, οφείλει πολλά στον προκάτοχό του, BCPL. παρεμπιπτόντως, το στυλ σχολίου // ελήφθη από C++από το BCPL. Η άλλη κύρια πηγή έμπνευσης ήταν η γλώσσα Simula67. Η έννοια των κλάσεων (με παράγωγες κλάσεις και εικονικές συναρτήσεις) δανείστηκε από αυτόν. Τα μέσα υπερφόρτωσης χειριστή και η δυνατότητα τοποθέτησης δηλώσεων οπουδήποτε μπορεί να γραφτεί μια οδηγία υπενθυμίζει Algol68. "

Γιατί C++

Ονομα C++εφευρέθηκε από τον Rick Massitti. Το όνομα υποδηλώνει την εξελικτική φύση της μετάβασης σε αυτό από ντο. Το "++" είναι μια αύξουσα λειτουργία στο ντο. Λίγο πιο σύντομο όνομα C+είναι συντακτικό σφάλμα. Επιπλέον, έχει ήδη χρησιμοποιηθεί ως όνομα μιας εντελώς διαφορετικής γλώσσας. Ειδικοί σημασιολογίας ντοβρες αυτό C++χειρότερο από ++C. Τίτλοι ρεη γλώσσα δεν το κατάλαβε γιατί είναι επέκταση του C και δεν προσπαθεί να διορθώσει προβλήματα πετάγοντας χαρακτηριστικά.

Γιατί χρειαζόταν η C++

Αρχικά Γλώσσα προγραμματισμού C++σχεδιάστηκε έτσι ώστε ο συγγραφέας και οι φίλοι του να μην χρειάζεται να προγραμματίζουν σε assembly, C ή άλλες σύγχρονες γλώσσες υψηλού επιπέδου. Ο κύριος σκοπός του ήταν να κάνει τη σύνταξη καλών προγραμμάτων ευκολότερη και πιο ευχάριστη για τον μεμονωμένο προγραμματιστή. Σχέδιο ανάπτυξης C++Ποτέ δεν ήταν στα χαρτιά? το έργο, η τεκμηρίωση και η υλοποίηση κινήθηκαν ταυτόχρονα. Φυσικά, η εξωτερική διεπαφή C++γράφτηκε σε C++. Δεν υπήρξε ποτέ «C++ Project» ή «C++ Development Committee». Να γιατί C++αναπτύχθηκε και συνεχίζει να αναπτύσσεται προς όλες τις κατευθύνσεις για να ανταπεξέλθει στις δυσκολίες που αντιμετωπίζουν οι χρήστες, καθώς και στις συζητήσεις του συγγραφέα με τους φίλους και τους συναδέλφους του.

Αληθινή αντικειμενοστραφή C++

ΣΕ Γλώσσα C++Οι αρχές του αντικειμενοστρεφούς προγραμματισμού υποστηρίζονται πλήρως, συμπεριλαμβανομένων των τριών πυλώνων στους οποίους βασίζεται: ενθυλάκωση, κληρονομικότητα και πολυμορφισμός. Ενθυλάκωση σε C++υποστηρίζεται με τη δημιουργία μη τυπικών (προσαρμοσμένων) τύπων δεδομένων που ονομάζονται κλάσεις. Γλώσσα C++υποστηρίζει την κληρονομικότητα. Αυτό σημαίνει ότι μπορείτε να δηλώσετε έναν νέο τύπο δεδομένων (κλάση) που είναι επέκταση ενός υπάρχοντος.

Αν και Γλώσσα προγραμματισμού C++δικαίως ονομάζεται συνέχεια ΑΠΟκαι οποιοδήποτε λειτουργικό πρόγραμμα στη γλώσσα ΑΠΟθα υποστηρίζεται από τον μεταγλωττιστή C++, όταν μετακινείστε από ΑΠΟπρος την C++έχει γίνει ένα σημαντικό άλμα. Γλώσσα C++ωφελήθηκε από τη συγγένειά του με τη γλώσσα ΑΠΟμε το πέρασμα των χρόνων, όπως πολλοί προγραμματιστές έχουν διαπιστώσει ότι για να το εκμεταλλευτούν πλήρως Γλώσσα C++, πρέπει να εγκαταλείψουν κάποιες από τις προηγούμενες γνώσεις τους και να αποκτήσουν νέες, δηλαδή: να μάθουν έναν νέο τρόπο σύλληψης και επίλυσης προβλημάτων προγραμματισμού. Πριν αρχίσετε να μαθαίνετε C++, Stroustrup και οι περισσότεροι άλλοι προγραμματιστές που χρησιμοποιούν C++σκεφτείτε την εκμάθηση γλωσσών ΑΠΟπροαιρετικός.

Γλώσσα προγραμματισμού C++Αυτή τη στιγμή θεωρείται η κυρίαρχη γλώσσα που χρησιμοποιείται για την ανάπτυξη εμπορικών προϊόντων, το 90% των παιχνιδιών είναι γραμμένα C++χρησιμοποιώντας το DirectX.

Βιβλιογραφία

Πηγές:

  • H.M.Deitel, P.J.Deitel "How to Program in C++"
  • Bjorn Stroustrup "The C++ Programming Language. 3rd edition."
  • Simon Robinson, Ollie Cornes, Jay Glynn και άλλοι "C# για επαγγελματίες"
  • Jess Liberty "Teach Yourself C++ in 21 Days"
  • Stanislav Gornakov "Μαθήματα προγραμματισμού DirectX, C++"

Ετικέτες: Ιστορικό τυποποίησης C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

προέλευση

C και είναι ένα «συμπροϊόν» από τη δημιουργία του λειτουργικού συστήματος UNIX, το οποίο αναπτύχθηκε στα εργαστήρια Bell από τους Ken Thompson, Denis Ritchie και συνεργάτες. Ο Thompson έγραψε μόνος του την αρχική έκδοση του UNIX που λειτουργούσε στο DEC PDP-7, έναν από τους πρώτους μικροϋπολογιστές με μόνο 8K λέξεις κύριας μνήμης (ήταν το 1969, τελικά).

Όπως και άλλα λειτουργικά συστήματα της εποχής, το UNIX γράφτηκε σε γλώσσα assembly. Ο εντοπισμός σφαλμάτων σε προγράμματα γλώσσας συναρμολόγησης είναι πραγματικός πόνος και είναι δύσκολο να βελτιωθεί, και το UNIX δεν αποτέλεσε εξαίρεση. Ο Thompson αποφάσισε ότι χρειαζόταν μια γλώσσα υψηλού επιπέδου για την περαιτέρω ανάπτυξη του λειτουργικού συστήματος και κατέληξε σε μια μικρή γλώσσα. Ο B. Thompson πήρε τη γλώσσα BCPL, μια γλώσσα προγραμματισμού συστήματος που αναπτύχθηκε στα μέσα της δεκαετίας του '60, ως βάση. Η BCPL, με τη σειρά της, προέρχεται από την Algol 60, μια από τις παλαιότερες (και με τη μεγαλύτερη επιρροή) γλώσσες.

Ο Ritchie σύντομα εντάχθηκε στο έργο UNIX και άρχισε να γράφει στο B. Το 1970, η Bell Labs αγόρασε ένα PDP-11 για το έργο. Δεδομένου ότι το B ήταν έτοιμο να τρέξει στο PDP-11, ο Thompson ξανάγραψε μέρος του UNIX στο B. Το 1971, έγινε σαφές ότι το B δεν ήταν αρκετά κατάλληλο για το PDP-11, έτσι ο Ritchie άρχισε να δημιουργεί μια εκτεταμένη έκδοση του B. Εκείνος την ονόμασε για πρώτη φορά NB (New B), αλλά όταν η γλώσσα έγινε πολύ διαφορετική από τη B, το όνομα άλλαξε σε C. Μέχρι το 1973, η γλώσσα ήταν αρκετά σταθερή ώστε το UNIX μπορούσε να ξαναγραφτεί σε αυτήν. Η μετάβαση στο C προσέφερε ένα σημαντικό πλεονέκτημα: φορητότητα. Γράφοντας έναν μεταγλωττιστή C για κάθε ένα από τα μηχανήματα στα εργαστήρια Bell, η ομάδα ανάπτυξης θα μπορούσε να μεταφέρει το UNIX σε αυτά.

Τυποποίηση

Η C συνέχισε να εξελίσσεται στη δεκαετία του 70, ειδικά μεταξύ 1977 και 1979, όταν εκδόθηκε το πρώτο βιβλίο C. Η Γλώσσα Προγραμματισμού C, που γράφτηκε από τους Brian Kernighan και Denis Ritchie και δημοσιεύτηκε το 1978, έγινε η Βίβλος των προγραμματιστών της C. Ελλείψει επίσημου προτύπου, αυτό το βιβλίο -γνωστό και ως K&R, ή «Λευκό Βιβλίο» όπως θέλουν να το αποκαλούν οι θαυμαστές της C- έχει γίνει το de facto πρότυπο. Υπήρχαν λίγοι προγραμματιστές C στη δεκαετία του '70 και οι περισσότεροι από αυτούς ήταν χρήστες UNIX. Ωστόσο, στη δεκαετία του '80, το C πέρασε από τα στενά όρια του κόσμου του UNIX. Οι μεταγλωττιστές C έχουν γίνει διαθέσιμοι σε διάφορα μηχανήματα που εκτελούν διάφορα λειτουργικά συστήματα. Συγκεκριμένα, το C άρχισε να εξαπλώνεται στην ταχέως αναπτυσσόμενη πλατφόρμα υπολογιστών IBM.

Μαζί με την αύξηση της δημοτικότητας ήρθαν και προβλήματα. Οι προγραμματιστές που έγραψαν νέους μεταγλωττιστές έλαβαν ως βάση τη γλώσσα που περιγράφεται στο K&R. Δυστυχώς, στο K&R, ορισμένα χαρακτηριστικά της γλώσσας περιγράφονταν αόριστα, έτσι οι μεταγλωττιστές συχνά τα ερμήνευαν κατά την κρίση τους. Επίσης, το βιβλίο δεν έκανε σαφή διάκριση μεταξύ του τι είναι χαρακτηριστικό της γλώσσας και τι είναι χαρακτηριστικό του λειτουργικού συστήματος UNIX. Για να γίνουν τα πράγματα χειρότερα, μετά τη δημοσίευση του K&R, το C συνέχισε να αναπτύσσεται: νέα χαρακτηριστικά προστέθηκαν σε αυτό και τα παλιά κόπηκαν από αυτό. Σύντομα υπήρξε προφανής ανάγκη για μια ολοκληρωμένη, ακριβή και ενημερωμένη περιγραφή της γλώσσας. Χωρίς ένα τέτοιο πρότυπο, άρχισαν να εμφανίζονται διάλεκτοι της γλώσσας που παρεμβαίνουν στη φορητότητα, την ισχυρότερη πλευρά της γλώσσας.

Η ανάπτυξη του αμερικανικού προτύπου C ξεκίνησε το 1983 υπό την αιγίδα του Αμερικανικού Εθνικού Ινστιτούτου Προτύπων (ANSI). Μετά από πολλές αναθεωρήσεις, το πρότυπο ολοκληρώθηκε το 1988 και εγκρίθηκε επίσημα τον Δεκέμβριο του 1989 ως ANSI X3.159-1989. Το 1990 εγκρίθηκε από τον Διεθνή Οργανισμό Τυποποίησης (ISO) ως το διεθνές πρότυπο ISO/IEC 9899:1990. Αυτή η έκδοση της γλώσσας αναφέρεται συνήθως ως C89 ή C90 για να αποφευχθεί η σύγχυση με την αρχική έκδοση της C, που συνήθως αναφέρεται ως K&R C.

Η γλώσσα υπέστη μικρές αλλαγές το 1995 (οι αλλαγές περιγράφονται σε ένα έγγραφο που συνήθως αναφέρεται ως τροπολογία 1). Πιο σημαντικές αλλαγές σημειώθηκαν το 1999, όταν δημοσιεύτηκε το πρότυπο ISO/IEC 9899:1999. Η γλώσσα που περιγράφεται σε αυτό το πρότυπο αναφέρεται συνήθως ως C99. Οι όροι "ANSI C", "ANSI/ISO C" και "ISO C", που κάποτε χρησιμοποιήθηκαν για να περιγράψουν το C99, είναι διφορούμενοι λόγω της ύπαρξης δύο προτύπων.

Το 2011, μαζί με την αναθεώρηση της γλώσσας C++, κυκλοφόρησε το πρότυπο C11. Παρά την παρουσία του προτύπου 11, πολλοί μεταγλωττιστές εξακολουθούν να μην υποστηρίζουν πλήρως ούτε τις εκδόσεις C99, επομένως η χρήση του προτύπου C11 θα αναφέρεται ρητά.

Η C++ είναι μια μεταγλωττισμένη γλώσσα προγραμματισμού γενικής χρήσης που συνδυάζει χαρακτηριστικά γλωσσών προγραμματισμού υψηλού και χαμηλού επιπέδου. Σε σύγκριση με την προκάτοχό της, τη γλώσσα προγραμματισμού C, η μεγαλύτερη έμφαση έχει δοθεί στην υποστήριξη αντικειμενοστρεφούς και γενικού προγραμματισμού. Το όνομα "Γλώσσα προγραμματισμού C++" προέρχεται από τη γλώσσα προγραμματισμού C, στην οποία ο τελεστής ++ υποδηλώνει την αύξηση μιας μεταβλητής.

Η γλώσσα προγραμματισμού C++ χρησιμοποιείται ευρέως για την ανάπτυξη λογισμικού. Συγκεκριμένα, η δημιουργία διαφόρων προγραμμάτων εφαρμογών, η ανάπτυξη λειτουργικών συστημάτων, προγραμμάτων οδήγησης συσκευών, καθώς και βιντεοπαιχνιδιών και πολλά άλλα. Δημιουργήθηκε στις αρχές της δεκαετίας του 1980 από τον Bjorn Stroustrup. Βρήκε μια σειρά από βελτιώσεις στη γλώσσα προγραμματισμού C για δική του χρήση. εκείνοι. Αρχικά, δεν είχε προγραμματιστεί η δημιουργία της γλώσσας προγραμματισμού C++.

Υποστηρίζει παραδείγματα προγραμματισμού όπως διαδικαστικός προγραμματισμός, αντικειμενοστραφής προγραμματισμός, γενικός προγραμματισμός, παρέχει αρθρωτότητα, χωριστή μεταγλώττιση, χειρισμό εξαιρέσεων, αφαίρεση δεδομένων, δήλωση τύπων αντικειμένων (κλάσεις), εικονικές συναρτήσεις.

Το όνομα της γλώσσας που προκύπτει προέρχεται από τον τελεστή προσαύξησης μοναρίου postfix C++ (αυξάνοντας την τιμή μιας μεταβλητής κατά ένα). Το όνομα C+ δεν χρησιμοποιήθηκε επειδή είναι συντακτικό σφάλμα στο C και, επιπλέον, το όνομα λήφθηκε από άλλη γλώσσα. Η γλώσσα δεν ονομάστηκε επίσης D επειδή "είναι μια επέκταση του C και δεν επιχειρεί να διορθώσει προβλήματα αφαιρώντας στοιχεία C".

Πλεονεκτήματα της γλώσσας:

1. Επεκτασιμότητα. Η C++ χρησιμοποιείται για την ανάπτυξη προγραμμάτων για μια ποικιλία πλατφορμών και συστημάτων.

2. Δυνατότητα εργασίας σε χαμηλό επίπεδο με μνήμη, διευθύνσεις, θύρες.

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

4. Cross-platform. Οι μεταγλωττιστές είναι διαθέσιμοι για μεγάλο αριθμό πλατφορμών, τα προγράμματα αναπτύσσονται σε C ++ για μια μεγάλη ποικιλία πλατφορμών και συστημάτων.

5. Αποτελεσματικότητα. Η γλώσσα έχει σχεδιαστεί για να παρέχει στον προγραμματιστή μέγιστο έλεγχο σε όλες τις πτυχές της δομής και της εκτέλεσης του προγράμματος.

Γλωσσικά μειονεκτήματα:

1. Η παρουσία πολλών χαρακτηριστικών που παραβιάζουν τις αρχές της ασφάλειας τύπου οδηγεί στο γεγονός ότι στα προγράμματα C ++ ένα λεπτό σφάλμα μπορεί εύκολα να εισχωρήσει.

2. Κακή υποστήριξη αρθρωτής. Η συμπερίληψη της διεπαφής μιας εξωτερικής μονάδας μέσω της εισαγωγής προεπεξεργαστή ενός αρχείου κεφαλίδας (#include) επιβραδύνει σοβαρά τη μεταγλώττιση όταν συμπεριλαμβάνεται μεγάλος αριθμός λειτουργικών μονάδων.

3. Η γλώσσα C++ είναι δύσκολη στην εκμάθηση και τη μεταγλώττιση.

4. Ορισμένες μετατροπές τύπων δεν είναι διαισθητικές. Ειδικότερα, η πράξη σε ανυπόγραφους και ενυπόγραφους αριθμούς παράγει ένα ανυπόγραφο αποτέλεσμα.

5. Κάποιοι θεωρούν ότι η έλλειψη ενσωματωμένου συστήματος συλλογής σκουπιδιών είναι μειονέκτημα της γλώσσας C++. Από την άλλη πλευρά, η C++ διαθέτει αρκετά εργαλεία για να εξαλείψει σχεδόν τη χρήση επικίνδυνων δεικτών και δεν υπάρχουν θεμελιώδη προβλήματα στην υλοποίηση και τη χρήση της συλλογής σκουπιδιών (σε επίπεδο βιβλιοθηκών, όχι στη γλώσσα). Η απουσία ενσωματωμένης συλλογής σκουπιδιών επιτρέπει στον χρήστη να επιλέξει μια στρατηγική διαχείρισης πόρων.