Ressources
Sélection de ressources librement accessibles en ligne. Elles sont triées selon l’ordre d’importance que nous leur donnons.
Cours C
- https://www.france-ioi.org/algo/chapters.php 🌍⤴ Cours à destination des écoles primaires, collège et lycée, avec des robots de soumission et évaluation de code.
- https://zestedesavoir.com/tutoriels/755/le-langage-c-1/ 🌍⤴ Un cours communautaire qui propose de nombreux exercices.
- https://gustedt.gitlabpages.inria.fr/modern-c/ 🌍⤴ Modern C, livre de référence pour le C11, disponible gratuitement ou en version imprimée.
Cours généralistes et approfondissement
- https://www.my-mooc.com/fr/categorie/ 🌍⤴ Voir les catégories « informatique » ou « Mathématiques ». Cours généralement gratuits, certifications parfois payantes.
- https://www.fun-mooc.fr/fr/cours/ 🌍⤴ Trier par catégorie « Informatique et programmation ». Cours généralement gratuits, certifications parfois payantes.
- https://formation.cnam.fr/rechercher-par-discipline/langage-c-201767.kjsp 🌍⤴ Cours du CNAM liés au langage C.
- https://projecteuler.net/archives 🌍⤴ Projet Euler
Sites d’exercices et annales
- https://concours.castor-informatique.fr/ 🌍⤴ Exercices destinés à un niveau école primaire, cliquer sur « S’entrainer ».
- https://prologin.org/train/ 🌍⤴ Site proposant de très nombreux exercices de niveau collège et lycée, réalisables en C.
- https://cscircles.cemc.uwaterloo.ca/fr/ 🌍⤴ Cours d’initiation à la programmation en python proposé par l’université de waterloo au Canada. Bon préliminaire à l’apprentissage du C.
- https://concours.algorea.org/ 🌍⤴ Exercices d’entrainement pour le langage C.
- https://concours-alkindi.fr/#/ 🌍⤴ Initialtion à la cryptographie, de niveau primaire.
- https://www.be-oi.be/fr/becp/ 🌍⤴ Enoncés de l’olympiade de programmation belge.
- Filière MP
Sites de référence
- https://c-faq.com/ 🌍⤴ De nombreuses question/réponses traitant de subtilités non couvertes par le C programming language datant de l’origine du langage parfois répondues par l’auteur même du C.
- https://en.cppreference.com/w/ 🌍⤴ On y trouve des informations exactes et à jour sur tous les aspects du langage avec de nombreux exemple de bon usage.
Outils
- https://cdecl.org/ 🌍⤴ Pour comprendre les types complèxes et la priorité des opérateurs.
- https://godbolt.org/ 🌍⤴ Analyseur de code assembleur en ligne.
- https://replit.com/languages/C 🌍⤴ Compilateur en ligne.
- https://codecast.wp.imt.fr/codecast/ 🌍⤴ Analyseur de code compilé en C, orienté apprenants.
- https://codecast.wp.imt.fr/weblinux-2/ 🌍⤴ Compilateur C sur linux en ligne. Permet d’apprendre le C sans installer de compilateur sur sa machine.
Organismes officiels
- https://www.open-std.org/jtc1/sc22/wg14/ 🌍⤴ Le groupe de travail à la normalisation du C, contient des brouillons de la norme officielles du C en libre accès.
- https://www.acm.org 🌍⤴ Association for Computing Machinery, organisation des programmeurs informatiques, pas seulement dédiée au C.
Compilateurs
- https://visualstudio.microsoft.com/fr/vs/ 🌍⤴ Visual Studio - code optimisé et moins généraliste, bon compromis pour les applications critiques sur windows.
- https://gcc.gnu.org/ 🌍⤴ GCC - compilateur universel, veritable pierre de rosette, produit du code générique et peu optimisé.
- https://clang.llvm.org/ 🌍⤴ - Clang, facette C du langage LLVM, qui facilite l’écriture de compilateurs pour tout types de langages.
Autres compilateurs d’intérêt
- Borland turbo C compiler (TCC.exe): compilateur spécialisé pour MSDOS et
windows à la fin des années 80
et au début des années 90, réputé pour être facile
d’usage et omniprésent car intégré dans l’IDE Turbo C.
Les raccourcis clavier pour compiler, debugger et executer
un programme (ctrl F9, alt F9, alt F10) présents dans la plupart des IDE actuels
sont hérités de cette suite de développement logicielle. Ses en-têtes de librairies
ne sont pas standart (
alloc.h
,conio.h
, …) et il se peut qu’un programme écrit pour le compilateur Borland ne compile qu’avec lui. - http://openwatcom.org/ 🌍⤴ Watcom C compiler : un compilateur de la fin des années 90 réputé pour produire des exécutables plus rapides que les autres compilateurs du marché. Beaucoup de jeux vidéo des années 90 l’utilisaient et écrivaient du codé spécifique à ce compilateur (Duke Nukem, Blood, etc.) et si vous essayez de compiler le code de ces programmes - aujourd’hui en libre accès - en l’état, il vous faudra utiliser ce compilateur.
- http://pcc.ludd.ltu.se/ 🌍⤴ Portable C Compiler - Premier compilateur C de-facto utilisé lors des premiers jours du C. Contrairement au compilateur C écrit par Denis Ritchie qui utilisait des optimisations spécifiques au PDP11, le PCC avait une architecture plus générique capable de supporter un plus grand nombre de machines et architectures, ce qui a permi au C de se généraliser. Utile si vous chercher à compiler du code C ultérieur à UNIX V7 et antérieur aux années 90. Le GCC se base sur ce compilateur.
- https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html 🌍⤴ Intel C/C++ compiler (ICC) : Un compilateur capable d’utiliser toutes les fonctionalités des processeurs intel (parallélisme, appel de fonctions vectorisées) dès leur mise sur le marché. En comparaison un compilateur comme MSVC sera plus générique et moins performant.
- https://www.amd.com/en/developer/aocc.html 🌍⤴ AMD Optimizing C/C++ and Fortran Compilers (AOCC) Il s’agit de l’équivalent de ICC pour les architectures AMD.
Industrialisation
- https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard 🌍⤴ Les recommendation officielles du CERT en matière de sécurisation de code source C. En libre accès.
- https://www.ssi.gouv.fr/guide/regles-de-programmation-pour-le-developpement-securise-de-logiciels-en-langage-c/ 🌍⤴ Les recommandations de l’ANSSI pour sécuriser les programmes écrits en C. En libre accès.
- https://frama-c.com/ 🌍⤴ Rendre un programme C utilisable dans un contexte industriel.
Histoire du C
- https://github.com/dspinellis/unix-history-repo 🌍⤴ Premiers UNIX.
- https://www.tuhs.org/ 🌍⤴ The UNIX heritage society. Informations et codes source des premiers UNIX.
- https://www.tuhs.org/Archive/Distributions/Research/McIlroy_v0/ 🌍⤴ Travaux preliminaires au C.
Blogs et wikis
- https://gustedt.wordpress.com/ 🌍⤴ Blog de Jens Gustedt, directeur du groupe de normalisation du C
- https://thephd.dev/ 🌍⤴ Blog de JeanHeyd Meneides, membre du groupe de normalisation du C et C++
Articles
- https://computerhistory.org/blog/the-earliest-unix-code-an-anniversary-source-code-release/ 🌍⤴ La genese d’UNIX et son code source.
Développement d’OS
- https://wiki.osdev.org/ 🌍⤴ Un wiki aidant au développement de systèmes d’exploitation.
- https://devse.wiki/ 🌍⤴ Un wiki sur le même thème en français.
- https://www.pearson.com/en-us/subject-catalog/p/operating-systems-design-and-implementation/P200000003167 🌍⤴ Operating Systems Design and Implementation, 3rd edition
Réseau
- https://gafferongames.com/ 🌍⤴ Implémenter la gestion du réseau dans des jeux vidéo
Resources en anglais
- https://archive.org/details/bitsavers_borlandtur1987_10489658/page/n137/mode/2up?view=theater 🌍⤴ Manuel de Turbo C
Divers
- https://www.ioccc.org/ 🌍⤴ The International Obfuscated C Code Contest.