Kesin C ++ Kitap Kılavuzu ve Listesi


4243

Bu soru, her yıl yayınlanan düzinelerce kötü C ++ kitabı arasında birkaç inci toplamaya çalışmaktadır.

Genellikle internette bulunan eğiticilerden hareket halindeyken alınan diğer birçok programlama dilinin aksine, az sayıda iyi yazılmış C ++ kitabı incelemeden C ++ 'ı hızlı bir şekilde alabilir. Bunu yapmak için çok büyük ve karmaşık. Aslında, o kadar büyük ve karmaşık ki, orada çok fazla çok kötü C ++ kitabı var. Ve biz kötü üsluptan bahsetmiyoruz, ama göze çarpan bariz olgusal hatalar yapmak ve uçsuz bucaksız programlama tarzlarını teşvik etmek gibi şeyler .

Lütfen kaliteli kitapları ve yaklaşık beceri düzeyini sağlamak için kabul edilen cevabı düzenleyin - tercihen C ++ sohbet odasına eklemenizi tartıştıktan sonra . (Düzenlemeler, bir öneriye katılmamaları durumunda çalışmanızı acımasızca geri alabilir.) Kişisel olarak okuduğunuz / yararlandığınız her kitap hakkında kısa bir açıklama / açıklama ekleyin. Kaliteyi, başlıkları vb. Tartışmaktan çekinmeyin. Kriterlere uyan kitaplar listeye eklenecektir. C ve C ++ Kullanıcıları Derneği (ACCU) tarafından gözden geçirilen kitapların incelemeye bağlantıları vardır.

* Not: SSS ve diğer kaynaklar C ++ etiket bilgisinde ve altında bulunabilir.

Yanıtlar:


4889

Acemi

Tanıtıcı, önceki programlama deneyimi yok

  • C ++ Primer * (Stanley Lippman, Josée Lajoie ve Barbara E. Moo) ( C ++ 11 için güncellendi ) 1k sayfalara gelince, bu, C ++ 'a, dilde hemen her şeyi çok erişilebilir bir formatta kapsayan çok kapsamlı bir giriş. ve çok ayrıntılı. Beşinci baskı (16 Ağustos 2012'de yayınlandı) C ++ 11'i kapsamaktadır. [Gözden geçirmek]

  • Programlama: C ++ Kullanarak İlkeler ve Uygulamalar (Bjarne Stroustrup, 2. Baskı - 25 Mayıs 2014) ( C ++ 11 / C ++ 14 için güncellendi ) Dilin yaratıcısı tarafından C ++ kullanarak programlamaya giriş. İyi bir okuma, önceki programlama deneyimini varsaymaz, ancak sadece yeni başlayanlar için değildir.

* C ++ Primer Plus (Stephen Prata) ile karıştırılmamalıdır, daha az olumlu bir inceleme ile .

Daha önceki programlama deneyimiyle giriş

  • C Göz Atalım ++ (Bjarne Stroustrup) ( 17 C ++ için 2. baskı ) “tur” bir hızlı (180 sayfa ve 14 bölümden yaklaşık) öğretici özeti (dil ve standart kütüphane, C ++ ve tüm ve C ++ 11 ) C ++ bilen veya en azından deneyimli programcılar olan insanlar için orta derecede yüksek bir seviyede. Bu kitap, C ++ Programlama Dili, 4. baskının 2-5. Bölümlerini oluşturan materyalin genişletilmiş bir versiyonudur.

  • Hızlandırılmış C ++ (Andrew Koenig ve Barbara Moo, 1. Baskı - 24 Ağustos 2000) Bu temelde C ++ Primer ile aynı alanı kaplar, ancak alanın dörtte birinde bunu yapar. Bunun nedeni büyük ölçüde programlamaya giriş değil,daha önce başka bir dilde programlamış olan insanlariçin C ++ 'a giriş olmalarıdır. Daha dik bir öğrenme eğrisi var, ancak bununla başa çıkabilenler için, dile çok kompakt bir giriş. (Tarihsel olarak, dili öğretmek için modern bir yaklaşım kullanan ilk başlangıç ​​kitabı olarak yeni bir çığır açmıştır.) Buna rağmen, öğrettiği C ++ tamamen C ++ 98'dir. [Gözden geçirmek]

En iyi uygulamalar

  • Etkili C ++ (Scott Meyers, 3. Baskı - 22 Mayıs 2005) Bu, C ++ programcılarının okuması gereken en iyi ikinci kitap olma amacıyla yazılmıştır ve başarılı olmuştur. Daha önceki sürümler C'den gelen programcılara yönelikti, üçüncü baskı bunu değiştirdi ve Java gibi dillerden gelen programcıları hedef aldı. Çok erişilebilir (ve eğlenceli) bir tarzda gerekçeleriyle birlikte ~ 50 kolay hatırlanan kurallar sunar. C ++ 11 ve C ++ 14 için örnekler ve birkaç konu eskidir ve Etkili Modern C ++ tercih edilmelidir. [Gözden geçirmek]

  • Etkili Modern C ++ (Scott Meyers) Bu, temelolarak C ++ 03 ve C ++ 11 ve C ++ 14'e geçiş yapan C ++ programcılarını hedefleyen Effective C ++ ' ın yeni sürümüdür.

  • Etkili STL (Scott Meyers) STL'den gelen Etkili C ++ ' ın bir bütün olarak dile yaptığıstandart kütüphanenin aynısını yapmayı amaçlamaktadır: Gerekçeleriyle birlikte başparmak kuralları sunar. [Gözden geçirmek]

Orta düzey

  • Daha Etkili C ++ (Scott Meyers) Etkili C ++ 'a göre daha fazla kural. İlk kitaptaki kadar önemli değil, ama yine de bilmek iyi.

  • Olağanüstü C ++ (Herb Sutter) Bir dizi bulmaca olarak sunulan bu, çeşitli kaynakların derinlemesine kapsama alanının yanı sıra Kaynak Alımı ile C ++ 'da uygun kaynak yönetimi ve istisna güvenliğinin en iyi ve kapsamlı tartışmalarından birine sahiptir. deyim, isim arama, iyi sınıf tasarımı ve C ++ bellek modeli gibi diğer konuların listesi. [Gözden geçirmek]

  • Daha İstisnai C ++ (Herb Sutter) C ++ ' da etkili nesne yönelimli programlama ve STL'nin doğru kullanımı tartışmasına ek olarak İstisnai C ++' da ele alınmayan ek istisna güvenlik konularını kapsar. [Gözden geçirmek]

  • Olağanüstü C ++ Stili (Herb Sutter) Genel programlama, optimizasyon ve kaynak yönetimini tartışır; bu kitapta ayrıca üye olmayan işlevler ve tek sorumluluk ilkesi kullanılarak C ++ 'da modüler kod yazma konusunda mükemmel bir açıklama bulunmaktadır. [Gözden geçirmek]

  • C ++ Kodlama Standartları (Herb Sutter ve Andrei Alexandrescu) Burada “kodlama standartları”, “kodumu kaç boşluk girintilemeliyim” anlamına gelmez. Bu kitap, doğru, anlaşılabilir ve verimli C ++ kodu yazmanıza yardımcı olabilecek 101 en iyi uygulama, deyim ve yaygın tuzak içerir. [Gözden geçirmek]

  • C ++ Şablonları: Komple Kılavuz (David Vandevoorde ve Nicolai M. Josuttis) Buşablonlar hakkında C ++ 11'den önce var olan kitaptır. Temelden en gelişmiş şablon meta programlamasına kadar her şeyi kapsar ve şablonların nasıl çalıştığına (hem kavramsal olarak hem de nasıl uygulandıklarına) ilişkin her ayrıntıyı açıklar ve birçok yaygın tuzakları tartışır. Tek Tanım Kuralının (ODR) mükemmel özetleri ve eklerde aşırı yük çözünürlüğü vardır. Bir ikinci baskı C ++ 11, C ++ 14 ve C ++ 17 den daha önce yayınlanmıştır. [Gözden geçirmek]

  • C ++ 17 - Komple Kılavuz (Nicolai M. Josuttis) Bu kitap, C ++ 17 Standardında 'Inline Variables', 'constexpr if' gibi basit özelliklerden 'Polimorfik' e kadar olan her şeyi kapsayan tüm yeni özellikleri açıklamaktadır. Bellek Kaynakları 've' Aşırı Hizalanmış Verilerle Yeni ve Sil '.


ileri

  • Modern C ++ Tasarımı (Andrei Alexandrescu) İleri jenerik programlama teknikleri üzerine çığır açan bir kitap. İlke tabanlı tasarım, tür listeleri ve temel genel programlama deyimlerini tanıtır, ardından genel programlama kullanılarak kaç tane yararlı tasarım deseninin (küçük nesne ayırıcıları, functorları, fabrikalar, ziyaretçiler ve çoklu yöntemler dahil) verimli, modüler ve temiz bir şekilde uygulanabileceğini açıklar. . [Gözden geçirmek]

  • C ++ Şablon Meta Programlama (David Abrahams ve Aleksey Gurtovoy)

  • C ++ Eşzamanlılık İş Başında (Anthony Williams) İş parçacığı kütüphanesi, atom kütüphanesi, C ++ bellek modeli, kilitler ve muteksleri içeren C ++ 11 eşzamanlılık desteğinin yanı sıra çok iş parçacıklı uygulamaların tasarlanması ve hata ayıklanması konularını içeren bir kitap. Bir ikinci baskı C ++ 14 ve C ++ 17 den daha önce yayınlanmıştır.

  • Gelişmiş C ++ Metaprogramlama (Davide Di Gennaro) TMP tekniklerinin bir C ++ 11 öncesi el kitabı, teoriden çok uygulamaya odaklanmıştır. Bu kitapta, bazıları tür özellikleri tarafından kullanılmayan bir ton snippet var, ancak teknikler yine de bilmek faydalı. İlginç biçimlendirme / düzenlemeye katlanabiliyorsanız, Alexandrescu'dan okumak daha kolay ve tartışmalı olarak daha ödüllendirici. Daha deneyimli geliştiriciler için, C ++ 'ın (bir tuhaflık) karanlık bir köşesinde genellikle sadece kapsamlı deneyimlerle ortaya çıkan bir şey almanız için iyi bir şans var.

  • C ++ 'da Fonksiyonel Programlama (Ivan Čukić) Kitap, okuyucuyu modern C ++' daki fonksiyonel paradigmaya tanıtmaktadır. Teorik ve kod yönlerini çeşitli örnekler ve diyagramlarla kapsar. Yazar öğretim deneyimine sahiptir ve onu işlevsel programlamanın farklı yönleri boyunca okuyucuyu düzgün bir şekilde yönlendirmek için kullanır.


Referans Stili - Tüm Seviyeler

C ++ 11/14/17 /… Referanslar:

  • C ++ 11 / 14 / 17 Standart (INCITS / ISO / IEC 14.882: 2011/2014/2017) Bu, tabii ki, ya da C ++ olmayan tüm nihai söz sahibidir. Bununla birlikte, yalnızca , anlayışına önemli ölçüde zaman ve çaba harcamak isteyen deneyimli kullanıcılar için bir referans olarak tasarlandığını unutmayın . C ++ 17 standardı 198 İsviçre Frangı için elektronik biçimde yayınlandı.

  • C ++ 17 standardı mevcuttur, ancak ekonomik olarak görünmemektedir - doğrudan ISO'dan 198 İsviçre Frangı'na (yaklaşık 200 ABD doları) mal olmaktadır. Çoğu insan için, standardizasyondan önceki son taslak yeterli (ve ücretsiz) değildir. Birçoğu, C ++ 20'ye dahil edilmesi muhtemel yeni özellikleri belgeleyen daha yeni bir taslağı tercih edecektir .

  • Yeni C ++ (C ++ 11/14) 'e Genel Bakış (yalnızca PDF) (Scott Meyers) ( C ++ 14 için güncellendi ) Bunlar tarafından sunulan üç günlük eğitim kursunun sunum materyalleri (slaytlar ve bazı ders notları) C ++ konusunda saygın bir yazar olan Scott Meyers. Öğelerin listesi kısa olsa da kalitesi yüksektir.

  • C ++ Çekirdek Kuralları (C ++ / 17 11/14 / ...) (Bjarne Stroustrup ve Herb Sutter tarafından düzenlenmiş) iyi ++ Modern C kullanmak için kuralların setinden oluşan gelişmekte olan çevrimiçi bir belgedir. Yönergeler, arayüzler, kaynak yönetimi, bellek yönetimi ve uygulama mimarisini ve kütüphane tasarımını etkileyen eşzamanlılık gibi nispeten daha üst düzey konulara odaklanır. Proje, Bjarne Stroustrup ve diğerleri tarafından CppCon'15'te duyuruldu ve topluluktan katkıları memnuniyetle karşıladı. Çoğu kılavuz, olası araç desteği tartışmasının yanı sıra bir gerekçe ve örneklerle desteklenmiştir. Birçok kural, statik analiz araçları tarafından otomatik olarak kontrol edilebilecek şekilde tasarlanmıştır.

  • C ++ Süper SSS (Marshall Cline, Bjarne Stroustrup ve diğerleri) bir önceki Marshall Cline ve Bjarne Stroustrup tarafından bireysel olarak tutulan C ++ SSS birleştirmeye Standart C ++ Vakfı tarafından çaba ve aynı zamanda yeni katkılar içeren olduğunu. Öğeler çoğunlukla orta düzeydeki sorunları ele alır ve genellikle esprili bir tonla yazılır. Tüm öğeler henüz C ++ standardının en son sürümüyle güncel olmayabilir.

  • cppreference.com (C ++ 03/11/14/17 /…) (Nate Kohl tarafından başlatılır) temel çekirdek dil özelliklerini özetleyen ve C ++ standart kütüphanesinin kapsamlı belgelerine sahip bir wikidir. Dokümantasyon çok kesindir, ancak resmi standart dokümana göre okunması daha kolaydır ve wiki yapısı nedeniyle daha iyi navigasyon sağlar. Proje, C ++ standardının tüm sürümlerini belgelemektedir ve site, belirli bir sürüm için ekranın filtrelenmesine izin vermektedir. Proje, Nate Kohl tarafından CppCon'14'te sunuldu .


Klasikler / Büyük

Not: Bu kitaplarda yer alan bazı bilgiler güncel olmayabilir veya artık en iyi uygulama olarak değerlendirilmeyebilir.

  • C ++ Tasarım ve Evrimi (Bjarne Stroustrup)Dilin neden böyle olduğunu bilmek istiyorsanız, bu kitap cevapları bulacağınız yerdir. Bu, C ++ standardizasyonundan önceki her şeyi kapsar.

  • C ++ Ruminasyonları - (Andrew Koenig ve Barbara Moo) [İnceleme]

  • Gelişmiş C ++ Programlama Stilleri ve Deyimler (James Coplien) Örüntü hareketinin öncüsü olan, C ++ 'a özgü “deyimleri” açıklar. Bu kesinlikle çok iyi bir kitap ve zaman ayırabilirseniz yine de okunmaya değer olabilir, ancak oldukça eski ve güncel C ++ ile güncel değil.

  • Büyük Ölçekli C ++ Yazılım Tasarımı (John Lakos) Lakos, çok büyük C ++ yazılım projelerini yönetme tekniklerini açıklar. Kesinlikle, iyi bir okuma, sadece güncel olsaydı. C ++ 98'den çok önce yazılmıştır ve büyük ölçekli projeler için önemli olan birçok özelliği (örn. Ad alanları) özlüyor. Büyük bir C ++ yazılım projesinde çalışmanız gerekiyorsa, onunla bir tuz tanesinden daha fazlasını almanız gerekmesine rağmen, onu okumak isteyebilirsiniz. Yeni bir baskının ilk cildi 2019'da yayınlandı .

  • C ++ Nesne Modelinin İçinde (Stanley Lippman) Sanal üye işlevlerinin yaygın olarak nasıl uygulandığını ve temel nesnelerin çok kalıtım senaryosunda bellekte nasıl düzenlendiğini ve tüm bunların performansı nasıl etkilediğini bilmek istiyorsanız, burası bu tür konuların kapsamlı tartışmalarını bulabilirsiniz.

  • Açıklamalı C ++ Başvuru Kılavuzu (Bjarne Stroustrup, Margaret A. Ellis) Bu kitap, 1989 C ++ 2.0 sürümünü incelediği için oldukça eskidir - Şablonlar, istisnalar, ad alanları ve yeni oyuncular henüz tanıtılmadı. Bununla birlikte, bu kitap, dilin mantığını, olası uygulamalarını ve özelliklerini açıklayan zamanın tüm C ++ standardından geçer. Bu, C ++ ile ilgili programlama ilkelerini ve modellerini öğrenmek için değil, C ++ dilinin her yönünü anlamak için bir kitaptır.

  • C ++ ile düşünme (Bruce Eckel, 2. Baskı, 2000). İki cilt; giriş seviyesi kitapbir öğretici tarzı ücretsiz bir set. Dosyalar: cilt 1 , cilt 2 . Maalesef, resmi bir hataconstlistesi olmadanbir dizi önemsiz hata (örneğin, geçici programların otomatik olarak sürdürülmesi) ilegölgeleniyorlar. Kısmi bir üçüncü taraf hata listesi ( http://www.computersciencelab.com/Eckel.htm ) adresinde bulunabilir, ancak görünüşe göre korunmamaktadır.

  • Bilim ve Mühendislik C ++: İleri Tekniklere ve Örneklere Giriş (John Barton ve Lee Nackman) C ++ 'da bulunan tüm özellikleri sayısal yöntemler bağlamında açıklamaya ve kullanmaya çalışan kapsamlı ve çok ayrıntılı bir kitaptır. O zamanlar Merakla Yinelenen Şablon Deseni (Barton-Nackman hilesi olarak da adlandırılan CRTP) gibi birkaç yeni teknik tanıttı. Boyutsal analiz ve otomatik farklılaşma gibi çeşitli tekniklere öncülük etti. Bir ifade ayrıştırıcısından bir Lapack sarmalayıcısına kadar çok sayıda derlenebilir ve kullanışlı kodla birlikte geldi. Kod hala burada mevcuttur: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Ne yazık ki, kitaplar stil ve C ++ özelliklerinde biraz modası geçmiş, ancak o zamanlar inanılmaz bir tur güçtü (1994, STL öncesi). Dinamik miras konusundaki bölümlerin anlaşılması biraz karmaşıktır ve çok yararlı değildir. Bu klasik kitabın hareket semantiği ve STL'den öğrenilen dersleri içeren güncellenmiş bir versiyonu çok güzel olurdu.


402
@G Rassovsky: X'i Y saat içinde öğretmeyi vaat eden tüm kitaplar. Örneğin 24 saat içinde C ++ öğrenin. Tüm bu kitaplardan kaçınılması gerektiğine inanıyorum.
akhil_mittal

115
Kimsenin ayakkabılarına basmaktan nefret ediyorum, ancak yazarı malzemelerini ücretsiz olarak çevrimiçi yayınlamak için yazara saygı duysam da Bruce Eckel'in "Thinking in C ++" ı önermiyorum. Kitabın bakış açısı, GoF Tasarım Desenlerinin zayıf uygulamasına benzer şekilde, C ++ ve "nesne yönelimli" programlamanın nispeten zayıf veya etkisiz kullanımını önermektedir. Genel olarak programlama için ilginç bir tanıtım kitabı buldum, ancak birisi programlama ve (özellikle) bilgisayar bilimine daha fazla alıştıkça, tamamen eğitime zararlı "klasik" OOP terimleriyle düşünen kitaplar buluyorum.

30
@ G.Rassovsky accu.org web sitesinde, derecelendirme içeren bir kitap inceleme bölümü var. C ++ olanları arayabilirsiniz. Birçoğu "önerilmez" olarak derecelendirilmiştir.
Zaphod Beeblebrox

83
Hızlandırılmış C ++ 2000'den alınmıştır. Güncel olmadığı konusunda endişelenmeli miyim?
AutonomousApps

60
Ben baskı için yayınlanan tarihleri ​​koymak için uygun olacağını düşünüyorum (varsa baskı numarası ile).
Aaron Hall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.