Kesin C Kitap Kılavuzu ve Listesi


400

Bu soru, topluluk tarafından tutulan kaliteli kitapların çeşitli dil seviyelerini hedefleyen programlama dili.

C, çevrimiçi öğreticileri okuyarak hareket halindeyken alınması zor olan karmaşık bir programlama dilidir. Kapsamlı bir kitap genellikle dili öğrenmenin en iyi yoludur ve iyi bir kitap bulmak ilk adımdır. Kötü yazılmış kitaplardan ve daha da önemlisi ciddi teknik hatalar içeren kitaplardan kaçınmak önemlidir.

Lütfen yaklaşık beceri düzeyi ve her kitap hakkında kısa bir açıklama / açıklama ile kaliteli kitaplar eklemek için kabul edilen cevapta düzenlemeler önerin. ( Sorunun kilitlendiğini unutmayın, bu nedenle yeni yanıt kabul edilmeyecektir. Listeyle tek bir yanıt korunmaktadır )

Kitap seçenekleri, kalite, başlıklar, özetler, beceri seviyeleri ve yanlış gördüğünüz diğer her şeyi tartışmaktan çekinmeyin. Burada C topluluğu tarafından tatmin edici görülen kitaplar listede yer alacaktır; geri kalanı düzenli olarak kaldırılacaktır.

C ve C ++ Kullanıcıları Derneği (ACCU) tarafından gözden geçirilen kitaplar için, kitapla birlikte bu incelemelere bir bağlantı eklenmelidir.

Ayrıca bakınız:


Bu soru Meta'da Silinen Sorular Denetimi 2018'in bir parçası olarak tartışıldı .
Fikir birliği, geri alınmasını ve aktif olarak sürdürülmesini sağlamaktı.


31
Soruyu küçümsemek değil, bu iyi, ama ... çoğu insan K&R'de ustalaşmak için yıllar alır. İçinde düşündüğünüzden daha fazlası var. Kitabın inceliği aldatıcı.
dmckee --- ex-moderatör kedi yavrusu

4
C konusunda yeniyseniz, modern C'nin ANSI C olduğunu ve bu standardın (1989) öncesindeki herhangi bir şeyin çılgınca eski olabileceğini unutmayın. 90'lı yılların ortalarında veya sonrasında çekim yapın.
Dana Robinson

7
@Dhaivat Bence değil, K&R bandwagonuna atlamaya dikkat et. K&R, iyi bir program tasarımına veya iyi bir programlama uygulamasına değinmez, çünkü esasen iyi programlama uygulamasının ne olduğunu bilmeden önce yazılmıştır. C dilinin hangi kısımlarının gereksiz veya hatta tehlikeli olduğunu belirtmez. Kitap doğru bir referans el kitabı olarak listelenmiştir, modern programlamayı öğretmek / öğrenmek için kullanılmamalıdır.
Lundin

Dana'ya, 89/90'daki ANSI / ISO standartlarından önce yazılan hiçbir şeyin böyle bir listede görünmesi konusunda hemfikirim. Ayrıca hangi kitapların C99'a hitap ettiğini ve hangilerinin yazılmadığını da belirtebilirsiniz.
Lundin

Yanıtlar:


492

Uyarı

Bu, farklı kalitede rastgele kitapların bir listesidir. Bazı insanların görüşüne göre (bazı gerekçe ile), artık önerilen kitapların bir listesi değildir. Listelenen kitapların bazıları açık bir şekilde yanlış ifadeler içeriyor veya yanlış / zararlı uygulamalar öğretiyor. Bu tür kitapların farkında olan kişiler, bu yanıtı iyileştirmek için bu yanıtı düzenleyebilir. Bkz . C kitap listesi haywire gitti. Bununla ne yapmalı? ve ayrıca 2018 soru denetimi silindi .

Referans (Tüm Seviyeler)


Acemi

Orta düzey

  • Modern C - Jens Gustedt (2017 1. Baskı; 2020 2. Baskı). C'yi başından ileri C'ye kadar 5 seviyede (karşılaşma, tanıdık, biliş, deneyim, hırs) C'yi kapsar. Diğer birkaç kitabın yaptığı iş parçacıkları ve atomik erişim de dahil olmak üzere C11 ve C17'yi kapsar. Tüm derleyiciler bu özellikleri tüm ortamlarda tanımaz.

  • C Arayüzler ve Uygulamalar - David R. Hanson (1997). C'deki bir arabirim ve uygulama arasındaki sınırın genel ve yeniden kullanılabilir bir şekilde nasıl tanımlanacağı hakkında bilgi sağlar. Ayrıca bu prensibi, listeler, kümeler, istisnalar, dizi manipülasyonu, bellek ayırıcılar ve daha fazlası gibi C'deki ortak mekanizmaların ve veri yapılarının uygulanmasına uygulayarak gösterir. Temel olarak Hanson, Icon ve lcc'yi inşa etmenin bir parçası olarak yazdığı tüm kodu aldı ve diğer insanların kendi projeleri için tekrar kullanabilecekleri en iyi bitleri çıkardı. Modern tasarım tekniklerini (Liskov'un veri soyutlaması dahil) kullanarak iyi bir C programlama modelidir ve büyük bir C projesinin bir grup yararlı kitaplık olarak nasıl organize edileceğini gösterir.

  • C Bulmaca Kitabı - Alan R. Feuer (1998)

  • Standart C Kütüphanesi - PJ Plauger (1992). Tasarım ve kodun neden gösterildiği gibi tasarlandığı hakkında kapsamlı tartışmaların yanı sıra, C89 standart kitaplığının bir uygulamasının tüm kaynak kodunu içerir.

  • 21. Yüzyıl C: C Yeni Okuldan İpuçları - Ben Klemens (2012). C diline ek olarak, kitap gdb, valgrind, autotools ve git'i açıklar. Tarz hakkındaki yorumlar son bölümde bulunur (Bölüm 6 ve sonrası).

  • C - Robert Sedgewick (1997) 'de Algoritmalar . C'de algoritmaları uygulama konusunda gerçek bir kavrayış sağlar. Çok berrak ve net; muhtemelen diğer tüm algoritma kitaplarınızı atmak ve bunu tutmak isteyeceksiniz.

  • C - Kenneth Reek (1997).

  • C - Naveen Toppo ve Hrishikesh Dewan (2013).

  • C Problem Çözme ve Program Tasarımı (6. Baskı) - Jeri R. Hanly ve Elliot B. Koffman (2009).

  • Veri Yapıları - C - Jeffrey Esakov ve Tom Weiss (1989) Kullanarak İleri Bir Yaklaşım .

  • C Unleashed - Richard Heathfield, Lawrence Kirby, vd. (2000). İdeal değil, ancak bu kitapta yazılı problemleri uygulayan ara programcılara değer. Bu, comp.lang.c katkıda bulunanlar tarafından önerilen iyi bir yemek kitabı benzeri yaklaşımdır.

Uzman


Kategorize

  • Essential C (Ücretsiz PDF) - Nick Parlante (2003). Bunun C90 dilini çeşitli noktalarda açıkladığını ( örneğin , tartışmaları //ve değişken bildirimlerin koddaki rastgele noktalara yerleştirilmesini tartışırken ) açıkladığından, dikkatle ele alınmalıdır.

  • C Programlama SSS'leri: Sık Sorulan Sorular - Steve Summit (1995). Bu, daha önce listelenen web sitesinin kitabıdır. C99 veya sonraki standartları kapsamaz.

  • Özetle C - Peter Prinz ve Tony Crawford (2005). C99 için bir referansa ihtiyacınız varsa mükemmel kitap.

  • Fonksiyonel C - Pieter Hartel ve Henk Muller (1997). Eşzamanlılık ve modülerlik göz önünde bulundurularak, düşük seviyeli programlama için çok değerli olan modern uygulamaları öğretir.

  • Programlama Uygulaması - Brian W. Kernighan ve Rob Pike (1999). K&R'ye eşlik edecek çok iyi bir kitap. C ++ ve Java da kullanır.

  • C Tuzaklar ve Tuzaklar A. Koenig (1989). Çok iyi, ancak C stili standart C'den önce geliyor ve bu da bu günlerde daha az tavsiye ediliyor.

    Bazıları 'Tuzaklar ve Tuzaklar'ın bu listeden çıkarılmasını savundu, çünkü bazı insanları hata yapmak için hapsetti; diğerleri ise dahil edilmesini savunmaya devam ediyor. Belki de bir 'uzman' kitap olarak görülmelidir çünkü yayınlandığından beri nelerin değiştiğini anlamak için orta derecede C bilgisi gerektirir.

  • Kendi Lispini Yap - Daniel Holden (2014). C. öğrenmenin eğlenceli bir yolu

  • MISRA-C - Motor Endüstrisi Yazılım Güvenilirliği Derneği tarafından yayınlanan ve sürdürülen endüstri standardı. C89 ve C99'u kapsar.

    Her ne kadar bu bir kitap olmasa da, birçok programcı mümkün olduğunca çok okumayı ve uygulamayı önerir. MISRA-C başlangıçta özellikle güvenlik açısından kritik uygulamalar için kılavuzlar olarak tasarlanmıştır, ancak kararlı, hatasız C kodunun istendiği herhangi bir uygulama alanı için geçerlidir (kim daha az hata istemez?). MISRA-C tüm gömülü endüstride fiili standart haline geliyor ve diğer programlama dallarında bile giderek daha popüler hale geliyor. Standardın en az üç yayını vardır (1998, 2004 ve 2012'nin mevcut sürümü). Ayrıca 2016 tarihli bir MISRA Uyum Yönergeleri belgesi ve MISRA C: 2012 Değişiklik 1 - MISRA C: 2012 için Ek Güvenlik Yönergeleri (Nisan 2016'da yayınlanmıştır) bulunmaktadır.
    MISRA kurallarındaki bazı darlıkların her bağlama uygun olmadığını unutmayın. Örneğin, 4.12 yönergesi "Dinamik bellek ayırma kullanılmayacaktır" ifadesini belirtir. Bu, MISRA kurallarının tasarlandığı gömülü sistemlerde uygundur; her yerde uygun değil. (Örneğin, derleyiciler sembol tabloları gibi şeyler için genellikle dinamik bellek ayırma kullanır ve dinamik bellek ayırma olmadan yapmak zor olabilir, ancak zor olabilir.)

  • ACCU tarafından gözden geçirilmiş, Acemi C (116 başlık) 2007 ve 2008'den Gelişmiş C (76 başlık) hakkında arşivlenmiş listeler . Bunların çoğu artık ana sitede görünmüyor ve konuya göz atamıyorsunuz neyse.


Uyarılar

Herbert Schildt tarafından yazılan kitaplara karşı dikkatli olun . Özellikle, bazı çevrelerde C: Tam Saçmalık olarak bilinen C: Tam Referans'tan (4. Baskı, 2000) uzak durmalısınız .

Ayrıca kitap kullanmayan Let Us C (16 inci Yashwant Kanetkar tarafından Edition'da 2017). Birçok kişi, Turbo C'yi öğreten ve çok eski, yanıltıcı ve yanlış malzemeye sahip eski bir kitap olarak görüyor. Örneğin, sayfa 137 beklenen çıktıyı tartışır ve olması printf("%d %d %d\n", a, ++a, a++)gerektiği gibi tanımlanmamış davranış olarak sınıflandırmaz .

Öğrenin C Zor Yol (2015) Zed Shaw. Karışık eleştiriler içeren bir kitap. Bu kitabın Tim Hentenaar'ın eleştirisi :

Aşağıda ortaya konan görüşlerimi özetlemek için, yazar materyali büyük ölçüde basitleştirilmiş ve yanıltıcı bir şekilde sunar, tüm corpus paketlenmiş bir karışıklıktır ve sunduğu bazı görüş ve analizler sadece yanlıştır. Bu kitabı bir acemi gözüyle görüntülemeye çalıştım, ancak maalesef C'de kod yazma konusunda yılların deneyimine karşı önyargılıyım ya da yazarın ya C'nin kusurlu bir anlayışına sahip olduğu ya da kasıtlı olarak okuyucuyu gerçekten yanlış yönlendirdiği noktaya (kasıtlı veya başka türlü)

"C'yi Zor Yolda Öğrenin", hem programlamayı hem de C öğrenmeyi öğrenen birine tavsiye edebileceğim bir kitap değildir. Zaten başka bir ilgili dilde yetkin bir programcıysanız, C, ama kitabın bölümleri hakkında rezervasyonları var. Jonathan Leffler


demode


Düzeltme tarihinde mutlaka hesaba katılmayan diğer katkıda bulunanlar şunlardır:
Alex Lockwood , Ben Jackson , Bubbles , pençeler , coledot , Dana Robinson , Daniel Holden , Dervin Thunk , dwc , Erci Hou , Garen , haziz , Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas , Lundin , Matt K. , mossplix , Matthieu M. , orta saha , Nietzche-jou , Norman Ramsey , r3st0r3 , kendinden emin , Robert S. Barnes , Steve Summit , Tim Ring , Tony Bai , VMAtm


6
@ PabloBarríaUrenda Uygun olmayan içerik, yazı işaretlenerek giderilmelidir. "İki tıklama uzakta" olsa aptalca bir ifade, bu nedenle büyük olasılıkla bayrak reddedilir. Ve söz konusu bayrağın rahatsız edici olup olmadığı konusundaki tartışmalar da burada olmamalıdır. Bu tür endişeleri bunun yerine meta.stackoverflow.com adresine gönderin .
Lundin

1
"İki tıklama uzakta" hakkında saçma olan nedir?
Pablo Barría Urenda

3
2019 yılı olarak, kitabı <Modern C>okumaya çok değer buldum , çok kompakt ve iyi yazılmış çok c99 ve c11 sözdizimi kullanıyorum. Ve biliyor musun? Bedava !!! En son sürümü buradan pdf olarak indirebilirsiniz: icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf (BTW, yazar gerektiğinde yukarıdaki bağlantıdaki kitabı güncelliyor ve yayınlıyor gibi görünüyor)
Eric Wang

1
Tavsiye edilmemiş olarak düzenlendiği için bir kitap eklemek üzereydim. Belki de neden kaçınılması gerektiğine dair muhatapları göstererek postada görünür olanları bırakın. Belki de tavsiye edilmeyen kitapların ayrı bir bölümü?
Gst

3
Cevabı düzenlemeyi başarısızlıkla denedim (görünüşe göre bir düzenleme yapmadan önce bile ortaya çıkan yanlış biçimlendirme nedeniyle). Her neyse, burada en az iki önerilen kitap "kaçınılması gereken" olarak listelenmiştir: iso-9899.info/wiki/Main_Page#Stuff_that_should_be_avoided . Lütfen "Kendi Lisp'inizi oluşturun" ve "C'yi zor yoldan öğrenin" öğelerini kaldırın ve yukarıdaki bağlantıyı Uyarılar bölümüne ekleyin .
gst
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.