C ++ Programming Language (4 Edition)

Original: http://www.stroustrup.com/4th.html


Addison-Wesley ISBN 978-0321563842. Mai 2013.

Comanda direct de la editor! (Există, de asemenea o versiune electronică, precum și o versiune Hardcover)

Modificat 15/6/2015


Vezi, de asemenea, C ++ 11 FAQ și C ++ Programming Language (Special Edition).

Disponibil aici:

  •     Prefață
  •     Tabelul extins Cuprins. Nu în versiune tipărită. Eu nu cred că a fost în valoare de un plus de 1000 de linii. Fiecare capitol începe cu propria cuprins.
  •     Exerciții. Nu în versiune tipărită. Nu am vrut să adăugați un alt 80 de pagini de carte și vreau să fie în măsură să adăugați și schimba exerciții-a lungul anilor. Colectarea de exerciții ar trebui să fie complet (dacă minimal) ASAP.
  •     Codul Concept. Am reușit până acum să-mi iau “ taylor facut ” și versiunea stabilă gata pentru a posta, dar a se vedea biblioteca Andrew Sutton lui de origine pe care se bazează conceptele cărții.

Dacă sunteți în căutarea pentru o introducere scurtă și mai puțin completă a C ++, ia în considerare: Bjarne Stroustrup: Un tur de C ++. Addison Wesley. ISBN 978 – 0321958310. 2013. septembrie Disponibil ca eBook și pe hârtie de la editor. Anii “ tur ” este o rapid (aproximativ 180 de pagini) privire de ansamblu tutorial a tuturor standard de C ++ la un nivel moderat ridicat pentru persoanele care cunosc deja C ++ sau programatori, cel puțin cu experiență.

Dacă sunteți în căutarea pentru o Introducere în programare pentru persoanele care nu și-a programat înainte, ia în considerare Programare – Principiile și practica folosind C ++. Care carte este, de asemenea, util pentru fi persoanele care au programat un pic și doresc să își îmbunătățească stilul și tehnica lor – sau pur și simplu de a învăța C ++ moderne. Acesta este proiectat pentru utilizarea în clasă, dar scris cu un ochi pe studiu individual.

 


Erată
Simțiți-vă liber să-mi trimiteți sugerat erata. Eu va rezolva orice greșeală care poate fi fixată în constrângerile de carte. Voi posta orice erată care cred ca s-ar putea împiedica înțelegerea (în cele din urmă, eu sunt, din păcate, mult în urma cărțile tipărite).

  •     Pentru a 3-a tipărirea

Oamenii au subliniat faptul că {} nu funcționează pentru constructii copie:

 

X x1 {2};		// construct from integer (assume suitable constructor)
X x2 {x1};		// copy construction: fails on GCC 4.8 and Clang 3.2

 

Stiu asta. Este un bug în standard. Stabilită pentru C ++ 14. Pentru moment utilizați una dintre notații tradiționale:

 

X x3(x1);		// copy construction
X x4 = x1;		// copy construction

 

Multumesc tuturor celor care-mi trimiteți probleme, corectare, și clarificări: Ron Avitzur, Matt Austern, Charles A. Barr, Paul Bennett, Thaddeus negru, Andreas Boerner, Keith Boruff, A. Bresee, Juerg Bruggermann Ian Bruntlett, Henry Buckley, Vladimir Burenkov , Peter Cordell, Walter C. Daugherity,, Francois Degros, Gabriel dos Reis, Robert Drehmel, Yaakov Eisenberg, James Feister, Ted Felix, William Fisher, Paul Floyd, Elazar Gershuni, Douglas Gilbert, Matt Ginsberg, Raffaele Grosso, Ben Hanson, M . Harbeck, Jack Harvard, Craig Henderson, Matthew Hielsberg, Derek Hofmann, Ashley Holman, Niels Holst, Zhiheng Huang, Olaf Ippisch, Dainis Jonitis, Koehne Kai, Zlatko Karaka, Tiemo Keller, Brian Kernighan, Hadeed Khalid, Michael Kilpelainen, Klaus -Werner Konrad, Vlado Koval, David Krishfield, Daniel Kruegler, Amali Praveena Soban Kumar, Mantosh Kumar, John Lakos, Wanying Luo, Chintan Maggu, Jaydeep Marathe, Bruno Marques, Brono Martinez, Randy Merkel, Martin Moene, Thiemo Nagel, Tyson Nottingham , Toshiaki Ohkuma, Peter Olsen, Aidas Oželis, Laszlo Papp, Nathan Panike, Dale Peterson Lukas, Marcelo Pinto, Timur Pocheptsov, Michael Pret, Tim Prebble, Andrea proli, Luca Risolia, Dan Rose, Ambitabha Roy, Jens Rmer Rohit Santhanam , Anubhav Saxena, Ian Scott, Richard Shepherd, Eric Sirko, Abe Skolnik, Edward M. Smith-Rowland, Marcin, Sobieszczanski, Soren Soe, Dean Stanton, Igor Stauder, Daniel Suen, Andrew Sutton, Edward M. Taffel, David A. Thomas, Felix Voigtlander, Alexey Voytenko, Johan Williamsson, Aaron Wong, Scott Wright, Guilliam Xavier, Geffrey Yerem, Muhammad Zahalqa, Alexei Zaharov.

Ne cerem scuze dacă am ratat un nume.

Unii s-ar putea găsi liniștitor că mulți (cel mai mult?) Probleme au fost reperat de mai multe persoane.


Edițiile anterioare

 


Recenzii
Nu am să fie de acord cu o revizuire sau post pe blog pentru a lista, dar ajută dacă cred că cel puțin unele părți sens.

 


Interviuri


Traduceri
Nu am nici o idee despre ceea ce rata de progres este pe traduceri:

  •     amazon. Desigur, o varietate de oameni în comentariu. Observațiile variază în nivelul lor de sofisticare, gradul de înțelegere, și nivelul de profesionalism. Pentru mai multe comentarii insightful și politicos: Multumesc! Nu este posibil ca un autor de a comenta fiecare greșeală, neînțelegere, și misreprenstation în aceste “ comentarii ” În schimb, aici sunt câteva răspunsuri la comentariile pe care am se întâmplă să nu sunt de acord cu sau găsi potențial înșelătoare.:
    •         Cartea este prea mare. Sunt de acord, dar o carte trebuie să acopere, în esență, toate C ++, iar acest lucru este faptul că carte. Dacă puteți face face cu mai puțin, vă rugăm să faceți, dar mă simt obligat să urmărească pentru completare. Această carte este aproape de a finaliza din punctul de vedere al unui programator de. Laywers Limba nevoie de standard, dar aceasta carte este un loc bun pentru a începe chiar și pentru cei. Ca standard, această carte se referă la C ++ limba și biblioteca standard ISO C ++.
    •         C ++ este un limbaj prost asa ca nu citesc această carte. C ++ nu poate fi limba dvs. favorit, dar asta nu face această carte proastă. Acesta poate fi (și în opinia mea, cel mai probabil este) o carte buna despre o limba pe care se întâmplă să displace. Eu nu cred în încercarea de a ascunde petele. Probabil că știu mai multe dintre problemele cu C ++ decat doar despre oricine, și, de asemenea, știu cum să compenseze pentru ei. Dacă sunteți un programator serios C ++, această carte conține o mare parte din interes. Dacă nu sunteți un programator C ++ și nu urmăresc să devină una, de ce comentariu pe această carte?
    •         Nu există nici o Cuprins. Da, există, ea este pe web pentru a salva câțiva copaci. În afară de faptul că, cuprins în versiunea de imprimare acoperă primul nivel de conținut și fiecare capitol începe cu un tabel capitol cuprins care acoperă nivelul următor. Eu personal prefer ca la o masă foarte mare, detaliate a conținutului.
    •         Nu există exerciții. Da, există, ele sunt pe web pentru a salva câțiva copaci.
    •         Tot ce trebuie este C (sau Python sau Java sau Haskell sau …). Poate pentru ceea ce faci acum, că este adevărat. Dacă este așa, nu citiți această carte. Cu toate acestea, se întâmplă să cred că nu poți fi un profesionist în partea tehnică a afacerii de calcul știe doar un limbaj de programare (chiar dacă această limbă este C ++). Această carte nu este o polemică, dar dacă sunteți interesat, puteți găsi discuții cu criteriile de proiectare pentru C ++, evoluția C ++, precum și domeniile de utilizare a C ++ în notele la capitolul Reader. C / C ++ compatibilitatea are propria capitol.
    •         Aceasta este doar o grămadă de citate din standardul ISO C ++. Dacă vă spun că, aveți fie citit standard, nu a citit cartea, sau nici. Standardul se concentrează pe cerințele pentru implementatori și este scrisă într-un stil extrem de specializate. Această carte se concentrează pe ceea ce facilități sunt oferite de programatori și modul în care acestea pot fi utilizate în programe. Acestea sunt radical diferite puncte de vedere, dar, evident, există o suprapunere. Chiar i-am încerca să facă această suprapunere evidentă de trimiterile la standardul. De asemenea, atunci când formularea este similară, s-ar putea să parafraza standard, dar cel puțin la fel de des standard este o declarație mai precisă a textului meu original.
    •         Aceasta nu este o carte buna pentru începători. Ai dreptate! Această carte este scrisă presupunând că cititorul este un programator. Se spune atât de proeminent și în mod explicit (de cel puțin cinci ori). Pentru incepatori, recomand Programare – Principiile și practica folosind C ++. Această carte este, de asemenea, util pentru persoanele care au programat un pic și doresc să își îmbunătățească stilul și tehnica lor – sau pur și simplu pentru a afla moderne C ++. Acesta este proiectat pentru utilizarea în clasă, dar scris cu un ochi pe studiu individual.
    •         Această carte este prost organizat. Poate, și poate că nu este doar modul în care organizează cartea dvs. anterioară a fost organizat. De exemplu,
      •             aceasta nu prezintă subiecte într-un mod strict-bottom-up (tu nu folosiți un limbaj în acest fel).
      •             Nu prezintă limba într-un faimilar-subiecte-prima de moda (subiecte sunt prezentate în cazul în care acestea aparțin în mod logic, în mod independent de an de introducere în C ++).
      •             Nu prezintă subiecte într-o-mai simplu de înțeles-pumn de moda. Se presupune unele maturitate a cititorului.
      •             Acesta nu este un tutorial pur. Dacă asta e ceea ce ai nevoie, începe cu programarea – Principiile și practica folosind C ++.
      •             Acesta nu este un manual pur. Desigur, dar este puțin probabil să învețe cele mai importante tehnici de programmming la doar un manual chiar un programator bun. Dacă doriți cu adevărat “ doar un manual ” încercați ISO C ++ Standard – puțini oameni vor găsi că edificatoare ca o introducere la C ++ sau ca o introducere la C ++ 11.
      •             Nu este lipsit de opinie. Ea reflectă în mod explicit punctul meu de vedere a modului C ++ pot fi folosite, de asemenea.

        Citeste Prefața înainte proteste. Cartea este în față despre ceea ce este și ceea ce nu este. Poate că nu este pur și simplu cartea pe care il cautati.

    •         E plin de bug-uri, este o carte groasă, densă cu informații, abordând subiecte netriviale. Deci, există bug-uri. Puțini afectează înțelegerea, și ei vor fi toate fixe și cele cred că s-ar putea împiedica înțelegerea va fi documentată. Dacă nu puteți accepta orice bug-uri, stick la cărți subțiri evitarea subiecte avansate, și nu împingeți barca pentru a demonstra stiluri de programare noi profitând de C ++ 11 caracteristici. Există două forme de “ bug-uri ”:
      •             Erori reale, cum ar fi lipsa de virgulă după o expresie pentru a face într-o declarație sau un identificator scris gresit. Acestea, mă simt rău și repara ASAP.
      •             “ Erori ” cauzează mesaje de eroare compilator, din cauza bug-uri de compilare sau (mai frecvent), deoarece compilatorul nu este încă C ++ 11 complient. Acestea sunt inevitabile din cauza politicii mele de a folosi C ++ 11 așa cum a fost menit să fie folosit, mai degrabă decât conservator folosind doar caracteristici acceptate pe scară largă. Un exemplu este utilizarea mea aproape universal de {} -lists pentru inițializare. Astfel de “ bug-uri ” este prețul pe care îl plătiți pentru o carte care vizează viitorul, mai degrabă decât în ​​trecut. Nu am nici planuri de a modifica cartea pentru a sprijini compilatoare de pre-standard. Presupunând că sunteți un programator profesionist, știți deja cum să se adapteze codul pentru a realiza acest lucru. Un motiv adăugat pentru utilizarea “ caracteristici avansate ” este de a pune o pressue usoara pe implementatori (și mai ales pe managerii lor).
    •         Suportul este prost! Ai cumpărat un 1300+ pagină (480K + cuvânt) carte pentru $ 40 sau $ 60, nu un serviciu de abonament. Cât de mult sprijin vă așteptați? Sunt o persoană care face cel mai bine nivelul meu pentru a actualiza informațiile referitoare la cărțile mele în timpul meu liber abundent. Puteți plăti cu ușurință de trei ori mai mult pentru o treime din informatiile gasite in TC ++ PL4. Dacă ați ales să plătească că, poate veți avea o plângere de a face la organizarea pe care le vândut serviciul.
    •         Nu-mi place de hârtie, tipul de fata, sau cu caracter obligatoriu, astfel încât aceasta este o carte proastă. Nu, dacă ai dreptate, este mult mai probabil să fie o carte bună într-o formă nu vă place. Nu este posibil de a multumi pe toata lumea cu un format unic (hârtie sau electronic). Ceva mai solid ar adăuga la greutate și preț, iar unele nu ar dori asta, asa ca tradeoffs deveni necesară. Cu toate acestea, cred că Softcover este una destul de placuta, oferite la un preț extrem de scăzut pentru dimensiunea sa, calitatea de caracter obligatoriu, cantitatea de informații, și calitatea conținutului. În plus, Addison-Wesley este ascultare:
    •         Gramatica este greșit! Uneori, ai dreptate despre asta. Engleză nu este limba mea maternă. Cu toate acestea, nu este nimeni universal standard convenit de gramatică engleză. Am urmat sfatul meu (vorbitori nativi de limba engleză) editior copie și corector, care (în măsura în care pot spune) urmărește Chicago Manual of Style. Acest lucru nu poate fi stilul tau preferat (în cazuri, nu este favoritul meu, fie), dar oferă un grad ridicat de coerență.

    Comentarii constructive și rapoartele de erori sunt întotdeauna binevenite.

Comments are closed.