Definitive C Bookガイドとリスト


400

この質問は、コミュニティが管理する質の高い本のリストを収集しようとするものです。 さまざまなスキルレベルを対象としたプログラミング言語。

Cは複雑なプログラミング言語であり、オンラインチュートリアルを読んで外出先で習得することは困難です。多くの場合、包括的な本は言語を学ぶための最良の方法であり、良い本を見つけることが最初のステップです。不適切に書かれた本、さらに重要なことには、重大な技術的エラーを含む本を避けることが重要です。

承認された回答を編集して、質の高い本を追加するよう提案してください。おおよそのスキルレベルと、各本についての短い説明/説明を添えてください。(質問はロックされているため、新しい回答は受け入れられないことに注意してください。単一の回答がリストで維持されています

書籍の選択、品質、見出し、要約、スキルレベル、その他間違っていると思われるものについては、自由に議論してください。ここCコミュニティで満足できると思われる本はリストに残ります。残りは定期的に削除されます。

CおよびC ++ユーザー協会(ACCU)によるレビューがある本の場合、それらのレビューへのリンクを本とともに追加する必要があります。

以下も参照してください。


この質問は、削除された質問の監査2018の一部としてメタで議論されました。コンセンサスは、削除せずに積極的に維持することでした。


31
良い質問ですが、ほとんどの人はK&Rを習得するのに何年もかかります。あなたが思っている以上にそこにあります。本の薄さは欺瞞的です。
dmckee ---元モデレーターの子猫09/07/14

4
Cを初めて使用する場合は、最新のCはANSI Cであり、その標準(1989年)より前のものは非常に古くなっている可能性があることに注意してください。90年代半ば以降に向けて撮影します。
Dana Robinson

7
@Dhaivat K&Rバンドワゴンにジャンプするように注意してください。K&Rは、優れたプログラム設計や優れたプログラミング手法に対応していません。これは、もともと誰もが優れたプログラミング手法を知る前に書かれていたためです。C言語のどの部分が不必要で、さらには危険であるかについては触れられていません。この本はリファレンスマニュアルとして正しくリストされています。最新のプログラミングの教育には使用しないでください。
ランディン

89/90のANSI / ISO標準化の前に書かれたものは、このようなリストに表示されるべきではないことを、私はダナに同意します。また、C99に対応している書籍とそうでない書籍を記載することも検討してください。
ランディン

回答:


492

警告

これは、さまざまな品質のランダムな本のリストです。一部の人々の見解(正当化あり)では、推奨される本のリストではなくなりました。掲載されている書籍の一部には、露骨に不正確な発言が含まれているか、誤った/有害な慣行が含まれています。このような本を知っている人は、この回答を編集して改善することができます。Cの本のリストが大騒ぎになりましたをご覧くださいどうする?、および質問監査2018削除されました

参照(すべてのレベル)

  • Cプログラミング言語(第2版) -Brian W. KernighanおよびDennis M. Ritchie(1988)。Cの発明者によって書かれた、Cの優れた、短いが完全な導入(C99以降のバージョンではなくC90)。その年齢を示す本。

  • C:リファレンスマニュアル(第5版) -Samuel P. HarbisonおよびGuy R. Steele(2002)。Cまでの優れたリファレンスブック。C99まで。これはチュートリアルではなく、おそらく初心者には不向きです。C向けのコンパイラを作成する必要がある場合は、作成者が作成時に作成しなければならなかったので、すばらしいことです。

  • C Pocket Reference(O'Reilly) -Peter PrinzおよびUlla Kirch-Prinz(2002)。

  • comp.lang.c FAQ -Steve Summit。Cに関する多くの質問への回答があるWebサイト。

  • C言語標準のさまざまなバージョンがここにありますドラフトC11標準のオンラインバージョンがあります。

  • 新しいC標準-注釈付き参照(無料PDF)-Derek M. Jones(2009)。参照される「新しい標準」は、C11ではなく古いC99標準です。

  • C99標準の根拠


初心者

中級

  • モダンC —イェンスガステッド(2017 1st Edn; 2020 2nd Edn)初級Cから上級Cまでの5つのレベル(出会い、知人、認識、経験、野心)でCをカバーします。スレッドやアトミックアクセスを含むC11とC17をカバーします。すべてのコンパイラがすべての環境でこれらの機能を認識するわけではありません。

  • Cインターフェイスと実装 -David R. Hanson(1997)。一般的な再利用可能な方法でCのインターフェイスと実装の間の境界を定義する方法に関する情報を提供します。また、リスト、セット、例外、文字列操作、メモリアロケータなど、Cの一般的なメカニズムとデータ構造の実装に適用することで、この原則を示しています。基本的に、Hansonは、Iconlccのビルドの一部として作成したすべてのコードを取り、他の人が自分のプロジェクトで再利用できる形で最高のビットを引き出しました。これは、モダンな設計手法(リスコフのデータ抽象化を含む)を使用した優れた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サンクDWCErci侯GarenhazizヨハンBezemジョナサン・レフラージョシュアパルトギルーカスランディンマットK.モスプリックスマシューM.midorNietzche-jouNorman Ramseyr3st0r3ridthyselfRobert S. BarnesSteve SummitTim RingTony BaiVMAtm


6
@PabloBarríaUrenda不適切なコンテンツは、投稿にフラグを立てることで対処する必要があります。「2回クリックする」というのは馬鹿げた発言なので、フラグはおそらく拒否されます。そして、言及されたフラグが不快であるかどうかについての議論はここにもありません。そのような懸念をmeta.stackoverflow.comに投稿してください
ランディン

1
「2クリック」というのはばかげているのは何ですか。
PabloBarríaUrenda 19

3
2019年、私はこの本<Modern C>を一読する価値があると感じました。c99とc11の構文を多く使用し、非常にコンパクトでよく書かれています。そして、あなたは何を知っていますか?それは無料です !!!最新バージョンはpdfとしてここからダウンロードできます。icube-icps.unistra.fr / img_auth.php / d / db / ModernC.pdf(BTW、著者は必要に応じて上記のリンクで本を更新して公開しているようです)
Eric Wang

1
推奨されていないものとして編集されたことを理解するために、本を追加しようとしていました。なぜそれを避けなければならないのかという理由を挙げて、それらをポストに表示したままにするかもしれません。たぶん、推奨されていない本の別のセクションですか?
gst

3
私は答えを編集することに失敗しました(どうやら私が編集する前でさえポップアウトする誤ったフォーマットのために)。とにかく、少なくとも2冊の推奨書籍が「避けるべき」としてここにリストされています:iso-9899.info/wiki/Main_Page#Stuff_that_should_be_avoided。「Build your own Lisp」と「Learn C the hard way」を削除し、上記のリンクを「警告」セクションに追加してください。
gst
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.