Ressources¶
Documentation/Spécification¶
Quand vous cherchez des informations sur une fonction ou d’autres éléments du langage :
cppreference 🇬🇧, par exemple pour la fonction printf ;
The Open Group 🇬🇧, le consortium qui développe les standards POSIX (entre autres). Vous pourrez trouver sur le site la liste des en-têtes (headers, en bas de page), qui peut éventuellement vous aider à retrouver des fonctions ;
dans le terminal :
man num_section nom_fonction(voirman manpour la liste des sections). Pour les éléments de C, voir dans la section 3,man 3 printf. Pour les fonctions système, voir dans la section 2,man 2 fork(les sections 1, 2 et 3 sont aussi présentées dans l”introduction) ;dans le terminal :
whatis printf(ouman -f printf) liste les sections où existe une pageprintf;apropos printfcherche le mot-clé dans les noms et descriptions de toutes les pages ;le man en ligne 🇬🇧 (man7.org), avec des liens cliquables entre les pages.
Cours/livres sur le C¶
Si vous voulez améliorer vos connaissances en C, un livre incontournable est « The C Programming Language 2nd edition » 🇬🇧 de Brian Kernighan et Dennis Ritchie. Il présente le C de la norme ANSI (C89). Le langage a évolué depuis (commentaires avec //, déclarations plus flexibles, etc.) et certains exemples demandent quelques modifications, mais le livre reste un très bon point de départ.
Un second livre, plus difficile à aborder en premier, est « Modern C » 🇬🇧 de Jens Gustedt. Le livre complet est en accès libre avec le code source.
Si vous souhaitez suivre un cours avec des vidéos, le cours CS50 d’Harvard 🇬🇧 présente une introduction à l’informatique sur 11 semaines (numérotées de 0 à 10). Dans le cadre de ce cours, vous pouvez suivre jusqu’à la semaine 4 et regarder la partie sur les struct de la semaine 5.
Pour mieux comprendre les tableaux et pointeurs, il existe un tutoriel 🇬🇧 écrit par Ted Jensen et maintenu par Jay Flaherty.
Vous pourrez aussi trouver des cours en français sur Zeste de Savoir 🇫🇷 ou OpenClassrooms 🇫🇷.
La chaîne Low Level 🇬🇧 peut vous aider à comprendre le C et l’assembleur, avec une partie consacrée à la sécurité.
Cours/livres sur les aspects système¶
Pour les aspects système, nous ne verrons pas tout dans ce cours ; si vous voulez aller plus loin, vous pouvez lire « Développement système sous Linux, 5e édition » 🇫🇷 de Christophe Blaess (accessible en ligne avec la BU).
Pour la programmation réseau, le Beej’s Guide to Network Programming 🇬🇧 (gratuit, en ligne) présente les sockets pas à pas. Pour tout l’aspect système (processus, signaux, threads, sockets), The Linux Programming Interface 🇬🇧 de Michael Kerrisk (l’auteur des pages man7.org) est une référence très complète.
Le site wiki.osdev.org 🇬🇧 pourra vous donner des ressources et mots-clés pour la partie système.
Si vous voulez mieux comprendre le fonctionnement de l’ordinateur, plus proche de l’électronique, vous pouvez regarder la vidéo « Exploring How Computers Work » 🇬🇧 de Sebastian Lague.
Pour aller un peu plus loin, la playlist « Computer Science » 🇬🇧 de Crash Course part de la base historique de l’informatique et des portes logiques et va jusqu’à des sujets comme la robotique, la cryptographie, l’apprentissage automatique, etc.