C言語は、汎用的、手続き的、移植可能な高レベルのプログラミング言語であり、最も人気があり影響力のある言語の1つである。 簡単なコンパイラでコンパイルでき、メモリへの低レベルのアクセスを提供し、機械命令に効率的にマッピングする言語構造を提供し、最小限のランタイムサポートを必要とするように設計されています。 多くのプログラミング言語が C 言語に多大な恩義を感じており、プログラミング界の共通言語のような存在になっています。
C言語は理解するのがかなり簡単で、プログラマーは明確で簡単で論理的な方法でプログラムを編成することができる。 非常に柔軟で実用的、かつコンパクトな言語であり、読みやすい構文も兼ね備えている。 C言語で書かれたコードは、コンピュータの低レベルの設備に簡単にアクセスでき、高速に実行される。 コンパイラ指令により、異なるアーキテクチャ用にコンパイルされたプログラムの単一バージョンを作成することが可能です。
C言語は自由を意味します。
C言語は自由を意味します。したがって、自由を体現する本でC言語を学ぶことは理にかなっています。
1. The C Book by Mike Banahan, Declan Brady and Mark Doran
The C Book はすでに最新の高レベル手続き型プログラミング言語を使ってある程度の経験があるプログラマ向けに設計されています。
文、変数、条件実行、配列、手続き(またはサブルーチン)などをすでに理解しているはずです。
この本は、C言語特有の事柄に集中しています。
本書は、C言語特有のものに焦点を当てており、特にC言語の使われ方に焦点が当てられている。
各章の内容:
- C言語入門
- 変数と算術 – キーワードと識別子、変数の宣言、実数型、整数型、式と算術、定数など、C言語の基礎的な部分を紹介
- Control of Flowと論理式 – これまで紹介してこなかった文も含め、CプログラムにおいてControl of Flow文がどのように使用されるか様々な方法を見ている。 流れの制御、より多くの論理式、奇妙な演算子
- 関数 – 関数の種類、再帰と引数渡し、リンク
- 配列とポインタ – 配列、ポインタ、文字の処理、sizeofとストレージ割り当て、関数へのポインタ、ポインタに関わる式、配列を紹介します。 & 演算子と関数宣言
- 構造化データ型 – 構造体、共用体、ビットフィールド、列挙型、修飾子と派生型、初期化
- プリプロセッサ – プリプロセッサの動作方法、ディレクティブ
- C の専門分野 – 宣言、定義、アクセス性、型定義、型付き、型付け。 const と volatile、シーケンスポイント
- ライブラリ – 診断、文字処理、ローカライズ、リミット、数学関数、非ローカルジャンプ、信号処理、可変数の引数、入出力、書式付き I/O 、文字 I/O 、非書式付き I/O 、ランダムアクセス関数、一般ユーティリティ、文字列処理
- C による完全なプログラム – すべてをまとめる、main への引数、プログラムの引数の解釈、パターンマッチングプログラム、そしてより野心的な例
。 そして日付と時間
著者は、著者とその著作権への謝辞がある限り、読者が本で何をしたいかを許可してくれます。 Mike Banahan が確認したところでは、この本は事実上 Creative Commons License の下にあります。
この本を読む
2. C Elements of Style by Steve Oualline
この本は、読者に優れたプログラミングスタイルをコードに組み込む方法を示そうとしています。
最終的な目標は、よく設計され、よく書かれたコードを構築することです。それは、コンピュータを有効に利用するだけでなく、人間が理解できるように慎重に組み立てられたコメントも含んでいます。
内部では、コメントの書き方、プログラムの見出し、変数名の決定、ステートメントのフォーマット、ステートメントの詳細、プリプロセッサの書き方、ディレクトリの整理、および makefile の作成に関するガイドラインが記載されています。
本書は Creative Commons License の下で出版されています。 An Introduction to GCC by Brian Gough
本書を読めば、プログラムのコンパイル方法、最適化のための基本的なコンパイラオプションの使い方、デバッグの方法がわかるでしょう。
本書では、コンパイラ自体の使い方も説明されています。 メーリングリストに投稿された質問の長年の観察に基づき、読者を GCC の重要なオプションにまっすぐ導きます。
章立て:
- はじめに
- Cプログラムのコンパイル – gccを使用してCプログラムをコンパイルする方法を説明します。 プログラムは単一のソースファイルから、あるいは複数のソースファイルからコンパイルすることができ、 システムライブラリやヘッダーファイルを使用することができます
- コンパイルオプション – GCC で利用できる他のよく使われるコンパイラオプションについて説明します。 これらのオプションは、ライブラリやインクルードファイルを見つけるために使用される検索パス、追加の警告と診断の使用、プリプロセッサマクロと C 言語方言などの機能を制御します
- Using the preprocessor – GNU C プリプロセッサ cpp の使用について説明しており、GCC パッケージに含まれるものです。 プリプロセッサは、コンパイルされる前にソースファイル中のマクロを展開します。 GCC が C または C++ プログラムを処理するときはいつでも自動的に呼び出されます
- デバッグのためのコンパイル – オブジェクトファイルと実行ファイルに追加のデバッグ情報を格納するための -g debug オプションを提供します。 このデバッグ情報により、エラーが特定のマシン命令から元のソースファイル内の対応する行まで遡れるようになります
- 最適化でコンパイルする – GCC は最適化コンパイラーです。 生成する実行ファイルの速度を向上させたり、サイズを小さくしたりすることを目的とした幅広いオプションを提供します
- C++ プログラムのコンパイル – C++ で書かれたプログラムをコンパイルするために GCC を使用する方法、およびその言語に固有のコマンドライン オプションについて説明します
- プラットフォーム固有のオプション – 共通プラットフォーム向けに利用できるオプションのいくつかについで説明します。 Intel と AMD x86 オプション、x86 拡張、x86 64 ビットプロセッサ、DEC Alpha オプション、SPARC オプション、POWER/PowerPC オプション、マルチアーキテクチャのサポート、浮動小数点問題
- トラブルシューティング – GCC はコンパイル時の問題のトラブルシューティングを支援するいくつかのヘルプと診断オプションがあります
- Compiler-related tools – GCC と一緒に使うと便利ないくつかのツールについて記述してあります。 これらには、ライブラリを作成するための GNU archiver ar、そして、GNU プロファイリングとカバレッジテストプログラム、gprof と gcov があります
- コンパイラの動作方法 – GCC がソースファイルを実行可能ファイルに変換する方法をより詳細に記述しています。 コンパイルは GNU コンパイラ自身 (gcc もしくは g++ フロントエンドを通して)、GNU アセンブラ as、そして GNU リンカ ld を含むいくつかのツールを含む多段階のプロセスです。 コンパイルプロセスで使用されるツールの完全なセットは、ツールチェーンと呼ばれます
- コンパイル済みファイルの検査 – 実行可能ファイルおよびオブジェクトファイルの内容を検査するためのいくつかの便利なツールについて説明しています
- 共通のエラーメッセージ – gcc および g++ が生成する最も頻繁なエラーおよび警告メッセージについて説明します。 それぞれのケースには、原因の説明、例、可能な解決策の提案が添えられています
- 助けを求める – 読者がこの紹介でカバーされていない問題に遭遇した場合、 GCC と言語関連のトピックについてより詳細に説明した参考マニュアルがいくつかあります
本書は GNU Free Documentation License で発行されています
本を読む
次ページへどうぞ。 2ページ目 – C言語入門 & GUIとその他の書籍
この記事のページです。
Page 1 – The C Book and more books
Page 2 – An Introduction to C & GUI Programming and more books
Page 3 – The GNU C Reference Manual and more books
Page 4 – Essential C and more books
Page 5 – Beej’s Guide to Network Programming and more books
このシリーズすべての書籍が含まれています。
Free Programming Books | |
---|---|
Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
C | General-purpose, procedural, portable, high-level language |
Python | General-purpose, structured, powerful language |
C++ | General-purpose, portable, free-form, multi-paradigm language |
C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
JavaScript | Interpreted, prototype-based, scripting language |
PHP | PHP has been at the helm of the web for many years |
HTML | HyperText Markup Language |
SQL | Access and manipulate data held in a relational database management system |
Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
Assembly | As close to writing machine code without writing in pure hexadecimal |
Swift | Powerful and intuitive general-purpose programming language |
Groovy | Powerful, optionally typed and dynamic language |
Go | Compiled, statically typed programming language |
Pascal | Imperative and procedural language designed in the late 1960s |
Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
R | De facto standard among statisticians and data analysts |
COBOL | Common Business-Oriented Language |
Scala | Modern, object-functional, multi-paradigm, Java-based language |
Fortran | The first high-level language, using the first compiler |
Scratch | Visual programming language designed for 8-16 year-old children |
Lua | Designed as an embeddable scripting language |
Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
Rust | Ideal for systems, embedded, and other performance critical code |
Lisp | Unique features – excellent to study programming constructs |
Ada | ALGOL-like programming language, extended from Pascal and other languages |
Haskell | Standardized, general-purpose, polymorphically, statically typed language |
Scheme | A general-purpose, functional language descended from Lisp and Algol |
Prolog | A general purpose, declarative, logic programming language |
Forth | Imperative stack-based programming language |
Clojure | Dialect of the Lisp programming language |
Julia | High-level, high-performance language for technical computing |
Awk | Versatile language designed for pattern scanning and processing language |
CoffeeScript | Transcompiles into JavaScript inspired by Ruby, Python and Haskell |
BASIC | Beginner’s All-purpose Symbolic Instruction Code |
Erlang | General-purpose, concurrent, declarative, functional language |
VimL | Powerful scripting language of the Vim editor |
OCaml | The main implementation of the Caml language |
ECMAScript | Best known as the language embedded in web browsers |
Bash | Shell and command language; popular both as a shell and a scripting language |
LaTeX | Professional document preparation system and document markup language |
TeX | Markup and programming language – create professional quality typeset text |
Arduino | Inexpensive, flexible, open source microcontroller platform |
TypeScript | Strict syntactical superset of JavaScript adding optional static typing |
Elixir | Relatively new functional language running on the Erlang virtual machine |
F# | Uses functional, imperative, and object-oriented programming methods |
Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
Factor | Dynamic stack-based programming language |
Eiffel | Object-oriented language designed by Bertrand Meyer |
Agda | Dependently typed functional language based on intuitionistic Type Theory |
Icon | Wide variety of features for processing and presenting symbolic data |
XML | Rules for defining semantic tags describing structure ad meaning |
Vala | Object-oriented language, syntactically similar to C# |
Standard ML | General-purpose functional language characterized as “Lisp with types” |
D | General-purpose systems programming language with a C-like syntax |
Dart | Client-optimized language for fast apps on multiple platforms |
Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
Kotlin | More modern version of Java |
Objective-C | Object-oriented language that adds Smalltalk-style messaging to C |
PureScript | Small strongly, statically typed language compiling to JavaScript |
ClojureScript | Compiler for Clojure that targets JavaScript |
VHDL | Hardware description language used in electronic design automation |