Istoria dezvoltării limbajului C. §1 Informaţii generale despre limbă. Etapele proiectării programului. Modele de ciclu de viață al aplicațiilor. limbaj C și UNIX

C++ (pronunțat c-plus-plus) este un limbaj de programare compilat, tip static, de uz general, care poate fi folosit pentru a crea programe de orice nivel de complexitate.
De mai bine de 20 de ani, acest limbaj se află în primele trei limbaje de programare cele mai populare și solicitate. (Acest lucru poate fi verificat vizitând site-ul web TIOBE).
Limbajul a apărut la începutul anilor 1980, când angajatul Bell Labs, Björn Stroustrup, a venit cu o serie de îmbunătățiri ale limbajului C pentru propriile nevoi.

Bjarne Stroustrup - creatorul limbajului C++

Stroustrup a decis să extindă limbajul C cu funcțiile disponibile în limbajul Simula. Limbajul C, fiind limbajul de bază al sistemului UNIX pe care rulau computerele Bell, este rapid, bogat în funcții și portabil. Stroustrup i-a adăugat capacitatea de a lucra cu clase și obiecte. Ca urmare, problemele practice de modelare s-au dovedit a fi accesibile atât din punct de vedere al timpului de dezvoltare (datorită utilizării claselor de tip Simula), cât și din punct de vedere al timpului de calcul (datorită vitezei lui C).
Iată cum spune însuși dezvoltatorul limbajului:



În 1998, primul standard de limbă, cunoscut sub numele de C++98, a fost publicat de un comitet de standarde. C++ continuă să evolueze pentru a satisface cerințele moderne. Unul dintre grupurile care dezvoltă limbajul C++ și trimite sugestii comitetului de standardizare C++ pentru a-l îmbunătăți este Boost, care se ocupă, printre altele, de îmbunătățirea capacităților limbajului prin adăugarea de caracteristici de metaprogramare. Cel mai recent standard a fost lansat în 2017 și se numește C++17. Următorul standard nu va întârzia să apară și este de așteptat să apară în 2020.
Nimeni nu deține drepturile asupra limbajului C++, este gratuit. În martie 2016, în Rusia a fost creat grupul de lucru WG21 C++. Grupul a fost organizat pentru a colecta propuneri pentru standardul C++, a le înainta comitetului și a le apăra la reuniunile generale ale Organizației Internaționale pentru Standardizare.
C++ este un limbaj cu mai multe paradigme (de la cuvântul paradigmă - un stil de scriere a programelor de calculator), care include o gamă largă de stiluri și tehnologii de programare diferite. Este adesea menționat ca un limbaj orientat pe obiecte, dar, strict vorbind, nu este cazul. În procesul de lucru, dezvoltatorul obține libertate absolută în alegerea instrumentelor, astfel încât problema rezolvată folosind una sau alta abordare să fie rezolvată cât mai eficient posibil. Cu alte cuvinte, C++ nu forțează programatorul să adere doar la un singur stil de dezvoltare a programului (de exemplu, orientat pe obiecte).
C++ are o bibliotecă standard bogată care include containere și algoritmi obișnuiți, I/O, expresii regulate, suport multithreading și multe altele. C++ a influențat multe limbaje de programare, printre care: Java, C#, D. Deoarece C++ aparține familiei de limbaje bazate pe sintaxa limbajului C, alte limbaje de programare din această familie pot fi stăpânite cu ușurință: JavaScript , PHP, Perl, Objective-C și multe altele. . etc., inclusiv limba parentală în sine - C. ()
În timpul existenței sale, miturile stabile au fost înrădăcinate în limbajul C++, care sunt ușor de infirmat (vezi aici: Partea 1 și Partea 2)

Istoria limbii și eliberarea standardelor

1983

Creator de limbaj - Bjorn Stroustrup, la Bell Labs, a introdus o versiune timpurie a C++ („C cu clase”)

1985

Prima lansare comercială a C++, limbajul capătă un nume modern

1986

Lansarea primei ediții a limbajului de programare C++, o carte C++ scrisă de Bjorn Stroustrup

1998

Standardul internațional pentru limbajul C++ a fost ratificat: ISO/IEC 14882:1998 „Standard pentru limbajul de programare C++”

2003
2005

Raportul tehnic al bibliotecii 1 (TR1) a fost lansat. Deși nu face parte oficial din standard, raportul a descris extensii ale bibliotecii standard care ar trebui incluse în următoarea versiune a limbajului C++.

2011

Lansarea unui nou standard - C++11 sau ISO/IEC 14882:2011; noul standard a inclus completări la nucleul limbajului și o extensie la biblioteca standard, inclusiv o mare parte din TR1

2014

Lansarea standardului C++14 („Standard internațional ISO/IEC 14882:2014(E) Limbajul de programare C++”); C++14 poate fi văzut ca o mică extensie a C++11, care conține în principal remedieri de erori și îmbunătățiri minore.

2017

Lansarea noului standard este C++1z (C++17). Acest standard a făcut multe modificări și completări. De exemplu, STD a inclus biblioteci ale standardului C11, un sistem de fișiere bazat pe boost::filesystem și cea mai mare parte a bibliotecii experimentale TS I.

2020

C++20 este numele informal pentru standardul ISO/IEC pentru limbajul de programare C++, care este de așteptat după C++17. Schiță a standardului N4800.

Filosofie C++

În The Design and Evolution of C++ (2007), Bjorn Stroustrup descrie principiile pe care le-a urmat atunci când a proiectat C++ (date sub formă prescurtată):

  • Obțineți un limbaj universal cu tipuri de date statice, eficiența și portabilitatea C.
  • Suportă direct și cuprinzător o varietate de stiluri de programare.
  • Oferă programatorului libertatea de a alege, chiar dacă îi oferă posibilitatea de a alege incorect.
  • Păstrați compatibilitatea cu C cât mai mult posibil, făcând astfel posibilă trecerea cu ușurință de la programare la C.
  • Evitați confuzia între C și C++: orice construcție permisă în ambele limbi trebuie să însemne același lucru în fiecare dintre ele și să conducă la același comportament de program.
  • Evitați funcțiile care depind de platformă sau nu sunt universale.
  • „Nu plătiți pentru ceea ce nu utilizați” - Nicio caracteristică de limbă nu ar trebui să provoace degradarea performanței pentru programele care nu o folosesc.
  • Nu necesită un mediu de programare prea complicat.

C și C++

Sintaxa C++ este moștenită din limbajul C. Deși, formal, unul dintre principiile C++ rămâne acela de a menține compatibilitatea cu limbajul C, de fapt, grupurile de standardizare ale acestor limbaje nu interacționează, iar modificările pe care le au. fac nu numai că nu se corelează, dar adesea se contrazic fundamental reciproc ideologic. Deci, elementele pe care noile standarde C le adaugă la nucleu sunt elemente ale bibliotecii standard din standardul C++ și sunt în general absente în nucleu, de exemplu, matrice dinamice, matrice cu granițe fixe, facilități de procesare paralelă. Stroustrup consideră că combinarea dezvoltării acestor două limbi ar fi de mare beneficiu, dar nu este posibil din motive politice. Deci compatibilitatea practică între C și C++ se va pierde treptat.
În acest exemplu, în funcție de compilatorul utilizat, va fi afișat fie „C++” fie „C”:

Programul 9.1

#include int main() (printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++": "C"); return 0; )

Acest lucru se datorează faptului că constantele de caractere în C sunt de tip int , iar în C++ sunt de tip char , dar dimensiunile acestor tipuri diferă.

Modele de ciclu de viață al aplicațiilor

Ciclu de viață software-ul este o perioadă de timp care începe din momentul în care se ia decizia privind necesitatea creării unui produs software și se termină în momentul retragerii sale complete din funcționare. Acest ciclu este procesul de construire și dezvoltare a software-ului (SW). Există mai multe modele de ciclu de viață.
Model în cascadă ciclul de viață (modelul cascadă englezesc) a fost propus în 1970 de Winston Royce. Acesta prevede implementarea succesivă a tuturor etapelor proiectului într-o ordine strict fixă. Trecerea la etapa următoare înseamnă finalizarea completă a lucrării în etapa anterioară. Cerințele definite în etapa de formare a cerințelor sunt strict documentate sub formă de termeni de referință și fixate pe întreaga durată a dezvoltării proiectului. Fiecare etapă culminează cu lansarea unui set complet de documentație suficientă pentru ca dezvoltarea să fie continuată de o altă echipă de dezvoltare.
Etapele proiectului conform modelului cascada:

  1. Formarea cerințelor;
  2. Proiecta;
  3. Implementare;
  4. Testare;
  5. implementare;
  6. Operare și întreținere.

În modelul în cascadă, trecerea de la o fază de proiect la alta presupune corectitudinea completă a rezultatului fazei anterioare. În proiectele mari, acest lucru este aproape imposibil de realizat. Prin urmare, un astfel de model este potrivit doar pentru dezvoltarea unui proiect mic. (W. Royce însuși nu a aderat la acest model și a folosit un model iterativ).
Model iterativ
O alternativă la modelul cascadă este modelul de dezvoltare iterativă și incrementală (IID), care a primit de la T. Gilb în anii 70. denumirea modelului evolutiv. Modelul IID descompune ciclul de viață al unui proiect într-o succesiune de iterații, fiecare dintre ele seamănă cu un „mini-proiect”, incluzând toate procesele de dezvoltare aplicate la crearea unor piese mai mici de funcționalitate, în comparație cu proiectul în ansamblu. Scopul fiecărei iterații este de a obține o versiune funcțională a sistemului software, inclusiv funcționalitatea definită de conținutul integrat al tuturor iterațiilor anterioare și actuale. Rezultatul iterației finale conține toată funcționalitatea necesară a produsului. Astfel, odată cu finalizarea fiecărei iterații, produsul primește un increment - un increment - la capacitățile sale, care, prin urmare, se dezvoltă evolutiv.


În majoritatea metodologiilor moderne de dezvoltare sunt implementate diverse variante ale abordării iterative:

Proces de dezvoltare - Proces Rational Unified (RUP)

Proces rațional unificat (RUP)(Rational Unified Process) este o metodologie de dezvoltare software menținută de Rational Software (IBM). Metodologia oferă recomandări pentru toate etapele de dezvoltare: de la modelarea afacerii până la testarea și punerea în funcțiune a programului finalizat. Limbajul de modelare unificat (UML) este folosit ca limbaj de modelare.
Ciclul de viață complet al dezvoltării produsului constă din patru faze, fiecare dintre acestea incluzând una sau mai multe iterații.

  • Etapa inițială (început)
  • Determinarea sferei proiectului și a cantității de resurse necesare. Sunt determinate principalele cerințe, restricții și funcționalitatea cheie a produsului. Riscurile sunt evaluate. Planificarea actiunii. La sfârșitul fazei de inițiere, se evaluează atingerea obiectivului pentru ciclul de viață al obiectivului, ceea ce implică un acord între părțile interesate pentru a continua proiectul.

  • Elaborare
  • Documentatia cerinţelor. Proiectarea, implementarea și testarea arhitecturii executabile. Specificarea termenilor și costului. Reducerea principalelor riscuri. Finalizarea cu succes a fazei de dezvoltare înseamnă atingerea etapei de referință pentru arhitectura ciclului de viață.

  • Constructie
  • În faza „Build”, majoritatea funcționalității produsului este implementată: designul aplicației este finalizat, este scris codul sursă. Faza de construire se încheie cu prima lansare externă a sistemului și cu etalonul capacității operaționale inițiale.

  • Implementare (tranziție)
  • În faza de „Implementare”, versiunea finală a produsului este creată și transferată de la dezvoltator la client. Aceasta include un program de testare beta, educarea utilizatorilor și asigurarea calității produselor. În cazul în care calitatea nu corespunde așteptărilor utilizatorilor sau criteriilor stabilite în faza de Start, faza de implementare se repetă din nou. Atingerea tuturor obiectivelor înseamnă atingerea punctului de hotar al produsului finit (Product Release) și finalizarea întregului ciclu de dezvoltare.



"Tehnologia de informație. Inginerie de sistem și software. Procesele ciclului de viață al software-ului”. Acest standard a fost adoptat de Agenția Federală pentru Reglementare Tehnică și Metrologie a Federației Ruse și este similar cu standardul internațional ISO/IEC 12207:2008. Acest standard stabilește un cadru general pentru procesele ciclului de viață al software-ului care poate fi folosit ca ghid în industria software. Standardul nu propune un model specific de ciclu de viață. Prevederile sale sunt comune oricăror modele, metode și tehnologii ale ciclului de viață pentru crearea de software. Descrie structura proceselor ciclului de viață fără a specifica modul de implementare sau îndeplinire a activităților și sarcinilor incluse în aceste procese.

Prezentare pentru lecție
Subiecte de mesaje
  • Free Software Foundation (FSF)
  • Licențe software gratuite
  • Software gratuit și sursă deschisă
  • Istoria dezvoltării limbajelor de programare
  • Istoria C. C și C++
  • Istorie
  • Critica C++
  • Istoria UNIX
  • Modelul ciclului de viață al software-ului în spirală
  • UML (English Unified Modeling Language - limbaj unificat de modelare)
  • Cadrul de soluții Microsoft
  • IDE pentru programare C/C++ pe Windows
  • Compilatoare C/C++
  • Crearea unei aplicații de consolă pe Windows
Întrebări
  1. De ce modelul de dezvoltare software cascadă nu este utilizat în proiecte mari?
  2. Care este diferența dintre modelele de dezvoltare în cascadă și cele iterative?
  3. Enumerați etapele dezvoltării software în metodologia procesului unificat rațional (RUP).

limbaj de programare C++

Ultima actualizare: 28.08.2017

Limbajul de programare C++ este un limbaj de programare compilat, de tip static, de uz general, de nivel înalt, care este potrivit pentru construirea unei game largi de aplicații. C++ este una dintre cele mai populare și răspândite limbaje în prezent.

Își are rădăcinile în limbajul C, care a fost dezvoltat în 1969-1973 la Bell Labs de către programatorul Dennis Ritchie. La începutul anilor 1980, programatorul danez Bjarne Stroustrup, atunci la Bell Labs, a dezvoltat C++ ca o extensie a limbajului C. De fapt, la început, C++ a completat pur și simplu limbajul C cu unele caracteristici ale programării orientate pe obiecte. Și așa Stroustrup însuși a numit-o la început „C cu clase” („C cu clase”).

Ulterior, noua limbă a început să câștige popularitate. Au fost adăugate noi funcții care l-au făcut nu doar o completare la C, ci și un limbaj de programare complet nou. Ca rezultat, „C cu clase” a fost redenumit în C++. Și de atunci, ambele limbi au început să se dezvolte independent una de cealaltă.

C++ este un limbaj puternic, care moștenește capacități bogate de memorie de la C. Prin urmare, C++ își găsește adesea aplicația în programarea sistemului, în special, atunci când creează sisteme de operare, drivere, diverse utilități, antivirusuri etc. Apropo, Windows este scris în mare parte în C++. Dar utilizarea acestui limbaj nu se limitează la programarea sistemului. C++ poate fi folosit în programe de orice nivel în care viteza și performanța sunt importante. Adesea este folosit pentru a crea aplicații grafice, diverse programe de aplicație. De asemenea, este adesea folosit pentru a crea jocuri cu imagini bogate. În plus, direcția mobilă a luat amploare recent, unde și-a găsit aplicația și C++. Și chiar și în dezvoltarea web, puteți utiliza și C++ pentru a crea aplicații web sau un fel de servicii auxiliare care servesc aplicații web. În general, C++ este un limbaj utilizat pe scară largă în care puteți scrie aproape orice fel de program.

C++ este un limbaj compilat, ceea ce înseamnă că compilatorul traduce codul sursă C++ într-un fișier executabil care conține un set de instrucțiuni ale mașinii. Dar diferitele platforme au propriile lor caracteristici, astfel încât programele compilate nu pot fi pur și simplu transferate de la o platformă la alta și rulează acolo. Cu toate acestea, la nivel de cod sursă, programele C++ sunt în mare parte portabile, cu excepția cazului în care sunt utilizate unele caracteristici specifice sistemului de operare. Iar disponibilitatea compilatoarelor, bibliotecilor și instrumentelor de dezvoltare pentru aproape toate platformele comune face posibilă compilarea aceluiași cod sursă C++ în aplicații pentru aceste platforme.

Spre deosebire de C, limbajul C++ vă permite să scrieți aplicații într-un stil orientat pe obiecte, reprezentând un program ca o colecție de clase și obiecte care interacționează între ele. Acest lucru simplifică crearea de aplicații mari.

Etape ale dezvoltării

În 1979-80, Bjarne Stroustrup a dezvoltat o extensie a limbajului C - „C cu clase”. În 1983, limbajul a fost redenumit în C++.

În 1985, a fost lansată prima versiune comercială a limbajului C++, precum și prima ediție a cărții „The C++ Programming Language”, care a reprezentat prima descriere a acestui limbaj în absența unui standard oficial.

În 1989, a fost lansată o nouă versiune a limbajului C++ 2.0, care includea o serie de caracteristici noi. După aceea, limba sa dezvoltat relativ lent până în 2011. Dar, în același timp, în 1998, a fost făcută prima încercare de standardizare a limbajului de către ISO (International Organization for Standardization). Primul standard a fost numit ISO/IEC 14882:1998 sau C++98 pe scurt. Mai târziu, în 2003, a fost publicată o nouă versiune a standardului C++03.

În 2011, a fost publicat noul standard C++11, care conținea multe completări și a îmbogățit limbajul C++ cu un număr mare de caracteristici noi. Aceasta a fost urmată în 2014 de o adăugare minoră la standard, cunoscută și sub numele de C++14. Și o altă lansare cheie a limbii este programată pentru 2017.

Compilatoare și medii de dezvoltare

Pentru a dezvolta programe în C++, aveți nevoie de un compilator - acesta traduce codul sursă C++ într-un fișier executabil, care poate fi apoi rulat. Dar în acest moment există o mulțime de compilatoare diferite. Ele pot diferi în diferite aspecte, în special în implementarea standardelor. O listă de bază de compilatoare pentru C++ poate fi găsită pe wikipedia. Se recomandă pentru dezvoltare să aleagă acele compilatoare care dezvoltă și implementează toate cele mai recente standarde. De exemplu, pe parcursul acestui tutorial, compilatorul g++ disponibil gratuit, dezvoltat de proiectul GNU, va fi folosit în mod predominant.

De asemenea, puteți utiliza IDE-uri precum Visual Studio, Netbeans, Eclipse, Qt etc. pentru a crea programe.

limbaj C și UNIX

Limbaj de programare DIN(pronunțat „C”) a fost creat la începutul anilor 70, când Ken Thompson și Dennis Ritchie de la Bell Labs dezvoltau sistemul de operare UNDC. Mai întâi au creat partea compilatorului DIN, apoi l-a folosit pentru a compila restul compilatorului DINși în cele din urmă a folosit compilatorul rezultat pentru a compila UNIX. Sistemul de operare UNIX a fost distribuit inițial în coduri sursă pe DINîntre universități și laboratoare, iar destinatarul ar putea compila codul sursă în limbaj DIN la codul nativ folosind un compilator adecvat DIN.

Distribuția codului sursă a făcut ca sistemul de operare UNIX să fie unic; programatorul ar putea schimba sistemul de operare, iar codul sursă ar putea fi portat de la o platformă hardware la alta. Astăzi, standardul POSIX definește setul standard de apeluri de sistem UNIX disponibile în DIN, care trebuie implementat pe versiunile UNIX care sunt compatibile cu POSIX. C a fost al treilea limbaj dezvoltat de Thomson și Ritchie în timpul creării UNIX; Primele două au fost, desigur, DARȘi ÎN.

C limbaj de asamblare mobil

În comparație cu limba anterioară - BCPL, limbajul DIN a fost îmbunătățit prin adăugarea unor tipuri de date specifice privind lungimea. De exemplu, tipul de date int ar putea fi folosit pentru a crea o variabilă cu un anumit număr de biți (de obicei 16), în timp ce tipul de date lung ar putea fi folosit pentru a crea o variabilă întreagă cu mai mulți biți (de obicei 32). Spre deosebire de alte limbi de nivel înalt, DIN ar putea lucra cu adrese de memorie direct folosind pointeri și referințe. În măsura în care DINși-a păstrat capacitatea de a accesa direct hardware-ul, este adesea menționat ca un limbaj de nivel mediu sau denumit în glumă „limbaj de asamblare mobil”.

C - limbaj de programare structurat

În ceea ce privește gramatica și sintaxa, DIN este un limbaj de programare structurat. În timp ce mulți programatori moderni gândesc în termeni de clase și obiecte, programatorii DIN gândiți în termeni de proceduri și funcții. ÎN DIN vă puteți defini propriile tipuri de date abstracte folosind cuvântul cheie struct. În mod similar, puteți descrie propriile tipuri de numere întregi (enumerări) și puteți da alte nume tipurilor de date existente folosind cuvântul cheie typedef. In acest sens DIN este un limbaj structural cu germenii programării orientate pe obiecte.

Standardizarea limbajului C

Limbaj răspândit C pe diferite tipuri de computere (numite uneori platforme hardware) a condus, din păcate, la multe variații ale limbajului. Erau asemănători, dar incompatibili unul cu celălalt. Aceasta a fost o problemă majoră pentru dezvoltatorii de software care aveau nevoie să scrie programe compatibile care să poată rula pe mai multe platforme. A devenit clar că era nevoie de o versiune standard C. În 1983 ANSI (American National Standards Committee) a format comitetul tehnic X3J11 pentru a crea un standard lingvistic C(pentru a „oferi o definiție a limbajului fără ambiguitate și independentă de mașină”). În 1989 standardul a fost aprobat. ANSI a încheiat un parteneriat cu ISO (International Standards Organization) pentru standardizare C pe plan internațional; un standard comun a fost publicat în 1990 și numit ANSI/ISO 9899:1990. Acest standard este încă îmbunătățit și este susținut de majoritatea dezvoltatorilor de compilatoare.

Nașterea lui C++

Bjorn Stroustrup dezlănțuie potențialul orientat pe obiecte DIN prin transferul caracteristicilor clasei Simula 67în DIN. Inițial, noua limbă a fost numită „C cu clase” și abia apoi a început să fie numită C++. Limba C++ a atins popularitate fiind dezvoltat la Bell Labs, ulterior a fost transferat în alte industrii și corporații. Astăzi este unul dintre cele mai populare (și autorizate) limbaje de programare din lume. C++ moștenește atât părțile bune, cât și părțile rele DIN.

Confesiunile lui Bjorn Stroustrup

Bjorn Stroustrup: „Am venit cu C++, a notat definiția sa originală și a făcut prima implementare. Am ales și formulat criterii de proiectare C++, și-a dezvoltat principalele caracteristici și a fost responsabil pentru soarta propunerilor de extindere a limbii în comitetul de standardizare C++", - scrie autorul celui mai popular limbaj de programare. - "Limbaj C++ datorează mult limbajului C, și limba C rămâne un subset limbaj C++(dar C++ remediază câteva defecte serioase în sistemul de tip C). Am păstrat și fonduri C, care sunt suficient de scăzute pentru a face față celor mai critice sarcini ale sistemului. Limba C, la rândul său, datorează mult predecesorului său, BCPL; apropo, stilul de comentariu // a fost luat din C++ de la BCPL. Cealaltă sursă principală de inspirație a fost limbajul Simula67. Conceptul de clase (cu clase derivate și funcții virtuale) a fost împrumutat de la el. Mijloacele de supraîncărcare a operatorului și capacitatea de a plasa declarații oriunde poate fi scrisă o instrucțiune amintește Algol68. "

De ce C++

Nume C++ inventat de Rick Massitti. Numele indică natura evolutivă a trecerii la acesta de la C. „++” este o operație de creștere în C. Nume puțin mai scurt C++ este o eroare de sintaxă; în plus, a fost deja folosită ca denumire a unei limbi complet diferite. Experți în semantică C găsește asta C++ mai rau decat ++C. Titluri D limbajul nu a primit-o pentru că este o extensie a C și nu încearcă să rezolve problemele aruncând funcții.

De ce a fost nevoie de C++

Inițial limbaj de programare C++ a fost conceput astfel încât autorul și prietenii săi să nu fie nevoiți să programeze în asamblare, C sau alte limbaje moderne de nivel înalt. Scopul său principal a fost de a face scrierea de programe bune mai ușoară și mai plăcută pentru programatorul individual. Plan de dezvoltare C++ nu a fost niciodată pe hârtie; proiectul, documentația și implementarea s-au mutat în același timp. Desigur, interfața externă C++ a fost scris în C++. Nu a existat niciodată un „Proiect C++” sau un „Comitet de dezvoltare C++”. De aceea C++ dezvoltat și continuă să evolueze în toate direcțiile pentru a face față dificultăților cu care se confruntă utilizatorii, precum și în discuțiile autorului cu prietenii și colegii săi.

Adevărat C++ orientat pe obiecte

ÎN limbaj C++ principiile programării orientate pe obiecte sunt pe deplin susținute, inclusiv cei trei piloni pe care se află: încapsularea, moștenirea și polimorfismul. Încapsularea în C++ susținut prin crearea unor tipuri de date non-standard (personalizate) numite clase. Limba C++ susține moștenirea. Aceasta înseamnă că puteți declara un nou tip de date (clasă) care este o extensie a unuia existent.

Cu toate că limbaj de programare C++ pe bună dreptate numită continuare DINși orice program funcțional în limbaj DIN va fi suportat de compilator C++, la mutarea din DIN la C++ s-a făcut un salt semnificativ. Limba C++ a beneficiat de rudenia sa cu limba DIN de-a lungul anilor, la fel de mulți programatori au descoperit că pentru a profita din plin limbaj C++, ei trebuie să abandoneze unele dintre cunoștințele anterioare și să dobândească altele noi și anume: să învețe un nou mod de conceptualizare și rezolvare a problemelor de programare. Înainte de a începe să înveți C++, Stroustrup și majoritatea celorlalți programatori care folosesc C++ luați în considerare învățarea limbilor străine DIN opțional.

Limbaj de programare C++ considerată în prezent limba dominantă folosită pentru dezvoltarea produselor comerciale, 90% dintre jocuri sunt scrise în C++ folosind DirectX.

Literatură

Surse:

  • H.M.Deitel, P.J.Deitel „Cum se programează în C++”
  • Bjorn Stroustrup "Limbajul de programare C++. Ediția a 3-a."
  • Simon Robinson, Ollie Cornes, Jay Glynn și alții „C# pentru profesioniști”
  • Jess Liberty „Învățați-vă singur C++ în 21 de zile”
  • Stanislav Gornakov „Lecții de programare DirectX, C++”

Etichete: Istoricul standardizării C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

origini

C și este un „coprodus” de la crearea sistemului de operare UNIX, care a fost dezvoltat la Bell Laboratories de Ken Thompson, Denis Ritchie și co. Thompson a scris de unul singur versiunea originală a UNIX care rula pe DEC PDP-7, unul dintre primele minicalculatoare cu doar 8K cuvinte de memorie principală (era 1969, până la urmă).

Ca și alte sisteme de operare ale zilei, UNIX a fost scris în limbaj de asamblare. Depanarea programelor în limbaj de asamblare este o adevărată durere și greu de îmbunătățit, iar UNIX nu a făcut excepție. Thompson a decis că este nevoie de un limbaj de nivel înalt pentru dezvoltarea ulterioară a sistemului de operare și a venit cu un limbaj mic B. Thompson a luat ca bază BCPL, un limbaj de programare de sistem dezvoltat la mijlocul anilor 60. BCPL, la rândul său, provine din Algol 60, una dintre cele mai vechi (și mai influente) limbi.

Ritchie sa alăturat în curând proiectului UNIX și a început să scrie în B. În 1970, Bell Labs a achiziționat un PDP-11 pentru proiect. Deoarece B era gata să ruleze pe PDP-11, Thompson a rescris o parte din UNIX în B. În 1971, a devenit clar că B nu era tocmai potrivit pentru PDP-11, așa că Ritchie a început să creeze o versiune extinsă a lui B. Mai întâi l-a numit NB (New B ), dar când limbajul a devenit foarte diferit de B, numele a fost schimbat în C. Până în 1973, limbajul era suficient de stabil încât UNIX putea fi rescris în el. Trecerea la C a oferit un beneficiu important: portabilitatea. Scriind un compilator C pentru fiecare dintre mașinile de la Bell Labs, echipa de dezvoltare ar putea porta UNIX la ele.

Standardizare

C a continuat să evolueze în anii 70, mai ales între 1977 și 1979, când a fost publicată prima carte C. Limbajul de programare C, scris de Brian Kernighan și Denis Ritchie și publicat în 1978, a devenit biblia programatorilor C. În absența unui standard oficial, această carte - cunoscută și sub numele de K&R, sau „Cartea Albă”, așa cum le place fanilor C să o numească - a devenit standardul de facto. Au existat puțini programatori C în anii 70 și cei mai mulți dintre ei erau utilizatori UNIX. Cu toate acestea, în anii 80, C a depășit limitele înguste ale lumii UNIX. Compilatoarele C au devenit disponibile pe diferite mașini care rulează diferite sisteme de operare. În special, C a început să se răspândească pe platforma IBM PC în dezvoltare rapidă.

Odată cu creșterea popularității au apărut și probleme. Programatorii care au scris compilatoare noi au luat ca bază limbajul descris în K&R. Din păcate, în K&R, unele caracteristici ale limbajului au fost descrise vag, astfel încât compilatorii le interpretau adesea la discreția lor. De asemenea, cartea nu a făcut o distincție clară între ceea ce este o caracteristică a limbajului și ceea ce este o caracteristică a sistemului de operare UNIX. Pentru a înrăutăți lucrurile, după publicarea K&R, C a continuat să se dezvolte: i s-au adăugat noi funcții și au fost eliminate cele vechi. Curând a apărut o nevoie evidentă de o descriere cuprinzătoare, exactă și actualizată a limbii. Fără un astfel de standard, au început să apară dialecte ale limbii care interferau cu portabilitatea, cea mai puternică latură a limbii.

Dezvoltarea standardului C american a început în 1983 sub auspiciile Institutului Național American de Standarde (ANSI). După multe revizuiri, standardul a fost finalizat în 1988 și adoptat oficial în decembrie 1989 ca ANSI X3.159-1989. În 1990, a fost aprobat de către Organizația Internațională pentru Standardizare (ISO) ca standard internațional ISO/IEC 9899:1990. Această versiune a limbajului este denumită în mod obișnuit C89 sau C90 pentru a evita confuzia cu versiunea originală a C, denumită în mod obișnuit K&R C.

Limba a suferit modificări minore în 1995 (schimbările sunt descrise într-un document denumit în mod obișnuit amendamentul 1). Modificări mai semnificative au avut loc în 1999, când a fost publicat standardul ISO/IEC 9899:1999. Limbajul descris în acest standard este denumit în mod obișnuit C99. Termenii „ANSI C”, „ANSI/ISO C” și „ISO C”, folosiți cândva pentru a descrie C99, sunt ambigui din cauza existenței a două standarde.

În 2011, odată cu revizuirea limbajului C++, a fost lansat standardul C11. În ciuda prezenței standardului 11, mulți compilatori încă nu acceptă pe deplin nici măcar versiunile C99, așa că utilizarea standardului C11 va fi menționată în mod explicit.

C++ este un limbaj de programare compilat de uz general care combină caracteristici ale limbajelor de programare de nivel înalt și de nivel scăzut. În comparație cu predecesorul său, limbajul de programare C, cel mai mare accent a fost pus pe suportarea programării orientate pe obiecte și a programării generice. Denumirea „limbaj de programare C++” provine din limbajul de programare C, în care operatorul unar ++ denotă incrementul unei variabile.

Limbajul de programare C++ este utilizat pe scară largă pentru dezvoltarea de software. Și anume, crearea diferitelor programe de aplicație, dezvoltarea sistemelor de operare, drivere de dispozitiv, precum și jocuri video și multe altele. A fost creat la începutul anilor 1980 de Bjorn Stroustrup. El a venit cu o serie de îmbunătățiri ale limbajului de programare C pentru uzul său propriu. acestea. Inițial, nu a fost planificată crearea limbajului de programare C++.

Suportă paradigme de programare precum programarea procedurală, programarea orientată pe obiecte, programarea generică, oferă modularitate, compilare separată, gestionarea excepțiilor, abstracția datelor, declararea tipurilor de obiecte (clasele), funcții virtuale.

Numele limbajului rezultat provine de la operatorul de increment postfix unar C++ (incrementând valoarea unei variabile cu unu). Numele C+ nu a fost folosit deoarece este o eroare de sintaxă în C și, în plus, numele a fost preluat de un alt limbaj. De asemenea, limbajul nu a fost numit D pentru că „este o extensie a lui C și nu încearcă să rezolve problemele prin eliminarea elementelor C”.

Avantajele limbii:

1. Scalabilitate. C++ este folosit pentru a dezvolta programe pentru o varietate de platforme și sisteme.

2. Abilitatea de a lucra la un nivel scăzut cu memorie, adrese, porturi.

3. Abilitatea de a crea algoritmi generalizați pentru diferite tipuri de date, specializarea acestora și calcule în etapa de compilare folosind șabloane.

4. Multi-platformă. Compilatoarele sunt disponibile pentru un număr mare de platforme, programele sunt dezvoltate în C++ pentru o mare varietate de platforme și sisteme.

5. Eficiență. Limbajul este conceput pentru a oferi programatorului control maxim asupra tuturor aspectelor legate de structura și execuția programului.

Dezavantaje ale limbii:

1. Prezența multor caracteristici care încalcă principiile siguranței tipului duce la faptul că în programele C ++ o eroare subtilă se poate strecura cu ușurință.

2. Suport de modularitate slab. Includerea interfeței unui modul extern prin inserarea preprocesorului a unui fișier antet (#include) încetinește serios compilarea atunci când sunt incluse un număr mare de module.

3. Limbajul C++ este greu de învățat și de compilat.

4. Unele conversii de tip nu sunt intuitive. În special, operația pe numere nesemnate și semnate produce un rezultat nesemnat.

5. Unii consideră că lipsa unui sistem de colectare a gunoiului încorporat este un dezavantaj al limbajului C++. Pe de altă parte, C++ are suficiente instrumente pentru a elimina aproape utilizarea pointerilor periculoase și nu există probleme fundamentale în implementarea și utilizarea gunoiului (la nivel de biblioteci, nu de limbaj). Absența colectării de gunoi încorporate permite utilizatorului să aleagă o strategie de gestionare a resurselor.