Pertanyaan ini berupaya mengumpulkan daftar buku berkualitas yang dikelola komunitas dic bahasa pemrograman, ditargetkan pada berbagai tingkat keterampilan.
C adalah bahasa pemrograman yang kompleks yang sulit untuk diambil saat bepergian dengan membaca tutorial online. Buku yang komprehensif seringkali merupakan cara terbaik untuk belajar bahasa, dan menemukan buku yang bagus adalah langkah pertama. Penting untuk menghindari buku yang ditulis dengan buruk, dan yang lebih penting, buku yang mengandung kesalahan teknis serius.
Harap sarankan pengeditan untuk jawaban yang diterima untuk menambah buku berkualitas, dengan perkiraan tingkat keterampilan dan uraian singkat / uraian tentang masing-masing buku. ( Perhatikan bahwa pertanyaan terkunci, sehingga tidak ada jawaban baru akan diterima. Satu jawaban dipertahankan dengan daftar )
Jangan ragu memperdebatkan pilihan, kualitas, judul, ringkasan, tingkat keterampilan, dan hal lain yang Anda lihat salah. Buku-buku yang dianggap memuaskan oleh komunitas C di sini akan tetap ada dalam daftar; sisanya akan dihapus secara teratur.
Untuk buku yang memiliki ulasan oleh Asosiasi Pengguna C dan C ++ (ACCU), tautan ke ulasan tersebut harus ditambahkan bersama dengan buku.
Lihat juga:
- Sumber daya terkait C lainnya di c beri tag wiki
- Daftar serupa untuk c ++: Buku dan Daftar Buku Definitif C ++
Pertanyaan ini dibahas di Meta sebagai bagian dari Audit Pertanyaan Terhapus 2018 .
Konsensus adalah untuk membuatnya tidak terhapus dan dipelihara secara aktif.
Jawaban:
Peringatan
Ini adalah daftar buku acak dengan kualitas beragam. Dalam pandangan beberapa orang (dengan beberapa pembenaran), ini bukan lagi daftar buku yang direkomendasikan. Beberapa buku yang tercantum berisi pernyataan yang salah atau mengajarkan praktik yang salah / berbahaya. Orang yang mengetahui buku semacam itu dapat mengedit jawaban ini untuk membantu memperbaikinya. Lihat Daftar buku C menjadi berantakan. Apa hubungannya dengan itu? , dan audit pertanyaan dihapus 2018 .
Referensi (Semua Tingkat)
Bahasa Pemrograman C (2nd Edition) - Brian W. Kernighan dan Dennis M. Ritchie (1988). Masih merupakan pengantar C yang baik, singkat namun lengkap untuk C (C90, bukan C99 atau versi yang lebih baru), ditulis oleh penemu C. Namun, bahasanya telah berubah dan gaya C yang baik telah berkembang dalam 25 tahun terakhir, dan ada bagian dari buku yang menunjukkan umurnya.
C: A Reference Manual (Edisi 5) - Samuel P. Harbison dan Guy R. Steele (2002). Buku referensi yang sangat baik tentang C, hingga dan termasuk C99. Ini bukan tutorial, dan mungkin tidak cocok untuk pemula. Sangat bagus jika Anda perlu menulis kompiler untuk C, seperti yang harus dilakukan penulis ketika mereka mulai.
Referensi Saku C (O'Reilly) - Peter Prinz dan Ulla Kirch-Prinz (2002).
FAQ comp.lang.c - Steve Summit. Situs web dengan jawaban atas banyak pertanyaan tentang C.
Berbagai versi standar bahasa C dapat ditemukan di sini . Ada versi online standar draft C11 .
Standar C baru - referensi beranotasi (Gratis PDF) - Derek M. Jones (2009). "Standar baru" yang dimaksud adalah standar C99 lama dan bukan C11.
Dasar Pemikiran untuk Standar C99 .
Pemula
C Programming: A Modern Approach (2nd Edition) - KN King (2008). Buku yang bagus untuk belajar C.
Pemrograman dalam C (Edisi ke-4) - Stephen Kochan (2014). Pengantar dan tutorial umum yang bagus.
C Primer Plus (Edisi ke-5) - Stephen Prata (2004)
Buku tentang C - Al Kelley / Ira Pohl (1998).
The C Book (Gratis Online) - Mike Banahan, Declan Brady, dan Mark Doran (1991).
C: Cara Memprogram (Edisi ke-8) - Paul Deitel dan Harvey M. Deitel (2015). Banyak tips bagus dan praktik terbaik untuk pemula. Indeks ini sangat baik dan berfungsi sebagai referensi yang layak (tidak sepenuhnya lengkap, dan sangat dangkal).
Kepala Pertama C - David Griffiths dan Dawn Griffiths (2012).
Beginning C (Edisi ke-5) - Ivor Horton (2013). Penjelasan pointer yang sangat bagus, menggunakan banyak program kecil namun lengkap.
Sams Teach Yourself C dalam 21 Days - Bradley L. Jones dan Peter Aitken (2002). Barang-barang pengantar yang sangat bagus.
Pemrograman Aplikasi dalam ANSI C - Richard Johnsonbaugh dan Martin Kalin (1996).
Menengah
Modern C - Jens Gustedt (2017 1st Edn; 2020 2nd Edn). Mencakup C dalam 5 level (perjumpaan, kenalan, kognisi, pengalaman, ambisi) dari awal C hingga lanjutan C. Ini mencakup C11 dan C17, termasuk utas dan akses atom, yang dilakukan beberapa buku lain. Tidak semua kompiler mengenali fitur-fitur ini di semua lingkungan.
C Antarmuka dan Implementasi - David R. Hanson (1997). Memberikan informasi tentang cara menentukan batas antara antarmuka dan implementasi dalam C secara umum dan dapat digunakan kembali. Ini juga menunjukkan prinsip ini dengan menerapkannya pada implementasi mekanisme umum dan struktur data dalam C, seperti daftar, set, pengecualian, manipulasi string, pengalokasi memori, dan banyak lagi. Pada dasarnya, Hanson mengambil semua kode yang dia tulis sebagai bagian dari membangun Icon dan lcc dan mengeluarkan bit-bit terbaik dalam bentuk yang dapat digunakan kembali oleh orang lain untuk proyek mereka sendiri. Ini adalah model pemrograman C yang baik menggunakan teknik desain modern (termasuk abstraksi data Liskov), menunjukkan bagaimana mengatur proyek C besar sebagai sekelompok perpustakaan yang bermanfaat.
The C Puzzle Book - Alan R. Feuer (1998)
Perpustakaan C Standar - PJ Plauger (1992). Ini berisi kode sumber lengkap untuk implementasi perpustakaan standar C89, bersama dengan diskusi yang luas tentang desain dan mengapa kode dirancang seperti yang ditunjukkan.
21st Century C: C Tips dari New School - Ben Klemens (2012). Selain bahasa C, buku ini menjelaskan gdb, valgrind, autotools, dan git. Komentar tentang gaya ditemukan di bagian terakhir (Bab 6 dan seterusnya).
Algoritma dalam C - Robert Sedgewick (1997). Memberi Anda pemahaman nyata tentang penerapan algoritma dalam C. Sangat jelas dan jelas; mungkin akan membuat Anda ingin membuang semua buku algoritma Anda yang lain dan menyimpan yang ini.
Pointers on C - Kenneth Reek (1997).
Pointer di C - Naveen Toppo dan Hrishikesh Dewan (2013).
Pemecahan Masalah dan Desain Program dalam C (Edisi ke-6) - Jeri R. Hanly dan Elliot B. Koffman (2009).
Struktur Data - Suatu Pendekatan Tingkat Lanjut Menggunakan C - Jeffrey Esakov dan Tom Weiss (1989).
C Unleashed - Richard Heathfield, Lawrence Kirby, dkk. (2000). Tidak ideal, tetapi para programmer menengah perlu mempraktikkan masalah yang ditulis dalam buku ini. Ini adalah pendekatan seperti buku resep yang disarankan oleh kontributor comp.lang.c.
Ahli
Pemrograman C Pakar: Rahasia C Dalam - Peter van der Linden (1994). Banyak informasi menarik dan kisah perang dari tim penyusun Sun, tetapi sedikit ketinggalan jaman.
Pemrograman C Lanjut dengan Contoh - John W. Perry (1998).
Pemrograman Lanjutan di Lingkungan UNIX - Richard W. Stevens dan Stephen A. Rago (2013). Deskripsi lengkap tentang cara menggunakan API Unix dari kode C, tetapi tidak begitu banyak tentang mekanisme pengkodean C.
Tidak Dikategorikan
Essential C (PDF gratis) - Nick Parlante (2003). Perhatikan bahwa ini menjelaskan bahasa C90 di beberapa titik ( misalnya , dalam membahas
//
komentar dan penempatan deklarasi variabel pada titik-titik sewenang-wenang dalam kode), sehingga harus diperlakukan dengan hati-hati.Tanya Jawab Pemrograman C: Pertanyaan yang Sering Diajukan - Steve Summit (1995). Ini adalah buku situs web yang tercantum sebelumnya. Itu tidak mencakup C99 atau standar selanjutnya.
C in a Nutshell - Peter Prinz dan Tony Crawford (2005). Buku bagus jika Anda membutuhkan referensi untuk C99.
Fungsional C - Pieter Hartel dan Henk Muller (1997). Mengajar praktik-praktik modern yang sangat berharga untuk pemrograman tingkat rendah, dengan pertimbangan konkurensi dan modularitas.
Praktek Pemrograman - Brian W. Kernighan dan Rob Pike (1999). Buku yang sangat bagus untuk menemani K&R. Ini menggunakan C ++ dan Java juga.
C Traps and Pitfalls oleh A. Koenig (1989). Sangat bagus, tapi gaya C standar tanggal C, yang membuatnya kurang direkomendasikan hari ini.
Beberapa berpendapat untuk menghapus 'Jebakan dan Jebakan' dari daftar ini karena telah menjebak beberapa orang untuk membuat kesalahan; yang lain terus berdebat untuk dimasukkan. Mungkin buku itu harus dianggap sebagai buku 'ahli' karena ia membutuhkan pengetahuan C yang cukup luas untuk memahami apa yang berubah sejak buku itu diterbitkan.
Build Your Own Lisp - Daniel Holden (2014). Cara yang menyenangkan untuk belajar C.
MISRA-C - standar industri yang diterbitkan dan dikelola oleh Asosiasi Keandalan Perangkat Lunak Industri Motor. Meliputi C89 dan C99.
Meskipun ini bukan buku seperti itu, banyak programmer merekomendasikan membaca dan mengimplementasikannya sebanyak mungkin. MISRA-C pada awalnya dimaksudkan sebagai pedoman untuk aplikasi yang sangat kritis terhadap keselamatan, tetapi ini berlaku untuk area aplikasi mana pun yang diinginkan, kode C bebas bug yang stabil (siapa yang tidak menginginkan lebih sedikit bug?). MISRA-C menjadi standar de facto di seluruh industri tertanam dan semakin populer bahkan di cabang pemrograman lain. Ada (setidaknya) tiga publikasi standar (1998, 2004, dan versi saat ini dari 2012). Ada juga dokumen Pedoman Kepatuhan MISRA mulai 2016, dan MISRA C: 2012 Amendemen 1 - Panduan Keamanan Tambahan untuk MISRA C: 2012 (diterbitkan pada April 2016).
Perhatikan bahwa beberapa penyempitan dalam aturan MISRA tidak sesuai untuk setiap konteks. Misalnya, arahan 4.12 menyatakan "Alokasi memori dinamis tidak boleh digunakan". Ini sesuai dalam sistem tertanam yang dirancang aturan MISRA; itu tidak pantas di mana-mana. (Compiler, misalnya, umumnya menggunakan alokasi memori dinamis untuk hal-hal seperti tabel simbol, dan melakukan tanpa alokasi memori dinamis akan sulit, jika tidak masuk akal.)
Daftar arsip buku-buku yang diulas oleh ACCU tentang Beginner's C (116 judul) dari 2007 dan Advanced C (76 judul) dari 2008. Sebagian besar dari ini tidak terlihat berada di situs utama lagi, dan Anda tidak dapat menjelajahinya dengan subjek bagaimanapun.
Peringatan
Waspadalah terhadap buku-buku yang ditulis oleh Herbert Schildt . Secara khusus, Anda harus menjauh dari C: Referensi Lengkap (Edisi ke-4, 2000), yang dikenal di beberapa kalangan sebagai C: Omong kosong.
Juga tidak menggunakan buku Let Us C (16 th Edition, 2017) oleh Yashwant Kanetkar. Banyak orang melihatnya sebagai buku usang yang mengajarkan Turbo C dan memiliki banyak materi yang usang, menyesatkan, dan salah. Misalnya, halaman 137 membahas output yang diharapkan dari
printf("%d %d %d\n", a, ++a, a++)
dan tidak mengategorikannya sebagai perilaku yang tidak ditentukan sebagaimana mestinya.Learn C The Hard Way (2015) oleh Zed Shaw. Buku dengan ulasan beragam. Sebuah kritik terhadap buku ini oleh Tim Hentenaar:
"Learn C The Hard Way" bukan buku yang bisa saya rekomendasikan kepada seseorang yang sedang belajar untuk memprogram dan belajar C. Jika Anda sudah menjadi programmer yang kompeten dalam beberapa bahasa terkait lainnya, maka buku itu merupakan eksposisi yang menarik dan tidak biasa pada C, meskipun saya punya keraguan tentang bagian-bagian buku ini. Jonathan Leffler
Ketinggalan jaman
Kontributor lain , belum tentu dikreditkan dalam sejarah revisi, termasuk:
Alex Lockwood , Ben Jackson , Bubbles , cakar , coledot , Dana Robinson , Daniel Holden , Dervin dunk , DWC , Erci Hou , Garen , Haziz , Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas , Lundin , Matt K. , mossplix , Matthieu M. , midor , Nietzche-jou , Norman Ramsey , r3st0r3 , ridthyself , Robert S. Barnes , Steve Summit , Cincin Tim , Tony Bai , VMAtm
sumber
<Modern C>
sangat layak dibaca, menggunakan banyak sintaks c99 & c11, sangat ringkas & ditulis dengan baik. Dan tahukah Anda? Gratis !!! Anda dapat mengunduh versi terbaru sebagai pdf di sini: icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf (BTW, tampaknya penulis memperbarui & menerbitkan buku di tautan di atas sesuai kebutuhan)