.. _ressources: Ressources ========== Documentation/Spécification --------------------------- Quand vous cherchez des informations sur une fonction ou autres éléments du langage : - `cppreference 🇬🇧 `__ par exemple pour la fonction `printf `__ - `The Open Group 🇬🇧 `__, le consortium qui développe les standards POSIX (entre autre). Vous pourrez trouver sur le site la `liste des headers (en bas de page) `__ qui peut éventuellement vous aider à retrouver des fonctions. - Le `manuel de référence de GNU `__ - dans le terminal : ``man num_section nom_fonction`` (voir ``man man`` pour 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``. - dans le terminal : ``apropos printf`` vous donnera la liste des sections du man où ``printf`` apparaît. - `man en ligne `__ avec des liens cliquables et un peu de coloration syntaxique. 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 langage de la norme ANSI C, qui a évolué depuis (commentaires avec `//`, déclarations plus flexibles, ...) et dont certains exemples demandent quelques modifications, mais reste un très bon début pour aborder le langage. Un second livre, plus difficile à aborder en 1er, est `"Modern C" 🇬🇧 `__ de Jens Gustedt, le livre complet est en `open access `__ 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 10 semaines, dans le cadre de ce cours, vous pouvez suivre jusqu'à la semaine 4 et regarder la partie structure de la semaine 5. Pour mieux comprendre les tableaux et pointeurs, il existe `un tutoriel 🇬🇧 `__ de Ted Jensen et maintenu par Jay Flaherty. Vous pourrez aussi trouver des cours en français sur `zeste de savoir 🇫🇷 `__ ou `openclassroom 🇫🇷 `__. La `chaîne Low Level `__ peut vous aider à comprendre le C et l'assembleur, avec une partie sur des aspects sécurité. Cours/livres sur les aspects système ------------------------------------ Pour les aspects système, nous ne verrons pas tout dans ce cours donc 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 `__). 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 CrashCourse part de la base historique de l'informatique et des portes logiques et va jusqu'à des sujets comme la robotique, la cryptographie, l'apprentissage, ...