Konačni vodič i popis knjiga u C ++

Ovo pitanje pokušava prikupiti nekoliko bisera među desetinama loših knjiga u C ++, koje se objavljuju svake godine.

Za razliku od mnogih drugih programskih jezika, koji se često biraju iz udžbenika koji se nalaze na Internetu, malo njih može brzo pokupiti C + + bez učenja dobro napisane C ++ knjige. Da biste to učinili, to je previše teško i teško. Zapravo, on je toliko velik i složen da postoji mnogo loših C ++ knjiga . Ne govorimo o lošem stilu, nego o očitim očitim pogreškama i promicanju strašno loših stilova programiranja.

Molimo vas da uredite prihvaćeni odgovor kako biste osigurali kvalitetne knjige i približnu razinu vještina - po mogućnosti nakon rasprave o dodatku za C ++ chat . (Obični ljudi mogu nemilosrdno otkazati vaš rad ako se ne slažu s preporukom.) Dodajte kratki oglas / opis svake knjige koju osobno čitate / primate. Slobodno razgovarajte o kvaliteti, naslovima i sl. Knjige koje odgovaraju kriterijima bit će dodane na popis. Knjige koje imaju recenzije C i C ++ Association (ACCU) imaju veze na pregled.

* Napomena. Često postavljana pitanja i drugi resursi mogu se naći u C ++ tagu iu

4250
23 дек. postavila grepsedawk 23 prosinca 2008-12-23 08:23 '08 u 8:23 AM 2008-12-23 08:23
ответ 1 odgovor

početnik

Uvodno, bez iskustva programiranja

  • C ++ Primer * (Stanley Lippmann, José Lajay i Barbara E. Mu) ( ažurirano za C ++ 11 ) Ovo je uvod od 1 stranice, koji je vrlo detaljan uvod u C ++, koji pokriva gotovo sve na vrlo pristupačnom jeziku i vrlo je detaljan. Peto izdanje (objavljeno 16. kolovoza 2012.) pokriva C ++ 11. [Pregled]

  • Programiranje: načela i praksa pomoću C ++-a ( Bjarn Straustrup, 2. izdanje - 25. svibnja 2014.) ( ažurirano za C ++ 11 / C ++ 14 ) Uvod u programiranje pomoću kreatora jezika C ++. Dobro čitanje, koje ne podrazumijeva prethodno iskustvo u programiranju, ali ne samo za početnike.

* Ne smije se pomiješati s C ++ Primer Plus (Stephen Prath) s znatno manje povoljnim pregledom .

Uvodni, s prethodnim programskim iskustvom

  • C ++ Tour (Bjarne Straustrup) ( 2. izdanje za C ++ 17 ) Tour je kratak (oko 180 stranica i 14 poglavlja) pregled udžbenika na svim standardnim C ++ (jezična i standardna knjižnica, a koristeći C ++ 11 ) u umjereno visokom razini za ljude koji već poznaju C ++ ili su barem iskusni programeri. Ova knjiga je proširena verzija materijala u poglavljima 2–5 programskog jezika C ++, 4. izdanje.

  • Ubrzani C ++ (Andrew Koenig i Barbara Mu, 1. izdanje - 24. kolovoza 2000.) Ovo u osnovi pokriva isti temelj kao i C ++ Primer, ali to čini u četvrtom dijelu svog prostora. To je uglavnom zbog činjenice da to nije pokušaj da se uvodi u programiranje, već uvod u C ++ za ljude koji su prethodno programirali na nekom drugom jeziku. Ima strmiju krivulju učenja, ali za one koji to mogu riješiti, ovo je vrlo kompaktan uvod u jezik. (Povijesno gledano, on je bio prvi koji je otvorio knjigu koja je koristila suvremeni pristup učenju jezika.) Unatoč tome, C ++ koji on podučava je čisto C ++ 98. [Pregled]

Najbolje prakse

  • Efektivna C ++ (Scott Meyers, 3. izdanje - 22. svibnja 2005.) Ovo je napisano s ciljem da postane najbolja druga C ++ knjiga koju programeri trebaju pročitati i uspjela je. Prethodna izdanja bila su namijenjena programerima koji su došli iz C, treće izdanje to mijenja i namijenjeno je programerima iz jezika kao što je Java. On predstavlja ~ 50 lako zapamćenih pravila palca, zajedno sa svojim razlozima u vrlo pristupačnom (i ugodnom) stilu. Za C ++ 11 i C ++ 14 primjeri i neki problemi su zastarjeli, a prednost treba dati Effective Modern C ++. [Pregled]

  • Efektivni moderni C ++ (Scott Meyers) Ovo je u osnovi nova verzija Effective C ++, namijenjena C ++ programerima, krećući se od C ++ 03 do C ++ 11 i C ++ 14.

  • Učinkovita STL (Scott Meyers) Ovo je učinjeno kako bi isti dio standardne knjižnice proizašao iz STL-a, što je efektivno C ++ učinio s jezikom u cjelini: predstavlja pravila prakse zajedno s njihovim razlozima. [Pregled]

srednji

  • Učinkovitiji C ++ (Scott Meyers) Čak i više praktičnih pravila od Efektivnog C ++. Ne tako važna kao u prvoj knjizi, ali je ipak korisno znati.

  • Izuzetan C ++ (Herb Sutter) Predstavljen kao skup zagonetki, sadrži jednu od najboljih i detaljnih diskusija o pravilnom upravljanju resursima i sigurnosnim iznimkama u C ++-u kroz "Stjecanje resursa - inicijalizacija (RAII)", uz detaljnu pokrivenost mnogih drugih tema, uključujući pimpl idiom , pretraživanje imena, dobar dizajn klase i C + + memorijski model. [Pregled]

  • Više izuzetnih C ++ (Herb Sutter) Obuhvaća dodatne sigurnosne teme iznimaka koje nisu obuhvaćene u C ++, uz raspravu o učinkovitom objektno-orijentiranom programiranju u C ++ i pravilnoj uporabi STL-a. [Pregled]

  • Izuzetan C ++ stil (Herb Sutter) Raspravlja o općem programiranju, optimizaciji i upravljanju resursima; ova knjiga također sadrži izvrsnu prezentaciju o tome kako napisati modularni kod u C ++ koristeći nečlanske funkcije i načelo podijeljene odgovornosti. [Pregled]

  • C ++ Standardi kodiranja (Herb Sutter i Andrei Aleksandrescu) "Standardi kodiranja" ovdje ne znače "koliko prostora trebam uvući za svoj kod?" Ova knjiga sadrži 101 najbolju praksu, idiome i uobičajene pogreške koje vam mogu pomoći u pisanju ispravnog, razumljivog i učinkovitog C ++ koda. [Pregled]

  • C ++ Templates: The Complete Guide (David Vandevoorde i Nicolai M. Josuttis) Ovo je knjiga o predlošcima kakva je postojala prije C ++ 11. Obuhvaća sve, od najosnovnijih do najnaprednijih metaprogramiranja predložaka, i objašnjava svaki detalj kako predlošci rade (i konceptualno i kako se provode) i raspravlja o mnogim uobičajenim pogreškama. Ima izvrstan sažetak pravila o jednoj definiciji (ODR) i rezolucije preopterećenja u aplikacijama. Drugo izdanje, koje obuhvaća C ++ 11, C ++ 14 i C ++ 17, već je objavljeno. [Pregled]

  • C ++ 17 - Kompletan vodič (Nikolai M. Josuttis) Ova knjiga opisuje sve nove funkcije uvedene u C ++ 17 standardu, pokrivajući sve od jednostavnih, kao što su "ugrađene varijable", "constexpr if" i do "polimorfne memorijske resurse". "i" Novi i izbrisani podaci s pregrađenim podacima ".


border=0

napredan

  • Moderni C ++ dizajn (Andrei Aleksandrescu) Inovativna knjiga o naprednim zajedničkim programskim tehnikama. Predstavlja dizajn temeljen na pravilima, popise tipova i temeljne opće programske idiome, a zatim objašnjava koliko korisnih dizajnerskih obrazaca (uključujući male objektne alate, funktore, tvornice, posjetitelje i multi-metode) može biti učinkovito, modularno i čisto korištenjem univerzalnog programiranja. ., [Pregled]

  • C ++ predložak metaprogramiranja (David Abrahams i Alexey Gurtovoy)

  • Kontekst u praksi na C ++ (Anthony Williams) Knjiga koja pokriva C ++ 11 podršku, uključujući biblioteku niti, atom biblioteku, C ++ model memorije, brave i mutexe, kao i dizajniranje i otklanjanje pogrešaka u višestrukim aplikacijama.

  • Napredno C ++ metaprogramiranje (Davide Di Gennaro) Preliminarni vodič o TMP-u za C ++ 11, fokusiran više na praksu nego na teoriju. Ova knjiga sadrži mnogo fragmenata, od kojih su neki zastarjeli zbog tipskih osobina, ali metode su još uvijek korisne za znati. Ako možete trpjeti bizarno oblikovanje / uređivanje, lakše je čitati od Alexandrescua, a možda je i korisnije. Za iskusnije programere postoji dobra šansa da možete pronaći nešto o tamnom kutku C ++ (fads), koji obično dolazi samo iz opsežnog iskustva.


border=0

Stil povezivanja - sve razine

C ++ 11/14/17 / ... Reference:

  • C ++ 11/14/17 Standard (INCITS / ISO / IEC 14882: 2011/2014/2017) Ovo je, naravno, konačni arbitar svega što je C ++. Imajte na umu, međutim, da je to namijenjeno isključivo kao referenca za iskusne korisnike koji žele posvetiti mnogo vremena i truda kako bi ga razumjeli. Standard C ++ 17 objavljen elektronički za 198 švicarskih franaka.

  • C ++ 17 standard je dostupan, ali očito nije u ekonomičnom obliku - izravno iz ISO- a košta 198 švicarskih franaka (oko 200 američkih dolara). Za većinu ljudi, konačni nacrt prije standardizacije je više nego adekvatan (i besplatan). Mnogi će preferirati još noviji nacrt koji dokumentira nove značajke koje će vjerojatno biti uključene u C ++ 20.

  • Pregled C ++ (C ++ 11/14) (samo PDF) (Scott Meyers) ( ažuriran za C ++ 14 ) Ovo su prezentacijski materijali (slajdovi i neke bilješke s predavanja) trodnevnog tečaja koji nudi Scott Meyers, koji je vrlo cijenjen C ++ autor. Iako je popis stavki kratak, kvaliteta je visoka.

  • C ++ Basic Guide (C ++ 11/14/17 / ...) (koji je uredio Bjarn Stroustrup i Herb Satter) je evoluirajući online dokument koji se sastoji od niza preporuka za korištenje modernog C + +. Smjernice se usredotočuju na pitanja više razine kao što su sučelja, upravljanje resursima, upravljanje memorijom i konkurentnost koji utječu na arhitekturu aplikacije i dizajn knjižnice. Projekt je na CppCon'15 najavio Bjarn Straustrup i drugi i pozdravlja doprinos zajednice. Većina priručnika dopunjena je razlozima i primjerima, kao i raspravama o mogućoj potpori alatu. Mnoga su pravila posebno osmišljena za automatsku provjeru pomoću alata za statičku analizu.

  • Super-FAQ C ++ (Marshall Cline, Bjarne Stroustrup i drugi) je pokušaj Standard C ++ Fondacije da kombinira C ++ često postavljana pitanja koja su prethodno pojedinačno podržavali Marshall Cline i Bjarne Stroustrup, kao i nove materijale. Ispitanici se uglavnom bave pitanjima na srednjoj razini i često se pišu s duhovitim tonom. Nisu svi elementi u potpunosti ažurirani na najnoviju verziju C ++ standarda.

  • cppreference.com (C ++ 03/11/14/17 / ...) (pokrenuo Nate Kohl) je wiki koji sažima glavne funkcije glavnog jezika i ima opsežnu dokumentaciju standardne knjižnice C ++. Dokumentacija je vrlo točna, ali je lakša za čitanje od službenog standardnog dokumenta, a pruža bolju navigaciju zbog wiki prirode. Projekt dokumentira sve verzije C ++ standarda, a stranica vam omogućuje filtriranje zaslona za određenu verziju. Projekt je predstavio Nate Kohl na CppCon'14 .


border=0

Klasični / Stariji

Napomena. Neke informacije sadržane u ovim knjigama mogu biti zastarjele ili se više ne smatraju najboljom praksom.

  • Dizajn i evolucija C ++ (Bjarne Straustrup) Ako želite znati zašto je jezik ono što jest, ova knjiga je mjesto gdje ćete naći odgovore. To pokriva sve prije standardizacije C ++-a.

  • Razmišljanja o C ++ - (Andrew Koenig i Barbara Mu) [Pregled]

  • Prošireni stilovi i idiomi programiranja na jeziku C ++ (James Coplien) Preteča uzoraka pokreta, opisuje mnoge C ++ specifične "idiome". Ovo je svakako vrlo dobra knjiga i možda je vrijedno čitati ako možete uštedjeti na vremenu, ali je prilično staro i nije aktualno s trenutnim C ++ događajima.

  • Dizajn velikog opsega C ++ softvera (John Lacos) Lacos objašnjava metode upravljanja velikim C ++ softverskim projektima. Naravno, dobro čitanje, ako je bilo relevantno. Napisana je mnogo prije C ++ 98 i preskočila mnoge funkcije (na primjer, prostore imena) koje su važne za velike projekte. Ako trebate raditi na velikom C ++ softverskom projektu, možda ćete ga htjeti pročitati, iako morate ponijeti sa sobom više nego samo malo soli. Prvi svezak novog izdanja očekuje se 2018. godine .

  • Unutar C ++ objektnog modela (Stanley Lippman) Ako želite saznati kako se obično implementiraju virtualne funkcije članova i kako se osnovni objekti obično postavljaju u memoriju u skripti s višestrukim nasljeđivanjem i kako sve to utječe na izvedbu, ovdje ćete naći detaljne rasprave o takvim temama. ,

  • C ++ Annotated Reference Manual (Bjarne Stroustrup, Margaret A. Ellis) Ova je knjiga prilično zastarjela jer pokriva verziju C ++ 2.0 iz 1989. - obrasci, iznimke, prostori imena i nova bacanja još nisu predstavljeni. Međutim, rekavši da ova knjiga prolazi kroz cijeli C ++ standard toga vremena, objašnjava razloge, moguće implementacije i značajke jezika. Ovo nije knjiga za učenje principa i obrazaca programiranja u C ++, već za razumijevanje svakog aspekta jezika C ++.

  • Razmišljanje u C ++ (Bruce Ekel, 2. izdanje, 2000.). Dva sveska; Ovo je besplatan set udžbenika za ulaznu razinu. Preuzimanja: Svezak 1 , Svezak 2 . Nažalost, oni su zasjenjeni brojnim trivijalnim pogreškama (na primjer, tvrdeći da je const automatski privremeni konstrukt), bez službenog popisa pogrešaka pri upisu. Dio djelomičnog popisa pogrešaka treće strane dostupan je na ( http://www.computersciencelab.com/Eckel.htm ), no čini se da to nije podržano.

  • Znanstveni i tehnički C ++: Uvod u napredne metode i primjere (John Barton i Lee Nackman) Ovo je sveobuhvatna i vrlo detaljna knjiga koja je pokušala objasniti i koristiti sve funkcije dostupne u C ++ u kontekstu numeričkih metoda. U to je vrijeme uveo nekoliko novih metoda, kao što je uzorak znatiželjnog ponavljanja uzoraka (CRTP, koji se također naziva Barton-Nackmanov trik). Najprije je primijenio nekoliko metoda, kao što su dimenzijska analiza i automatska diferencijacija. Dolazi s velikim brojem kompajliranog i korisnog koda, u rasponu od izraza parser do Lapack omotača. Kôd je još uvijek dostupan ovdje: http://www.informit.com/store/science-and-engineering-c-plus-plus-in-introduction-9780201533934 . Nažalost, knjige su postale pomalo zastarjele u stilu i značajkama C ++-a, ali u to vrijeme to je bilo nevjerojatno putovanje (1994, pre-STL). Poglavlja o dinamici nasljeđivanja malo su teška za razumijevanje i nisu od velike pomoći. Ažurirana verzija ove klasične knjige koja uključuje semantiku kretanja i lekcije naučene iz STL-a bila bi vrlo dobra.

4251
23 дек. Odgovor je dan Johannes Schaub - litb 23 dec. 2008-12-23 08:52 '08 u 8:52 am 2008-12-23 08:52

Ostala pitanja o tagovima ili Ask a Question