Soru Kesin C ++ Kitap Rehberi ve Listesi


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

İnternette bulunan eğitmenler tarafından sık sık toplanan diğer pek çok programlama dilinden farklı olarak, C ++ iyi yazılmış bir C ++ kitap okumadan hızlıca C ++ alabilir. Bunu yapmak için çok büyük ve karmaşıktır. Aslında çok büyük ve karmaşık çok çok kötü C ++ kitap var dışarıda. Ve kötü bir tarzdan bahsetmiyoruz, ama spor gibi şeyler göze çarpan bariz olgusal hatalar ve abysmally kötü programlama stillerini tanıtmak.

Lütfen sağlamak için kabul edilen cevabı düzenleyin kaliteli kitaplar ve yaklaşık bir beceri seviyesi - tercihen  sonra  ilavesini tartışıyor C ++ sohbet odası. (Düzenlemeler, bir öneriye katılmıyorlarsa işinizi acımasızca iptal edebilir.) 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. Kriterleri karşılayan kitaplar listeye eklenecektir. C ve C + + Kullanıcıları Derneği (ACCU) tarafından yapılan incelemeleri içeren kitapların incelemeye bağlantıları vardır.

* Not: Sıkça sorulan sorular ve diğer kaynaklar C ++ etiket bilgisi ve altında .


4253


Menşei




Cevaplar:


Acemi

Giriş, önceden programlama deneyimi yok

  • C ++ Astar * (Stanley Lippman, Josée Lajoie ve Barbara E. Moo) (C ++ 11 için güncellendi1k sayfalardan geliyoruz, bu, C ++ 'ya, çok dilli bir formatta ve ayrıntılı olarak dilde olan her şeyi kapsayan çok kapsamlı bir giriş niteliğindedir. Beşinci baskı (16 Ağustos 2012'de yayınlandı) C ++ 11'i kapsamaktadır. [Gözden geçirmek] 

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

* Şaşkın olmamak C ++ Primer Plus (Stephen Prata), önemli ölçüde daha az elverişli gözden geçirmek.

Daha önceki programlama deneyimi ile giriş

  • C ++ Bir Tur (Bjarne Stroustrup) (Bjarne Stroustrup)C ++ 17 için 2. baskı“Tur”, standart C ++ (dil ve standart kütüphane) ile ilgili hızlı bir (yaklaşık 180 sayfa ve 14 bölüm) öğretici özetidir. ve C ++ 11 kullanarak) C ++ 'yı zaten 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ı Bölüm 2-5'i oluşturan malzemenin genişletilmiş bir sürümüdür.

  • Hızlandırılmış C ++ (Andrew Koenig ve Barbara Moo, 1. Baskı - 24 Ağustos 2000) Bu temelde temel olarak aynı C ++ Astarama alanın dördünde böyle yapar. Bu büyük ölçüde bir giriş yapmaya teşebbüs etmediği için programlamaama bir giriş C ++ Daha önce başka bir dilde programlanmış olan insanlar için. Daha dik bir öğrenme eğrisi vardır, ancak bununla başa çıkabilenler için, dile çok kompakt bir giriş niteliğindedir. (Tarihsel olarak, dili öğretmek için modern bir yaklaşım kullanan ilk yeni başlayanlar kitabıyla yeni bir zemin yarattı.) Buna rağmen, C ++ öğretir tamamen C ++ 98. [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ı ile yazılmıştır ve başarılı olmuştur. Önceki sürümler C'den gelen programcıları hedefliyordu, üçüncü baskı bunu değiştiriyor ve Java gibi dillerden gelen programcıları hedefliyor. Kolayca hatırlanması kolay 50 kurallarını akılda kalıcı ve eğlenceli bir tarzda sunar. C ++ 11 ve C ++ 14 için örnekler ve birkaç konu modası geçmiş ve Etkili Modern C ++ tercih edilmelidir. [Gözden geçirmek]

  • Etkili Modern C ++ (Scott Meyers) Bu temelde yeni versiyonu Etkili C ++C ++ programcıları C ++ 03'ten C ++ 11 ve C ++ 14'e geçişi hedefliyor.

  • Etkili STL (Scott Meyers) Bu, STL'den gelen standart kütüphane ile aynı şeyi yapmayı amaçlamaktadır. Etkili C ++ Bir bütün olarak dile çevirdi: Onların mantığı ile birlikte başparmak kuralları sunar. [Gözden geçirmek]

Orta düzey

  • Daha Etkili C ++ (Scott Meyers) Daha fazla başparmak kuralları Etkili C ++. İlk kitaptaki kadar önemli değil ama yine de bilmek güzel.

  • Olağanüstü C ++ (Herb Sutter) Bir dizi bulmaca olarak sunulan bu, C ++ ile Kaynak Toplama yoluyla uygun kaynak yönetimi ve istisna güvenliğinin en iyi ve kapsamlı tartışmalarından birine sahiptir. pimpl deyimi, ad arama, iyi sınıf tasarımı ve C ++ bellek modeli dahil olmak üzere konular. [Gözden geçirmek]

  • Daha Olağanüstü C ++ (Herb Sutter) Kapsamında olmayan ek istisna güvenlik konularını kapsar Olağanüstü C ++C ++ 'da etkin nesne yönelimli programlamanın tartışılması ve STL'nin doğru kullanımı. [Gözden geçirmek]

  • Olağanüstü C ++ Stili (Herb Sutter) Genel programlama, optimizasyon ve kaynak yönetimini tartışır; Bu kitap aynı zamanda, üye olmayan fonksiyonlar ve tek sorumluluk ilkesi kullanılarak C ++ 'da modüler kodun nasıl yazılacağı konusunda mükemmel bir açıklamaya sahiptir. [Gözden geçirmek]

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

  • C ++ Şablonları: Komple Kılavuz (David Vandevoorde ve Nicolai M. Josuttis) Bu  C ++ 11'den önce var olan şablonlarla ilgili kitap. En temel şablonlardan metaformasyona kadar her şeyi kapsar ve şablonların nasıl çalıştığına dair her detayı (hem kavramsal hem de nasıl uygulandıklarını) açıklar ve birçok yaygın tuzağı ele alır. Bir Tanımlama Kuralı (ODR) ve eklerde aşırı yük çözünürlüğünün mükemmel özetleri vardır. bir ikinci baskı C ++ 11, C ++ 14 ve C ++ 17 kapsayanlar zaten yayınlanmıştır. [Gözden geçirmek]


ileri

  • Modern C ++ Tasarım (Andrei Alexandrescu) Gelişmiş jenerik programlama teknikleri üzerine çığır açan bir kitap. Politika temelli tasarım, tip listeleri ve temel jenerik programlama deyimlerini tanıtır, daha sonra, kullanışlı tasarım modellerinin (küçük nesne ayırıcıları, korsanları, fabrikaları, ziyaretçileri ve çoklu yöntemleri de dahil olmak üzere), genel programlamayı verimli, modüler ve temiz bir şekilde nasıl kullanabileceğini açıklar. . [Gözden geçirmek]

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

  • C ++ Concurrency Eylemde (Anthony Williams) İş parçacığı kütüphanesi, atomik kütüphane, C ++ bellek modeli, kilitler ve muteksler gibi C ++ 11 eşzamanlılık desteğini ve çok iş parçacıklı uygulamaları tasarlama ve hata ayıklama konularını kapsayan bir kitap.

  • Gelişmiş C ++ Metaprogramlama (Davide Di Gennaro) TMP teknikleri öncesi-C ++ 11 kılavuzu, teoriden çok uygulamaya odaklanmıştır. Bu kitapta, bir kısmı tip özelliklerle modası geçmiş bir parça parçacık vardır, ancak teknikler, yine de bilmek için yararlıdır. Eğer ilginç biçimlendirme / düzenleme ile koyabiliyorsanız, Alexandrescu'dan okumak daha kolay ve tartışmasız, daha ödüllendirici. Daha deneyimli geliştiriciler için, genellikle sadece kapsamlı deneyimlerle ortaya çıkan C ++ (bir tuhaflık) karanlık köşesi hakkında bir şeyler edinme şansınız vardır.


Referans Stili - Tüm Seviyeler

C ++ 11/14 Referanslarımız:

  • C ++ Standardı (INCITS / ISO / IEC 14882-2011) Bu, elbette, C ++ olan ya da olmayanların nihai hakemidir. Bununla birlikte, bunun sadece bir referans olması amaçlandığını unutmayın. deneyimli kullanıcılar anlayışına hatırı sayılır zaman ve çaba sarfetmeye isteklidir. Her zamanki gibi ilk sürüm oldukça pahalı ($ 300 + ABD), ancak şimdi 60 $ için elektronik formda serbest bırakıldı.

  • C ++ 14 standardı mevcut, ancak görünüşte ekonomik bir formda değil - doğrudan ISO’dan 198 İsviçre Frangı (yaklaşık 200 ABD Doları). Çoğu insan için standardizasyondan önceki son taslak yeterli (ve ücretsiz) daha fazladır. Çoğu tercih eder daha yeni taslakC ++ 17'de yer alması muhtemel yeni özelliklerin belgelenmesi.

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

  • C ++ Çekirdek Kuralları (C ++ 11/14/17 /…) (Bjarne Stroustrup ve Herb Sutter tarafından düzenlenen), modern C ++ kuyu kullanımı için bir dizi kılavuzdan oluşan gelişmekte olan bir çevrimiçi dokümandır. Kılavuzlar, 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 üst düzey konular üzerinde odaklanmıştır. Proje Bjarne Stroustrup ve diğerleri tarafından CppCon'15'te duyuruldu ve topluluğun katkılarını memnuniyetle karşılar. Çoğu rehbere bir mantık ve örneklerin yanı sıra olası araç desteğinin tartışmaları eklenmiş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), Marshall Cline ve Bjarne Stroustrup'un daha önce bireysel olarak sürdürdüğü C ++ SSS'lerini birleştirmek ve ayrıca yeni katkıları birleştirmek için Standart C ++ Vakfı tarafından bir çabadır. Maddeler çoğunlukla orta düzeydeki sorunları ele alırlar ve çoğunlukla esprili bir tonla yazılır. Tüm öğeler henüz C ++ standardının en son sürümü ile güncel olmayabilir.

  • cppreference.com (C ++ 03/11/14/17 /…) (Nate Kohl tarafından başlatılan) temel çekirdek dil özelliklerini özetleyen ve C ++ standart kütüphanesinin kapsamlı belgelerine sahip olan bir wiki'dir. Dokümantasyon çok hassastır, ancak resmi standart belgeden daha kolay okunabilir ve wiki niteliğinden dolayı daha iyi gezinme 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 / Yaşlı

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

  • C ++ Tasarım ve Evrimi (Bjarne Stroustrup) Bilmek istiyorsanız niye ya Dil, olduğu gibi, bu kitap cevapları bulduğunuz yer. Bu her şeyi kapsar standardizasyondan önce C ++

  • C ++ 'da ruminasyonlar - (Andrew Koenig ve Barbara Moo) [Gözden geçirmek]

  • Gelişmiş C ++ Programlama Stilleri ve Deyimler (James Coplien) Desen hareketinin öncülü, birçok C ++ - özel “deyim” i tanımlar. Bu kesinlikle çok iyi bir kitap ve zamanı boşaltabiliyor olsanız da, yine de 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çıklıyor. Şüphesiz, iyi bir okuma, eğer sadece güncel çıktıysa. C ++ 98'den çok önce yazılmış ve büyük ölçekli projeler için önemli olan birçok özelliği (örn. İsim alanları) özlüyor. Büyük bir C ++ yazılım projesinde çalışmanız gerekiyorsa, bunu okumak isteyebilirsiniz, bununla birlikte bir tuzdan daha fazlasını almanız gerekir. Yeni baskının ilk hacmi 2018'de bekleniyor.

  • C ++ Nesne Modeli İçinde (Stanley Lippman) Sanal üye işlevlerinin nasıl yaygın olarak uygulandığını ve temel nesnelerin genellikle çok-miras senaryoda nasıl yerleştirildiğini ve bunların tümünün performansı nasıl etkilediğini öğrenmek istiyorsanız, bu konuyla ilgili kapsamlı tartışmalar bulacaksınız. konular.

  • Açıklamalı C ++ Referans Kılavuzu (Bjarne Stroustrup, Margaret A. Ellis) Bu kitap 1989 C ++ 2.0 versiyonunu araştırdığı için oldukça eskimiştir - Şablonlar, istisnalar, isim alanları ve yeni oyuncular henüz tanıtılmamıştır. Bununla birlikte, bu kitabın, dilin gerekçesini, olası uygulamalarını ve özelliklerini açıklayan zamanın tüm C ++ standardını geçtiğini söyleyerek. Bu, C ++ üzerinde programlama ilkelerini ve kalıplarını öğrenmek için bir kitap değil, C ++ dilinin her yönünü anlamak içindir.

  • C ++ 'da Düşünmek (Bruce Eckel) İki cilt; öğretici bir stil ücretsiz intro düzey kitap seti. İndirilenler: vol 1, vol 2. Maalesef birtakım önemsiz hatalarla gölgelendiler (örn. const), hiçbir resmi errata listesi ile. Kısmi 3rd parti errata listesi şu adreste mevcuttur:http://www.computersciencelab.com/Eckel.htm), ama görünüşe göre bakılmadı.

  • Bilim ve Mühendislik C ++: İleri Tekniklere Giriş ve Örnekler (John Barton ve Lee Nackman) Sayısal yöntemler bağlamında C ++ 'da bulunan tüm özellikleri açıklamaya ve kullanmaya çalışan kapsamlı ve çok detaylı bir kitaptır. O zaman, Merakla Yinelenen Şablon Kalıbı (Barton-Nackman trick olarak da adlandırılan CRTP) gibi birkaç yeni tekniği tanıttı. Boyut analizi ve otomatik farklılaşma gibi çeşitli tekniklere öncülük etmiştir. Bir ifade ayrıştırıcısından bir Lapack sarıcısına kadar pek çok kullanışlı ve kullanışlı kodla birlikte geldi. Bu kod hala burada kullanılabilir: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Ne yazık ki, kitaplar tarz ve C ++ özelliklerinde biraz modası geçmiş olsa da, o zamanlar (1994 öncesi STL) inanılmaz bir tur-de-force oldu. Dinamik miras konusundaki bölümler, anlamak ve çok kullanışlı olmamak için biraz karmaşıktır. Bu klasik kitabın hareketli semantiği ve STL'den alınan dersleri içeren güncellenmiş bir versiyonu çok güzel olurdu.


4019



Belki de okunamaması gereken c ++ kitaplarının bir listesi var mı? - G.Rassovsky
@G Rassovsky: Y saatlerinde X dersi vermeyi vaat eden tüm kitaplar. Örneğin, 24 saat içinde C ++ öğrenin. Bütün bu kitapların daha iyi saklandığına inanıyorum. - i_am_zero
Kimsenin ayakkabısına adım atmaktan nefret ediyorum, ancak materyallerini çevrimiçi olarak ücretsiz yayınlamak için yazara saygı duysam da Bruce Eckel'in "C + 'da Düşünme" yi önermiyorum. Kitabın perspektifi, GoF Tasarım Kalıplarının kötü uygulamalarına benzeyen, C ++ ve "nesne yönelimli" programlamanın nispeten zayıf veya etkisiz kullanımını önermektedir. Genel olarak programlama için enteresan bir giriş kitabı buldum, fakat birisi bir bütün olarak programlama ve (özellikle) bilgisayar bilimi ile daha yakından tanıştığında, tamamen "klasik" OOP terimlerini eğitime zarar veren düşünen kitapları buluyorum. - Alexander Pritchard
Hızlandırılmış C ++ 2000'den beri. Bu güncel değil mi endişelenmeli miyim? - AutonomousApps
Basım için yayınlanmış tarihleri ​​koymak uygun olacaktır (uygun olan yerlerde baskı numarası ile). - Aaron Hall♦