Le C est un langage de programmation de haut niveau polyvalent, procédural et portable, qui est l’un des langages les plus populaires et les plus influents. Il a été conçu pour être compilé à l’aide d’un compilateur simple, pour fournir un accès de bas niveau à la mémoire, pour fournir des constructions de langage qui correspondent efficacement aux instructions de la machine, et pour nécessiter un support d’exécution minimal. De nombreux langages de programmation ont une dette considérable envers C. Il est devenu quelque chose comme la lingua franca dans le monde de la programmation.
C est assez simple à comprendre. Il permet au programmeur d’organiser les programmes d’une manière claire, facile et logique. C’est un langage très flexible, pratique et compact combiné à une syntaxe facile à lire. Le code écrit en C s’exécute rapidement, avec un accès facile aux fonctions de bas niveau de l’ordinateur. Les directives du compilateur permettent de produire une seule version d’un programme compilé pour différentes architectures.
Le C est synonyme de liberté. Il est donc logique d’apprendre le C avec des livres qui incarnent également la liberté. Jetez un œil à mes choix et voyez si l’un d’entre eux vous séduit.
1. Le livre C de Mike Banahan, Declan Brady et Mark Doran
Le livre C est conçu pour les programmeurs qui ont déjà une certaine expérience de l’utilisation d’un langage de programmation procédurale moderne de haut niveau.
Vous devriez déjà comprendre les instructions, les variables, l’exécution conditionnelle, les tableaux, les procédures (ou sous-routines) et ainsi de suite.
Le livre se concentre sur les choses qui sont spéciales au C. En particulier, c’est la façon dont le C est utilisé qui est mise en avant. Le livre est à la fois informatif et agréable à lire.
Les chapitres comprennent :
- Une introduction au C
- Variables et arithmétique – introduit certains des fondamentaux du C, y compris les mots-clés et les identifiants, la déclaration des variables, les types réels, les types intégraux, les expressions et l’arithmétique, et les constantes
- Contrôle de flux et expressions logiques – examine les différentes façons dont les déclarations de contrôle de flux peuvent être utilisées dans un programme C, y compris certaines déclarations qui n’ont pas été introduites jusqu’à présent. Contrôle du flux, expressions plus logiques, et opérateurs étranges
- Fonctions – le type de fonctions, la récursion et le passage d’arguments, et la liaison
- Tableaux et pointeurs – tableaux, pointeurs, manipulation des caractères, sizeof et allocation de stockage, pointeurs vers les fonctions, expressions impliquant des pointeurs, tableaux, l’opérateur & et les déclarations de fonctions
- Types de données structurés – structures, unions, champs de bits, enums, qualificatifs et types dérivés, et initialisation
- Le préprocesseur – comment fonctionne le préprocesseur, et directives
- Zones spécialisées du C – déclarations, définitions et accessibilité, typedef, const et volatile, et points de séquence
- Librairies – diagnostics, manipulation des caractères, localisation, limites, fonctions mathématiques, sauts non locaux, manipulation des signaux, nombres variables d’arguments, entrée et sortie, E/S formatées, E/S de caractères, E/S non formatées, fonctions d’accès aléatoire, utilitaires généraux, manipulation des chaînes de caractères, et la date et l’heure
- Programmes complets en C – tout mettre ensemble, les arguments de main, l’interprétation des arguments du programme, un programme de correspondance de motifs, et un exemple plus ambitieux
Les auteurs donnent au lecteur la permission de faire ce qu’il veut avec le livre à condition qu’il y ait une reconnaissance des auteurs et de leur copyright. D’après ce que Mike Banahan a confirmé, le livre est effectivement sous licence Creative Commons.
Lire le livre
2. C Elements of Style par Steve Oualline
C Elements of Style est un guide utile qui couvre les principes d’un bon style de programmation, enseignant aux programmeurs C et C++ comment écrire du code qui peut être facilement lu, compris et maintenu par les autres. Que vous soyez un étudiant ou un programmeur professionnel, vous bénéficierez des nombreux conseils et techniques pour construire un code élégant et fiable.
Le livre tente de montrer aux lecteurs comment construire un bon style de programmation dans votre code. Puisque l’ordinateur ne lit que le code et que l’humain se concentre sur les commentaires, un bon style de programmation concerne les deux parties d’un programme.
Le but ultime est de construire un code bien conçu, bien écrit qui non seulement fait une utilisation efficace de l’ordinateur et mais contient aussi des commentaires soigneusement construits pour aider les humains à le comprendre. Cette condition facilitera le processus de débogage, de maintenance et d’amélioration, ce qui finira par améliorer la lisibilité, la portabilité, la fiabilité et la maintenabilité de votre code.
À l’intérieur, vous trouverez des directives sur l’écriture des commentaires, l’intitulé du programme, la détermination des noms de variables, le formatage des déclarations, les détails des déclarations, l’écriture du préprocesseur, l’organisation des répertoires et la création du makefile.
Ce livre est publié sous licence Creative Commons.
Lisez le livre
3. Une introduction à GCC par Brian Gough
Une introduction à GCC fournit une introduction aux compilateurs GNU C et C++, gcc et g++, qui font partie de la collection de compilateurs GNU (GCC).
Après avoir lu ce livre, vous saurez comment compiler un programme, utiliser les options de base du compilateur pour l’optimisation et le débogage.
Ce livre explique comment utiliser le compilateur lui-même. Basé sur des années d’observation des questions postées sur les listes de diffusion, il guide le lecteur directement vers les options importantes de GCC. Le livre n’enseigne pas le C.
Chapitres:
- Introduction
- Compilation d’un programme C – décrit comment compiler des programmes C en utilisant gcc. Les programmes peuvent être compilés à partir d’un fichier source unique ou de plusieurs fichiers sources, et peuvent utiliser des bibliothèques système et des fichiers d’en-tête
- Options de compilation – décrit d’autres options de compilation couramment utilisées disponibles dans GCC. Ces options contrôlent des fonctionnalités telles que les chemins de recherche utilisés pour localiser les bibliothèques et les fichiers d’inclusion, l’utilisation d’avertissements et de diagnostics supplémentaires, les macros du préprocesseur et les dialectes du langage C
- Utilisation du préprocesseur – décrit l’utilisation du préprocesseur GNU C cpp, qui fait partie du paquetage GCC. Le préprocesseur développe les macros dans les fichiers sources avant qu’ils ne soient compilés. Il est automatiquement appelé chaque fois que GCC traite un programme C ou C++
- Compilation pour le débogage – fournit l’option -g debug pour stocker des informations de débogage supplémentaires dans les fichiers objets et les exécutables. Ces informations de débogage permettent de retracer les erreurs depuis une instruction machine spécifique jusqu’à la ligne correspondante dans le fichier source d’origine
- Compilation avec optimisation – GCC est un compilateur optimisateur. Il fournit un large éventail d’options qui visent à augmenter la vitesse, ou à réduire la taille, des fichiers exécutables qu’il génère
- Compilation d’un programme C++ – décrit comment utiliser GCC pour compiler des programmes écrits en C++, et les options de ligne de commande spécifiques à ce langage
- Options spécifiques à la plateforme – décrit certaines des options disponibles pour les plateformes courantes : Options Intel et AMD x86, extensions x86, processeurs x86 64 bits, options DEC Alpha, options SPARC, options POWER/PowerPC, support multi-architecture et problèmes de virgule flottante
- Dépannage – GCC fournit plusieurs options d’aide et de diagnostic pour aider à résoudre les problèmes liés au processus de compilation
- Outils liés au compilateur – décrit un certain nombre d’outils qui sont utiles en combinaison avec GCC. Il s’agit notamment de l’archiveur GNU ar, pour créer des bibliothèques, et des programmes GNU de profilage et de test de couverture, gprof et gcov
- Comment fonctionne le compilateur – décrit plus en détail comment GCC transforme les fichiers sources en fichier exécutable. La compilation est un processus en plusieurs étapes impliquant plusieurs outils, notamment le compilateur GNU lui-même (par le biais des frontaux gcc ou g++), l’assembleur GNU as, et le lieur GNU ld. L’ensemble complet des outils utilisés dans le processus de compilation est appelé toolchain
- Examen des fichiers compilés – décrit plusieurs outils utiles pour examiner le contenu des fichiers exécutables et des fichiers objets
- Messages d’erreur courants – décrit les messages d’erreur et d’avertissement les plus fréquents produits par gcc et g++. Chaque cas est accompagné d’une description des causes, d’un exemple et de suggestions de solutions possibles
- Avoir de l’aide – si le lecteur rencontre un problème non couvert par cette introduction, il existe plusieurs manuels de référence qui décrivent plus en détail GCC et les sujets liés au langage
Ce livre est publié sous la licence de documentation libre GNU.
Lire le livre
Page suivante : Page 2 – Une introduction au C & Interface graphique et autres livres
Pages de cet article :
Page 1 – The C Book et plus de livres
Page 2 – An Introduction to C & GUI Programming et plus de livres
Page 3 – The GNU C Reference Manual et plus de livres
Page 4 – Essential C et plus de livres
Page 5 – Beej’s Guide to Network Programming et plus de livres
Tous les livres de cette série :
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 |