警告
これは、さまざまな品質のランダムな本のリストです。一部の人々の見解(正当化あり)では、推奨される本のリストではなくなりました。掲載されている書籍の一部には、露骨に不正確な発言が含まれているか、誤った/有害な慣行が含まれています。このような本を知っている人は、この回答を編集して改善することができます。Cの本のリストが大騒ぎになりましたをご覧ください。どうする?、および質問監査2018も削除されました。
参照(すべてのレベル)
初心者
中級
モダンC —イェンスガステッド(2017 1st Edn; 2020 2nd Edn)初級Cから上級Cまでの5つのレベル(出会い、知人、認識、経験、野心)でCをカバーします。スレッドやアトミックアクセスを含むC11とC17をカバーします。すべてのコンパイラがすべての環境でこれらの機能を認識するわけではありません。
Cインターフェイスと実装 -David R. Hanson(1997)。一般的な再利用可能な方法でCのインターフェイスと実装の間の境界を定義する方法に関する情報を提供します。また、リスト、セット、例外、文字列操作、メモリアロケータなど、Cの一般的なメカニズムとデータ構造の実装に適用することで、この原則を示しています。基本的に、Hansonは、Iconとlccのビルドの一部として作成したすべてのコードを取り、他の人が自分のプロジェクトで再利用できる形で最高のビットを引き出しました。これは、モダンな設計手法(リスコフのデータ抽象化を含む)を使用した優れたCプログラミングのモデルであり、大きなCプロジェクトを一連の便利なライブラリとして編成する方法を示しています。
Cパズルブック -アランR.フォイヤー(1998)
標準Cライブラリ -PJ Plauger(1992)。これには、C89標準ライブラリの実装への完全なソースコードが含まれ、設計と、コードが示されているように設計されている理由に関する広範な議論が含まれています。
21世紀C:新しい学校からのCのヒント -Ben Klemens(2012)。C言語に加えて、本はgdb、valgrind、autotools、およびgitを説明しています。スタイルに関するコメントは、最後の部分(第6章以降)にあります。
Cのアルゴリズム -Robert Sedgewick(1997)。Cでのアルゴリズムの実装を実際に把握できます。非常に明快で明確です。おそらく、他のすべてのアルゴリズムの本を捨てて、これを保持したいと思うでしょう。
Pointers on C-ケネス・リーク(1997)。
Cのポインター -Naveen ToppoおよびHrishikesh Dewan(2013)。
Cでの問題解決とプログラム設計(第6版) -Jeri R. HanlyおよびElliot B. Koffman(2009)。
データ構造-Cを使用した高度なアプローチ -Jeffrey EsakovおよびTom Weiss(1989)。
解き放たれたC-リチャード・ヒースフィールド、ローレンス・カービー、他 (2000)。理想的ではありませんが、この本で書かれている問題を実践する中級プログラマに価値があります。これはcomp.lang.cの貢献者が提案する料理本のような良いアプローチです。
専門家
未分類
Essential C(無料PDF)-Nick Parlante(2003)。これは、いくつかの点でC90言語を説明していることに注意してください(たとえば、//
コード内の任意の位置でのコメントと変数宣言の配置についての議論)。したがって、注意して扱う必要があります。
CプログラミングFAQ:よくある質問 -Steve Summit(1995)。これは、前にリストしたWebサイトの本です。C99以降の規格は対象外です。
C in a Nutshell -Peter Prinz and Tony Crawford(2005)。C99のリファレンスが必要な場合は、優れた本です。
ファンクショナルC -Pieter HartelおよびHenk Muller(1997)。並行性とモジュール性を念頭に置いて、低レベルのプログラミングに非常に貴重な最新のプラクティスを教えます。
プログラミングの実践 -ブライアンW.カーニハンとロブパイク(1999)。K&Rに同行するのにとても良い本です。C ++とJavaも使用しています。
A. Koenig(1989)によるCの罠と落とし穴。非常に良いですが、Cスタイルは標準Cよりも古いため、最近はあまりお勧めできません。
一部の人々は間違いを犯すことになるので、このリストから「罠と落とし穴」を削除することを主張した人もいます。他のものはその包含について主張し続けます。おそらく、それが出版されてから何が変更されたかを理解するためにCについての適度に広範な知識を必要とするので、それは「専門家」の本と見なされるべきです。
独自のLispを構築する — Daniel Holden(2014)。Cを楽しく学ぶ方法
MISRA-C-自動車業界ソフトウェア信頼性協会によって発行および維持されている業界標準。C89およびC99をカバーしています。
これ自体は本ではありませんが、多くのプログラマーは、できるだけ多くの本を読んで実装することを推奨しています。MISRA-Cはもともと、特に安全性が重要なアプリケーションのガイドラインとして意図されていましたが、安定したバグのないCコードが望まれるアプリケーションのすべての領域に適用されます(バグを減らしたくない人はいますか?)。MISRA-Cは、組み込み業界全体で事実上の標準になりつつあり、他のプログラミングブランチでも人気が高まっています。この規格には(少なくとも)3つの出版物があります(1998年、2004年、および2012年の最新バージョン)。2016年のMISRAコンプライアンスガイドラインドキュメント、およびMISRA C:2012改訂1 — MISRA C:2012の追加のセキュリティガイドライン(2016年4月に発行)もあります。
MISRAルールの一部の制限は、すべてのコンテキストに適切ではないことに注意してください。たとえば、指令4.12は「動的メモリ割り当ては使用してはならない」と述べています。これは、MISRAルールが設計されている組み込みシステムに適しています。それはどこでも適切ではありません。(たとえば、コンパイラは通常、シンボルテーブルのようなものに動的メモリ割り当てを使用します。動的メモリ割り当てなしで行うことは、途方もないものでなくても困難です。)
2007年のBeginner's C(116タイトル)と2008年のAdvanced C(76タイトル)に関するACCUレビュー済み書籍のアーカイブリスト。これらのほとんどはメインサイトにないようで、件名で閲覧することはできません。とにかく。
警告
ハーバートシルトが書いた本に注意してください。特に、C:The Complete Reference(4th Edition、2000)から離れてください。これは、一部のサークルではC:The Complete Nonsenseとして知られています。
また、Yashwant Kanetkarによる本「Let Us C(16 th Edition、2017)」も使用しないでください。多くの人々はそれをTurbo Cを教える時代遅れの本とみなし、多くの時代遅れで誤解を招くそして不正確な資料を持っています。たとえば、137ページでは、からの予想される出力について説明し、予期printf("%d %d %d\n", a, ++a, a++)
しない動作として未定義の動作として分類していません。
Zed ShawによるC The Hard Way(2015)を学んでください。混合レビューの本。
ティム・ヘンテナーによるこの本の批評:
以下に示す私の見解を要約すると、著者は非常に単純化された誤解を招くような方法で資料を提示し、コーパス全体はまとまりのない混乱であり、彼が提供する意見や分析の一部は明らかに間違っています。私は初心者の目を通してこの本を読もうとしましたが、残念なことに、Cでコードを書いた長年の経験に偏っています。著者にCの理解に欠陥があるか、彼が故意に過度に単純化しているのは明らかです。彼が実際に読者を誤解させているポイント(意図的またはその他)。
「Learn C The Hard Way」は、プログラムの学習とCの学習の両方をしている人におすすめできる本ではありません。すでに他の関連言語の有能なプログラマーである場合は、興味深く珍しい説明を表しています。 C、本の一部について予約があります。 ジョナサン・レフラー
時代遅れ
その他の貢献者は必ずしも改訂履歴に入金ない、が含まれる:
アレックス・ロックウッド、
ベン・ジャクソン、
バブル、
爪、
coledot、
ダナ・ロビンソン、
ダニエル・ホールデン、
Dervinサンク、
DWC、
Erci侯、
Garen、
haziz、
ヨハンBezem、
ジョナサン・レフラー、
ジョシュアパルトギ、
ルーカス、
ランディン、
マットK.、
モスプリックス、
マシューM.、
midor、
Nietzche-jou、
Norman Ramsey、
r3st0r3、
ridthyself、
Robert S. Barnes、
Steve Summit、
Tim Ring、
Tony Bai、
VMAtm