C ist eine universelle, prozedurale, portable Hochsprachenprogrammierung, die zu den beliebtesten und einflussreichsten Sprachen gehört. Sie wurde entwickelt, um mit einem einfachen Compiler kompiliert zu werden, um einen Low-Level-Zugriff auf den Speicher zu ermöglichen, um Sprachkonstrukte bereitzustellen, die sich effizient auf Maschinenbefehle abbilden lassen, und um eine minimale Laufzeitunterstützung zu erfordern. Viele Programmiersprachen haben C viel zu verdanken. Es ist so etwas wie die Lingua franca in der Welt der Programmierung geworden.
C ist relativ einfach zu verstehen. Es erlaubt dem Programmierer, Programme auf eine klare, einfache und logische Weise zu organisieren. Es ist eine sehr flexible, praktische und kompakte Sprache mit einer leicht zu lesenden Syntax. In C geschriebener Code läuft schnell, mit einfachem Zugang zu den Low-Level-Einrichtungen des Computers. Compiler-Direktiven machen es möglich, eine einzige Version eines Programms für verschiedene Architekturen zu kompilieren.
C steht für Freiheit. Deshalb ist es sinnvoll, C mit Büchern zu lernen, die ebenfalls Freiheit verkörpern. Werfen Sie einen Blick auf meine Auswahl und sehen Sie, ob eines davon Sie anspricht.
1. Das C-Buch von Mike Banahan, Declan Brady und Mark Doran
Das C-Buch richtet sich an Programmierer, die bereits einige Erfahrung mit einer modernen prozeduralen Hochsprache haben.
Sie sollten bereits mit Anweisungen, Variablen, bedingter Ausführung, Arrays, Prozeduren (oder Unterprogrammen) usw. vertraut sein.
Das Buch konzentriert sich auf die Besonderheiten von C. Vor allem die Art und Weise, wie C verwendet wird, steht im Mittelpunkt. Das Buch ist sowohl informativ als auch gut zu lesen.
Die Kapitel umfassen:
- Eine Einführung in C
- Variablen und Arithmetik – führt in einige der Grundlagen von C ein, einschließlich Schlüsselwörter und Bezeichner, Deklaration von Variablen, reelle Typen, ganzzahlige Typen, Ausdrücke und Arithmetik sowie Konstanten
- Flusskontrolle und logische Ausdrücke – betrachtet die verschiedenen Möglichkeiten, wie die Flusskontrolle-Anweisungen in einem C-Programm verwendet werden können, einschließlich einiger Anweisungen, die bisher noch nicht vorgestellt wurden. Flusskontrolle, weitere logische Ausdrücke und seltsame Operatoren
- Funktionen – die Art der Funktionen, Rekursion und Argumentübergabe und Verknüpfung
- Arrays und Zeiger – Arrays, Zeiger, Zeichenbehandlung, sizeof und Speicherzuweisung, Zeiger auf Funktionen, Ausdrücke mit Zeigern, Arrays, der &Operator und Funktionsdeklarationen
- Strukturierte Datentypen – Strukturen, Unions, Bitfelder, Enums, Qualifier und abgeleitete Typen, und Initialisierung
- Der Präprozessor – wie der Präprozessor funktioniert, und Direktiven
- Spezialisierte Bereiche von C – Deklarationen, Definitionen und Zugänglichkeit, typedef, const und volatile, und Sequenzpunkte
- Bibliotheken – Diagnose, Zeichenbehandlung, Lokalisierung, Grenzen, mathematische Funktionen, nicht-lokale Sprünge, Signalbehandlung, variable Anzahl von Argumenten, Ein- und Ausgabe, formatierte E/A, Zeichen-E/A, unformatierte E/A, Funktionen mit wahlfreiem Zugriff, allgemeine Hilfsprogramme, Stringbehandlung, und Datum und Uhrzeit
- Complete Programs in C – alles zusammen, Argumente für main, Interpretation von Programmargumenten, ein Mustervergleichsprogramm und ein anspruchsvolleres Beispiel
Die Autoren geben dem Leser die Erlaubnis, mit dem Buch zu machen, was er will, vorausgesetzt, die Autoren und ihr Copyright werden anerkannt. Mike Banahan hat bestätigt, dass das Buch tatsächlich unter der Creative Commons License steht.
Lesen Sie das Buch
2. C Elements of Style von Steve Oualline
C Elements of Style ist ein nützlicher Leitfaden, der die Grundsätze eines guten Programmierstils behandelt und C- und C++-Programmierern beibringt, wie man Code schreibt, der von anderen leicht gelesen, verstanden und gepflegt werden kann. Egal, ob Sie Student oder professioneller Programmierer sind, Sie werden von den vielen Tipps und Techniken zur Erstellung von elegantem, zuverlässigem Code profitieren.
Das Buch versucht dem Leser zu zeigen, wie man einen guten Programmierstil in seinen Code einbaut. Da der Computer nur den Code liest und der Mensch sich auf die Kommentare konzentriert, bezieht sich ein guter Programmierstil auf beide Teile eines Programms.
Das ultimative Ziel ist es, einen gut entworfenen, gut geschriebenen Code zu erstellen, der nicht nur eine effektive Nutzung des Computers ermöglicht, sondern auch sorgfältig konstruierte Kommentare enthält, die dem Menschen helfen, ihn zu verstehen. Diese Bedingung wird das Debuggen, die Wartung und den Verbesserungsprozess erleichtern, was letztendlich die Lesbarkeit, die Portabilität, die Zuverlässigkeit und die Wartbarkeit Ihres Codes verbessern wird.
In diesem Buch finden Sie Richtlinien zum Schreiben von Kommentaren, zur Programmüberschrift, zum Festlegen von Variablennamen, zur Anweisungsformatierung, zu Anweisungsdetails, zum Schreiben von Präprozessoren, zum Organisieren von Verzeichnissen und zum Erstellen von Makefiles.
Dieses Buch ist unter der Creative Commons License veröffentlicht.
Lesen Sie das Buch
3. Eine Einführung in den GCC von Brian Gough
Eine Einführung in den GCC bietet eine Einführung in die GNU C und C++ Compiler, gcc und g++, die Teil der GNU Compiler Collection (GCC) sind.
Nach der Lektüre dieses Buches werden Sie wissen, wie man ein Programm kompiliert, grundlegende Compiler-Optionen zur Optimierung und Fehlersuche verwendet.
Dieses Buch erklärt, wie man den Compiler selbst benutzt. Basierend auf jahrelanger Beobachtung von Fragen, die auf Mailinglisten gepostet wurden, führt es den Leser direkt zu den wichtigen Optionen des GCC. Das Buch lehrt nicht C.
Kapitel:
- Einführung
- Kompilieren eines C-Programms – beschreibt, wie man C-Programme mit gcc kompiliert. Programme können aus einer einzigen Quelldatei oder aus mehreren Quelldateien kompiliert werden und können Systembibliotheken und Headerdateien verwenden
- Kompilierungsoptionen – beschreibt andere häufig verwendete Compileroptionen, die im GCC verfügbar sind. Diese Optionen steuern Funktionen wie die Suchpfade, die zum Auffinden von Bibliotheken und Include-Dateien verwendet werden, die Verwendung zusätzlicher Warnungen und Diagnosen, Präprozessormakros und C-Sprachdialekte
- Verwendung des Präprozessors – beschreibt die Verwendung des GNU C-Präprozessors cpp, der Teil des GCC-Pakets ist. Der Präprozessor erweitert die Makros in den Quelldateien, bevor sie kompiliert werden. Er wird automatisch aufgerufen, wenn GCC ein C- oder C++-Programm verarbeitet
- Kompilieren zum Debuggen – bietet die Option -g debug, um zusätzliche Debugging-Informationen in Objektdateien und ausführbaren Dateien zu speichern. Diese Debugging-Informationen ermöglichen es, Fehler von einer bestimmten Maschinenanweisung bis zur entsprechenden Zeile in der ursprünglichen Quelldatei zurückzuverfolgen
- Kompilieren mit Optimierung – GCC ist ein optimierender Compiler. Er bietet eine breite Palette von Optionen, die darauf abzielen, die Geschwindigkeit zu erhöhen oder die Größe der von ihm erzeugten ausführbaren Dateien zu reduzieren
- Kompilieren eines C++-Programms – beschreibt, wie man GCC verwendet, um in C++ geschriebene Programme zu kompilieren, und die für diese Sprache spezifischen Befehlszeilenoptionen
- Plattformspezifische Optionen – beschreibt einige der für gängige Plattformen verfügbaren Optionen: Intel- und AMD-x86-Optionen, x86-Erweiterungen, x86-64-Bit-Prozessoren, DEC-Alpha-Optionen, SPARC-Optionen, POWER/PowerPC-Optionen, Multi-Architektur-Unterstützung und Fließkomma-Probleme
- Fehlerbehebung – GCC bietet mehrere Hilfe- und Diagnose-Optionen, um Probleme mit dem Kompilierungsprozess zu beheben
- Compiler-bezogene Werkzeuge – beschreibt eine Reihe von Werkzeugen, die in Kombination mit GCC nützlich sind. Dazu gehören der GNU archiver ar zum Erstellen von Bibliotheken und die GNU Programme gprof und gcov zum Testen der Abdeckung
- Wie der Compiler arbeitet – beschreibt im Detail, wie GCC Quelldateien in eine ausführbare Datei umwandelt. Die Kompilierung ist ein mehrstufiger Prozess, an dem mehrere Werkzeuge beteiligt sind, darunter der GNU Compiler selbst (über die gcc- oder g++-Frontends), der GNU Assembler as und der GNU Linker ld. Der komplette Satz von Werkzeugen, die im Kompilierungsprozess verwendet werden, wird als Toolchain bezeichnet
- Untersuchung kompilierter Dateien – beschreibt mehrere nützliche Werkzeuge zur Untersuchung des Inhalts von ausführbaren Dateien und Objektdateien
- Gängige Fehlermeldungen – beschreibt die häufigsten Fehler- und Warnmeldungen, die von gcc und g++ erzeugt werden. Jeder Fall wird von einer Beschreibung der Ursachen, einem Beispiel und Vorschlägen für mögliche Lösungen begleitet
- Hilfe holen – wenn der Leser auf ein Problem stößt, das in dieser Einführung nicht behandelt wird, gibt es mehrere Referenzhandbücher, die GCC und sprachbezogene Themen ausführlicher beschreiben
Dieses Buch wird unter der GNU Free Documentation License veröffentlicht.
Lesen Sie das Buch
Nächste Seite: Seite 2 – Eine Einführung in C & GUI und weitere Bücher
Seiten in diesem Artikel:
Seite 1 – The C Book und weitere Bücher
Seite 2 – An Introduction to C & GUI Programming und weitere Bücher
Seite 3 – The GNU C Reference Manual und weitere Bücher
Seite 4 – Essential C und weitere Bücher
Seite 5 – Beej’s Guide to Network Programming und weitere Bücher
Alle Bücher in dieser Reihe:
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 |