Limbajul de programare Bjarne Stroustrup p. Aveți nevoie de manageri de pachete buni și de sisteme de construcție

După cum sa promis în prima ediție a cărții, cererile utilizatorilor au determinat dezvoltarea C++. Acesta a fost ghidat de experiența unei game largi de utilizatori care lucrează în zone diferite programare. În cei șase ani care ne despart de prima ediție a descrierii C++, numărul utilizatorilor a crescut de sute de ori. De-a lungul anilor, s-au învățat multe lecții, au fost propuse și confirmate prin practică diverse tehnici de programare. Unele dintre ele vor fi discutate mai jos.

Extensiile de limbaj realizate de-a lungul acestor șase ani au vizat în primul rând creșterea expresivității C++ ca limbaj de abstractizare a datelor și programare orientată pe obiecte în general și ca mijloc pentru crearea de biblioteci de înaltă calitate cu tipuri de date personalizate în

în special. Bibliotecă Calitate superioară Considerăm o bibliotecă care permite utilizatorului să definească concepte folosind clase care combină comoditatea, eficiența și fiabilitatea. Robustitatea înseamnă că o clasă oferă o interfață protejată de tip între utilizatorii bibliotecii și dezvoltatorii acesteia. Eficiența înseamnă că folosirea claselor nu implică suprasarcini mari de memorie sau timp în comparație cu programele manuale C.

Această carte este o descriere completă a limbajului C++. Capitolele 1 până la 10 sunt o introducere manuală a limbii. Capitolele 11 până la 13 discută probleme de proiectare și dezvoltare software. Cartea se termină ghid de referințăîn limbajul C++. Desigur, toate extensiile limbajului și modalitățile de utilizare a acestora care au apărut de la publicarea primei ediții fac parte din prezentare. Acestea includ reguli rafinate pentru rezoluția supraîncărcării numelor, gestionarea memoriei și controlul accesului, legare sigură de tip, funcții membre statice și persistente, clase abstracte, moștenire multiplă, șabloane de tip și gestionarea excepțiilor.

C++ este un limbaj de programare scop general. Zona sa naturală de aplicare este programarea sistemului, înțeles în în sens larg acest cuvânt. În plus, C++ a fost utilizat cu succes în multe domenii de aplicație care depășesc cu mult acest domeniu. Implementările C++ sunt acum disponibile pe toate mașinile, de la cele mai umile microcalculatoare până la cele mai mari supercomputere și pentru aproape toată lumea sisteme de operare. Prin urmare, cartea oferă doar o descriere a limbajului în sine, fără a explica caracteristicile unor implementări specifice, medii de programare sau biblioteci.

Cititorul va găsi în carte multe exemple cu clase care, în ciuda utilităţii lor neîndoielnice, pot fi considerate jucărie. Acest stil de prezentare vă permite să evidențiați mai bine conceptele principale și tehnicile utile, în timp ce în programele reale, complete, acestea ar fi ascunse de o mulțime de detalii. Pentru majoritatea claselor propuse aici, cum ar fi liste aferente, matrice, șiruri de caractere, matrice, clase de grafică, tablouri asociative etc., - versiunile sunt oferite „cu o garanție de 100%” de fiabilitate și corectitudine, obținute pe baza unor clase dintr-o mare varietate de programe comerciale și necomerciale. Multe dintre clasele și bibliotecile „industriale” au apărut ca descendenți direcți sau indirecti ai claselor de jucării date aici ca exemple.

În această ediție a cărții, comparativ cu prima, se acordă mai multă atenție sarcinii de învățare. În același timp, nivelul de prezentare în in aceeasi masura ia in calcul programatorii cu experienta, fara a le strica in niciun fel cunostintele si profesionalismul. Discutarea problemelor de proiectare este însoțită de o prezentare mai largă a materialului, care depășește descrierile structurilor limbajului și modalităților de utilizare a acestora. Această ediție oferă mai multe detalii tehnice și o rigoare sporită. Acest lucru se aplică în special manualului de referință, care încorporează mulți ani de experiență în acest domeniu. Ideea a fost să creez o carte cu suficientă nivel inalt prezentare care ar servi programatorilor mai mult decât o carte de citit. Deci, iată o carte care descrie limbajul C++, principiile sale de bază și metodele de programare. Sperăm să vă aducă bucurie.

Conferința CppCon 2017 este în prezent în desfășurare, iar videoclipurile de acolo au început deja să apară pe canalul lor de YouTube. Și m-am gândit, de ce să nu încerc să iau notițe din prelegerile interesante. Desigur, nu prea sunt sigur cât o să mă țină, depinde cât de mult vă place.


Acesta este primul videoclip introductiv. Nu este chiar atât de interesant pentru mine, dar nici nu puteam rata, este Stroustrup. În continuare, textul în numele lui. Titlurile sunt preluate din diapozitive.



Disclaimer: tot textul ulterioar este o repovestire destul de scurtă, care este rezultatul muncii percepției mele, iar ceea ce am considerat „apă” și am ignorat ar putea fi important pentru tine. Uneori discursul era așa: „(gândul important 1)(minutul de apă)(gândul important 2).” Aceste două gânduri s-au scurs lin unul în celălalt și am primit sărituri destul de ascuțite. Am netezit-o acolo unde a fost posibil, dar mi s-a părut nepotrivit să pieptănez complet textul; ar dura mult timp.

Introducere

Când mi s-a cerut să vorbesc la deschiderea conferinței, m-am întrebat despre ce aș putea vorbi despre care este important pentru tine și despre care nu ai auzit de un milion de ori. Și am decis să vorbesc despre învățarea limbajului C++.

Cu toții suntem profesori și cu toții studenți

Să ne întrebăm pe cine predăm, ce, de ce și cum. Trebuie să facem asta mai bine. Nu critic pe nimeni în special, dar simt că trebuie să o facem mai bine. Nu toți suntem profesori, dar, cu toate acestea, cazurile apar în mod constant atunci când suntem angajați în predare. De exemplu, le spunem colegilor despre cele mai recente funcții sau le dăm sfaturi. Comunicăm pe StackOverflow, Reddit, blog etc. Dar trebuie să dai sfat bun. Un sfat care duce lumea înainte.


Un lucru care mă deranjează cu adevărat este că oamenii au adesea idei foarte ciudate despre ce este C++. Voi reveni la această problemă puțin mai târziu.


Când predai, gândește-te la ceea ce vrei să obții. Și începe de acolo. Nu începe de la „ceea ce am făcut deja” și „cu ce este mai ușor de început”, iar dacă ești profesor, atunci de la „ce este mai ușor de verificat”.

Instruire de programare

Nu este nevoie să vă concentrați pe caracteristicile lingvistice. De exemplu, ați văzut exemple care explică problema turnării unui scurt cu semn într-un int nesemnat [ vorbește despre predarea limbajului în general, nu despre specificul C++]. Acest lucru nu este interesant și poate fi văzut în depanator sau citit în manual. Învățați în așa fel încât să nu apară o astfel de problemă.


Nu încerca să înveți totul, nu vei putea. Alegeți cu atenție subsetul de limbi.


Una dintre problemele comune în învățarea C++ este că limbajul se învață singur, separat de biblioteci. Vector la pagina 697, sortați după 100 de pagini. Asta ne învață că stl este o porcărie plictisitoare, complicată. Și, în același timp: propriul tău tabel Linked List sau Hash este cool, mai cool decât stl.

Nu fi prea inteligent


Oamenii care doresc și cer „cele mai recente” adesea nu cunosc elementele de bază. Examinați elementele de bază.


Nu te complica. Nu te grăbi în cele mai complexe și mai sofisticate. Nu utilizați cel mai avansat algoritm pe care îl puteți găsi. nu as alege sortare cu bule, dar nici nu ar alege „full algoritm general pentru orice.” Oferiți cel mai simplu exemplu care ilustrează o tehnică sau o caracteristică.


Se concentreze pe cazuri generale. Fii rațional. Nu le spuneți elevilor: „Fă doar asta, este lucrul corect, construiește caracterul. Și poți obține un A dacă răspunzi astfel.” Este necesar să explicăm de ce este necesar să respectați regulile, să le oferim elevilor idealuri, idei, tehnici bune.


Desigur, când predai, este foarte tentant să stai în fața colegilor, a unui grup de oameni și a arăta cu toată înfățișarea: „Uite, asta lucru complicat, pe care nu l-ai inteles. Înseamnă că sunt inteligent.” Aceasta nu este o învățare foarte bună.

Instruire de programare

Dacă studiezi doar limba în sine, atunci odată ce intri în realitate, te poți „îneca”.
Utilizați instrumente diferite. Nu doar un compilator și un tutorial, ci și IDE-uri, depanatoare, sisteme de control al versiunilor, profileri, testări unitare, analizoare statice, compilatoare online. Instrumentele trebuie să fie moderne (uneori primesc întrebări despre Turbo C++ 4.0:()


Trebuie să studiezi principiile și să le practici. Utilizați grafică, rețele, internet, Raspberry Pi, robotică etc. Acest lucru este evident pentru dvs., dar nu este evident pentru universități. Nu spune că este ușor și rapid. Și amintiți-vă că nimeni nu poate face totul.

Limbajul este mai mult decât o simplă sintaxă

Cât de des predăm? Explicarea limbajului plus puțin bibliotecă standard. Fara nicio grafica interfața cu utilizatorul, web, E-mail, baze de date... Și mulți studenți cred că C++ este un limbaj plictisitor, inutil. Dar acest lucru nu este adevărat, deoarece lucruri precum browserele, DBMS, CAD și altele sunt scrise în C++. Înainte de a începe prelegerea, dedicați 5 minute aplicației practice.

Trebuie să facem mai bine

Pentru noi, cei din comunitatea C++, este foarte important să începem ușor, să îl putem folosi „chiar acum”.

Cum sunt împărțiți utilizatorii din diferite industrii în grupuri? Să dăm un exemplu cu o fotografie. Rezultatul depinde de echipament și de utilizator. Personal, sunt nou în fotografie. Majoritatea caracteristicilor unei camere profesionale mi-ar fi inutile. Cântărește mult și este scump. Există multe accesorii pentru ea în care te poți îneca. Dar cu ajutorul lui poți face superbe fotografii, dacă petreci mult timp învățând. De asemenea, există mulți oameni care nu pot folosi diverse caracteristici și biblioteci ale limbii.

Piața de masă

Pe de altă parte, avem dispozitive care pot fi folosite imediat. Acest dispozitiv este ieftin, simplu și „drăguț”. Iertarea greșelilor, nu necesită mult efort pentru a stăpâni. Este un „lucru în sine”. Există puține, dacă există, extensii sau completări. Nu există piese interschimbabile.


Într-o zi, în timp ce predam, am avut nevoie de studenții mei să aibă instalată o bibliotecă GUI. S-a dovedit că instalarea aceleiași biblioteci pe Mac-uri pentru studenți, Linux și Windows este foarte dureroasă.

O limbă are nevoie de un „sistem”

Fiecare producător de camere oferă un „sistem” care sugerează că puteți să vă actualizați treptat echipamentul și să vă mutați Nivelul următor pe măsură ce înveți.


Nu este necesar pentru un începător aparat de fotografiat profesional cu toate clopotele si fluierele. În acest caz, va avea dificultăți și rezultatul va fi probabil mai rău decât dacă ar fi folosit o cutie de săpun. Prin urmare, nicio soluție nu va fi potrivită pentru toată lumea.

Care ar trebui să fie distribuțiile principale?

Limba trebuie prezentată în trei distribuții. Pentru incepatori, amatori si profesionisti.

Modulele vă vor ajuta

import bundle.entry_level; //Pentru începători import bundle.enthusiast_level; //Pentru import avansat bundle.professional_level; //Pentru profesioniști

Extensii (care nu sunt incluse în bază):


import grafica.2d; import grafica.3d; import professional.graphics.3d; import physlib.linear_algebra; import boost.XML; import 3rd_party.image_filtering;

Aveți nevoie de manageri de pachete buni și de sisteme de construcție

Cum poate un elev să instaleze o bibliotecă în a doua săptămână după începerea școlii? GUIși lucrul cu baze de date? Diferite biblioteci și sisteme sunt construite diferit. Este posibil ca diferitele biblioteci să nu fie bine compatibile. O duzină de manageri de pachete incompatibili nu sunt o soluție. Trebuie să fie simplu de implementat sarcini simple


> descărcați gui_xyz > instalați gui_xyz

Sau într-un mod echivalent, de exemplu în IDE:


import gui_xyz; //în cod

C++ modern

Viziunea mea despre C++ modern (ca de obicei):

  • Siguranță de tip static, interfețe bine definite.
  • Securitatea resurselor (constructori/destructori, RAII).
  • Abstracții fără overhead.
  • Încapsulare, invarianți.
  • Programare generalizată, șabloane.
  • Simplitate pentru majoritatea dezvoltatorilor, complexitate ascunsă în biblioteci.

Schimbarea este grea

C++ modern nu este C, Java, C++98 sau limbajul în care ai programat acum 10 ani. Inerția este inamicul cod bun. Profesorii care justifică neutilizarea standarde moderne, ei spun că „noi nu facem asta”, „acest lucru nu poate fi introdus în mine curriculum„, „poate peste 5 ani.” Studenții au mai multă încredere în internet decât în ​​profesori. Unii cred că sunt mai inteligenți decât profesorii și, uneori, au dreptate. În fiecare an am avut constant studenți la cursul meu care sunt absolut convinși că ei mai deștepți decât mine la programare. În aceste cazuri particulare, sunt rezonabil sigur că greșesc [ râsete în sală].

Ce este C++ modern?

  • Cele mai bune practici folosind standardul ISO C++ actual
  • Căutarea codului sigur pentru tip și resurse

Pentru a implementa acest lucru, proiectul C++ Core Guidelines a fost deschis acum 2 ani. El dă răspunsuri specifice la întrebări. Are mulți participanți, inclusiv Microsoft și Red Hat.

Exemple de coduri

Nu separa exemplele de explicație. 5 pagini de teorie goală este o risipă. Dați exemple și explicații pentru ele. Oamenii nu generalizează fără explicații. Ei pur și simplu copy-paste și inventează ei înșiși o interpretare, uneori una foarte ciudată.

Îmbunătățirea codului

Explicați-vă întotdeauna motivele. De exemplu:


//1 int max = v.size(); for(int i = 0; i< max; ++i) //2 for (auto x: v)

De ce 2 este mai bun decât 1? Exemplul 2 arată clar intenția că v poate fi schimbat fără a rescrie bucla și este mai puțin predispus la erori. Trebuie remarcat faptul că 1 oferă opțiuni mai flexibile. Dar goto este și mai versatil și de aceea îl evităm.

  • I.4: Faceți interfețele precise și puternic tastate

[I.4 înseamnă element din liniile directoare de bază]


void blink_led1(int time_to_blink) //Bad - tip neclar void blink_led2(milisecunde time_to_blink) //Bun void use() ( blink_led2(1500); //Eroare: ce unitate de măsură? blink_led2(1500ms); blink_led2(15000ms); //Eroare: unitate de măsură incorectă)

[Aici milisecunde este un tip simplu care nu este din biblioteca Chrono, astfel încât ultima linie are ca rezultat o eroare. Textul de mai jos descrie o generalizare a tipului pentru unitatea de măsură luată din Chrono. Dacă sunteți interesat, puteți citi lucrările mele în această bibliotecă]


șablon void blink_led(durata time_to_blink) ( auto ms_to_blink = duration_cast (timp_pentru_clipi); ) void use() ( blink_led(2s); blink_led(1500ms); )
  • ES.20: Inițializați întotdeauna obiectul
  • F.21: Pentru a returna mai multe valori din funcții, preferați să utilizați tuplu, structură (sau legare structurată).
Error_code err; //neinițializat: problemă potențială //... Channel ch = Channel::open(s, &err); //out-parameter: problemă potențială if(err) ( ... ) Better: auto = Channel::open(s) //legare structurată if(err) ...

Acest cod ar trebui să folosească returnarea a doi parametri?

  • E.1: Aveți o strategie de prindere a erorilor la începutul dezvoltării
  • E.2: Aruncă o excepție pentru a notifica că o funcție nu poate îndeplini o sarcină
  • E.3: Folosiți excepții numai pentru a raporta erori
auto ch = Channel::open(s);

Mai bine? Da, dacă deschiderea nereușită a fost prevăzută în program.

Îmbunătățirea codului: nu fi prea inteligent

Cuvântul „inteligent” în contextul utilizării C++ este un cuvânt murdar. Găsiți o eroare:


istream& init_io() (if(argc > 1) return *new istream (argv, "r"); altfel returnează cin;)
  • P.8: Evitați scurgerea
  • R.11: Evitați să apelați noi și ștergeți direct
  • R.4: Referința brută (T&) trebuie să nu fie deținută

Nume: limbaj de programare C++.

În această ediție, Bjarne Stroustrup prezintă C++ într-o formă și mai accesibilă pentru începători. În același timp, include informații și tehnici care pot fi utile chiar și experților în C++.


Iată o ediție specială a celei mai citite cărți despre C++, care conține cele mai fiabile informații. Cartea contine Descriere completa limbajul C++, biblioteca sa standard (STL) și tehnicile cheie de dezvoltare a programelor. Bazată pe standardul ANSI/ISO, cartea este sursa celei mai actualizate și complete descrieri a tuturor caracteristicilor limbajului C++, inclusiv componentele bibliotecii standard, inclusiv:

  • clase abstracte ca interfețe;
  • ierarhia claselor în programarea orientată pe obiecte;
  • șabloane ca bază pentru programarea generică de tip sigur;
  • gestionarea excepțiilor rezultate din erori comune;
  • utilizarea spațiilor de nume pentru a obține modularitatea în proiecte mari
  • Inferență de tip run-time (RTTI) pentru sisteme cuplate liber;
  • un subset al limbajului C++ pentru compatibilitate cu C și lucru la nivel de sistem;
  • containere standard și algoritmi;
  • șiruri standard, fluxuri I/O și date numerice;
  • compatibilitate cu C, localizare (internaționalizare) și securitate în tratarea excepțiilor.
Conținut pe scurt
Prefața autorului la cea de-a treia ediție rusă.25
De la redactorii ediţiei ruse.27
Prefaţă.29
Prefaţă la cea de-a doua ediţie.31
Prefaţă la prima ediţie.33
INTRODUCERE.35
1. Adresă către cititor.37
2. Prezentare generală a C++.57
3. Privire de ansamblu asupra bibliotecii standard.81
Partea I Mijloace fixe. 105
4. Tipuri și declarații. 107
5. Pointeri, matrice și structuri.127
6. Expresii şi instrucţiuni.147
7. Funcţii.185
8. Spații de nume și excepții.209
9. Fișiere sursăşi programe.241
Partea a II-a. Mecanisme de abstractizare. 267
10. Clasele.269
11. Supraîncărcarea operatorului.309
12. Clase derivate.349
13. Sabloane.377
14. Tratarea excepţiilor.407
15. Ierarhii de clasă.443
Partea a III-a. Biblioteca standard. 483
16. Organizarea bibliotecii si containere.485
17. Recipiente standard.519
18. Algoritmi si obiecte functie.569
19. Iteratoare şi alocători de memorie.613
20. Liniile.645
21. Pâraie.671
22. Metode numerice.725
Partea a IV-a. Proiectare folosind C++. 757
23. Dezvoltare şi proiectare.759
24. Proiectare si programare.797
25. Roluri de clasă.841
Aplicatii si index de subiecte.869
Anexa A. Gramatica.871
Anexa B. Compatibilitate.891
Anexa B. Detalii tehnice.903
Anexa D. Localizare.947
Anexa E: Siguranța excepțiilor
şi bibliotecă standard.1017
Index de subiect.1055

Descărcare gratuită e-carte V format convenabil, urmăriți și citiți:
Descărcați cartea Limbajul de programare C++ - Bjarne Stroustrup. - fileskachat.com, descărcare rapidă și gratuită.

Descărcați djvu
Puteți cumpăra această carte mai jos cel mai bun preț la reducere cu livrare în toată Rusia.



Cartea a fost scrisă de Bjarne Stroustrup, autorul limbajului de programare C++ și este o prezentare canonică a capacităților acestui limbaj. in afara de asta descriere detaliata limba în sine, pe paginile cărții veți găsi abordări dovedite pentru rezolvarea unei varietăți de probleme de proiectare și programare. Numeroase exemple demonstrează cum stil bun programare pe un nucleu C++ compatibil C și o abordare modernă orientată pe obiecte pentru crearea de produse software.
Cartea se adresează programatorilor care folosesc C++ în munca lor de zi cu zi. De asemenea, va fi util pentru profesori, studenți și oricine dorește să obțină o relatare directă a limbii.

Folosirea limbajului C++ îmi face din ce în ce mai multă plăcere. De-a lungul anilor, instrumentele de asistență pentru proiectare și programare C++ s-au îmbunătățit dramatic și au fost propuse multe tehnici utile și convenabile pentru utilizarea lor. Dar despre care vorbim nu doar despre plăcere. Programatorii practicanți au obținut îmbunătățiri semnificative în productivitate, suport, flexibilitate și calitate în proiecte de orice nivel de complexitate și scară. Până acum, C++ a fost la înălțimea celor mai multe dintre speranțele mele pentru el și a reușit, de asemenea, să rezolve probleme pe care nu mi le-am imaginat niciodată posibile.

Doar o treime din informațiile din prima ediție au migrat la a doua ediție a acestei cărți. A treia ediție a fost revizuită și mai intens. Are ceva care va fi util celor mai experimentați programatori C++. În același timp, este mai accesibil pentru începători decât edițiile anterioare ale acestei cărți. Acest lucru a fost posibil datorită creșterii explozive uz practic C++ și experiența rezultată din această practică.

Biblioteca standard vă permite să reimaginați conceptele de bază ale limbajului C++. Ca și edițiile anterioare, această carte descrie limbajul C++ independent de implementările specifice. Ca și în edițiile anterioare, toate modelele și conceptele sunt prezentate de jos în sus, astfel încât, în momentul în care sunt utilizate, acestea sunt deja prezentate și descrise în detaliu. Rețineți că o bibliotecă bine concepută poate fi folosită înainte ca cititorii să o poată învăța. organizare internă. În plus, biblioteca standard în sine este o sursă valoroasă de exemple.
metode de programare și proiectare.

Doar o înțelegere perfectă a ideilor din spatele mijloacelor limbajului duce la o adevărată stăpânire. Suplimentate cu detalii de implementare, informațiile din această carte sunt suficiente pentru realizarea unor proiecte reale de amploare semnificativă.

Prezentare generală a limbajului C++

Ce este C++? - paradigme de programare - programare procedurală- modularitate - compilare separată - gestionarea excepțiilor -
abstractizarea datelor - tipuri definite de utilizator - tipuri specifice- tipuri abstracte - funcții virtuale- orientate pe obiecte
programare - programare generalizata - containere - algoritmi - limbaj si programare - sfaturi.
Acest capitol explică ce înseamnă toate acestea, dar fără a introduce cele mai mici detalii definiții ale limbajului. Dat revizuire generală limbajul C++ și idei cheie utilizarea sa, nu împovărat informatii detaliate, necesar pentru a începe real programare practicăîn C++.

Dacă percepția anumitor părți ale acestui capitol ți se pare dificilă, nu fii atent și mergi mai departe. Următoarele capitole explică totul în detaliu. Nu este o idee rea, totuși, să revii la ceea ce ai ratat mai târziu. Cunoașterea detaliată a tuturor proprietăților și construcțiilor lingvistice, chiar și cunoașterea lor exhaustivă, nu înlocuiește sau anulează necesitatea înțelegere comună rolul și locul acestui limbaj de programare, precum și familiaritatea cu ideile și tehnicile fundamentale ale utilizării acestuia.

Paradigme de programare

Programarea orientată pe obiecte este o tehnică de programare, s-ar putea spune, o paradigmă, pentru a scrie programe „bune” pentru o anumită clasă de probleme. Termenul „limbaj de programare orientat pe obiecte” ar trebui să însemne în primul rând un limbaj care suportă bine stilul de programare orientat pe obiecte.

Aici trebuie să se distingă clar două situații. Spunem că un limbaj suportă un stil de programare dacă oferă special
înseamnă care permite acestui stil să fie ușor (convenient, fiabil, eficient) implementat în practică. Dacă un limbaj necesită un efort excepțional și o experiență enormă pentru a implementa o tehnică de programare, atunci spunem că permite doar posibilitatea aplicării sale. De exemplu, pe Limba Fortran 77 puteți scrie programe structurate, iar în C puteți scrie programe într-un stil orientat pe obiecte, dar toate acestea necesită eforturi nepotrivit de mari, deoarece aceste limbaje nu suportă direct aceste stiluri de programare.

Programare orientată pe obiecte

Abstracția datelor este extrem de importantă pentru un design bun și va fi un accent major pe parcursul acestei cărți.
Cu toate acestea, tipurile definite de utilizator nu sunt suficient de flexibile pentru a satisface toate nevoile noastre. În această secțiune, mai întâi
demonstrează problema asociată cu simplu tip personalizat, și apoi arată cum să o depășiți folosind ierarhiile de clasă.

Prezentare generală a bibliotecii standard

Niciun program semnificativ nu este scris doar în constructe simple de limbaj de programare. În primul rând, sunt dezvoltate biblioteci de suport. Ele devin apoi baza pentru lucrări ulterioare.

Ca o continuare a capitolului 2, este dat aici scurtă recenzie instrumente de bază ale bibliotecii, oferind o idee despre ceea ce poate fi creat în cele din urmă folosind
Limbajul C++ și biblioteca sa standard. Sunt luate în considerare următoarele tipuri utile biblioteci standard precum șir, vector, list și tar, precum și cele mai multe
opțiuni comune pentru utilizarea lor. Acest lucru îmi permite să dau exemple mai semnificative și exerciții mai interesante în capitolele ulterioare ale cărții. Ca și în Capitolul 2, se recomandă insistent să nu fii distras sau descurajat dacă nu înțelegeți pe deplin detaliile materialului prezentat. Scopul acestui capitol este să vă ofere o idee despre ceea ce veți întâlni pe măsură ce continuați să învățați și să vă ajute să învățați cele mai simple moduri de a utiliza cele mai utile instrumente ale bibliotecii. O introducere detaliată a bibliotecii standard este dată în...

Comutare meniu

Bjarne Stroustrup „Limbajul de programare C++”

Acum să ne uităm la carte limbajul de programare C++, care chiar merită cea mai mare atenție și respect. Și există motive pentru aceasta, pe care le vom lua în considerare în continuare.

Această carte " „, interpretată de legendarul autor B. Stroustrup, oferă o descriere completă a limbajului, conceptele sale cheie și tehnicile de programare de bază, ceea ce este foarte important, în primul rând, desigur, pentru un începător. Acesta este un manual complet scris de creatorul limbajului (o scurtă introducere a autorului de mai jos) care acoperă toate caracteristicile limbajului de programare C++, inclusiv gestionarea excepțiilor, șabloanele de tip (tipuri de date parametrizate) și moștenirea multiplă. Cartea este împărțită în trei părți: primele zece capitole sunt un manual, servind ca o introducere în limbaj, incluzând un subset de C în sine, iar următoarele trei capitole discută despre proiectarea și crearea de software folosind C++. Cartea se încheie cu un ghid complet de referință pentru limbajul C++. Principalele avantaje ale acestei cărți:

  • un manual complet și ghid de limbă.
  • acoperire completă a caracteristicilor limbajului care vizează tipuri de date abstracte și orientat pe obiecte programare.
  • discuție despre programare și probleme tehnice, apărute în procesul de proiectare și creare a sistemelor software mari.
  • descrierea modalităților de a construi biblioteci de înaltă clasă.
  • exemple de implementare tipuri de chei date definite de utilizator, cum ar fi obiecte grafice, matrice asociative și fluxuri de intrare/ieșire.

Această carte, desigur, va fi un bun ajutor nu numai pentru un începător, ci și pentru un programator experimentat care decide să folosească C++ pentru sarcini non-triviale. Această carte poate fi considerată cheie în orice colecție de cărți despre C++. Recomand cu căldură să începeți să învățați programarea cu această carte, deoarece... Odată am început eu însumi. Și acum puțin despre autorul cărții.

Bjarne Stroustrup este dezvoltatorul limbajului C++ și creatorul primului traducător. Cred că de acum încolo mulți dintre voi ați înțeles deja de ce exact această carte merită cea mai mare atenție. Bjarne Stroustrup este angajat al AT&T Bell Laboratories Research Computing Center din Murray Hill (New Jersey, SUA). A obținut un master în matematică și inginerie informatică de la Universitatea din Aarus (Danemarca) și un doctorat în tehnologia calculatoarelor la Universitatea Cambridge (Anglia). El este specializat în domeniu sisteme distribuite, sisteme de operare, modelare și programare. Împreună cu M. A. Ellis, Bjarne Stroustrup este autor ghid complet pentru limbajul C++ - „C++ Guide with Notes”.

De asemenea foarte punct important este că la sfârșitul fiecărui capitol există exerciții de implementare independentă. Desigur, nu ar trebui să le ignori niciodată, pentru că... teoria, consolidată de practică, este lâna ta de aur. Nu degeaba s-a spus că „ Cel mai bun mod a invata sa programezi este programare!"