Bonjour à tous, on se retrouve pour cette première séance sur notre formation au langage C. Je vais vous faire une petite présentation de ce langage, des avantages qu'il peut avoir et surtout l'utilité que vous auriez à l'apprendre et à l'étudier. Le langage C, il faut savoir qu'il a été inventé. C'est un langage qui a évolué, à la base il ne s'appelait pas comme ça, il y a eu le langage B, il y a eu plein d'autres langages avant qui ont amené au langage C par deux personnes en particulier, Denis Ritchie que vous voyez ici à droite et Ken Thompson qui était l'inventeur du langage B qui a donc été repris pour pouvoir former le langage C que nous connaissons aujourd'hui.
Donc ça c'est l'historique bref que je peux vous faire sur le langage et sur ces deux personnes à connaître qui bien évidemment ont fait évoluer les différents langages. pour les amener à ce que nous connaissons aujourd'hui et qui évolue encore maintenant, puisque ce sont des langages, même s'ils ont été fondés dans les années 1970, continuent de progresser et on voit de la nouvelle fonctionnalité. Justement, en parlant du langage en lui-même, le langage C est un langage dit de programmation impérative, ça veut dire que le langage fonctionne via une suite d'instructions.
Je ne vais pas vous montrer un exemple de code pour le moment, on verra ça dans la séance suivante. Par contre, vous verrez, je vous l'expliquerai, on parlera d'instructions, c'est-à-dire un ensemble de commandes qui sont à suivre au fur et à mesure, en fait, de manière séquentielle, et le programme les réalise, voilà, une par une, en fait, il réalise chacune des tâches, et il traite comme ça tout le fichier, donc tout l'ensemble du programme, jusqu'à sa fin, tout simplement. Donc ça, c'est dit impératif, c'est ce qu'on retrouve dans beaucoup de langages de programmation, d'ailleurs, c'est une méthode de programmation qui est quand même relativement populaire.
Et ce qu'il faut savoir également, c'est que le langage C est un langage compilé, c'est-à-dire que nous allons avoir un code source, nous allons donc taper le code de notre programme dans des fichiers. Nous allons ensuite utiliser un outil, ce qu'on appelle le compilateur. Je ne vais pas détailler le compilateur en lui-même, ce n'est pas le sujet de ce genre de formation. Si vous voulez en savoir plus sur toutes les méthodes de compilation, etc., je vous invite éventuellement à...
à voir ma formation sur le hacking. Là, je parle beaucoup plus en détail déjà des étapes de compilation, et en plus avec le langage C, puisque c'est un langage que vous pourrez retrouver dans cette formation également. Petite parenthèse faite, c'est un langage compilé, c'est-à-dire que la machine, si vous le savez ou non, ne comprend que le langage binaire, qui est constitué de 0 et de 1, par rapport à son fonctionnement d'origine, et le langage que nous allons utiliser, utilisé pour programmer n'est pas composé de 0 et 2, sinon ce serait parfaitement illisible, parfaitement compliqué également.
On a donc une certaine syntaxe qui a été créée, et à partir de là, le compilateur va traduire notre syntaxe à nous en langage machine, donc en binaire, pour pouvoir être lu et exécuté par un ordinateur qui ne connaît que les 0 et 1. Il fait vraiment des choses très simples, et c'est tout ça qui permet de complexifier certains traitements. Ça c'est pour la partie compilation. Le langage C, c'est également un langage que l'on... Alors...
On qualifie souvent les langages de programmation de haut niveau, de bas niveau, etc. Comprenez déjà que c'est quelque chose qui est très subjectif et très relatif surtout. C'est-à-dire qu'on peut avoir un langage qui est haut niveau par rapport à un autre, mais qui est bas niveau par rapport à d'autres choses. Donc ce n'est pas forcément très fiable comme information, mais en tout cas on peut qualifier quand même le langage C de haut niveau, si vous voulez, du fait qu'il a une syntaxe qui est simplifiée par rapport à d'autres langages, comme les langages d'assembleur. Par contre, il est plutôt qualifié de bas niveau dans la mesure où nous allons directement travailler sur la mémoire, c'est-à-dire qu'on va gérer la mémoire, on va faire de l'allocation de la mémoire, c'est-à-dire de réserver un espace dans la mémoire de l'ordinateur pour pouvoir stocker des informations, chose qu'il faut prévoir, il faut prévoir la place, etc.
Alors que sur certains langages dits de plus haut niveau, que le langage C, on n'aurait pas forcément besoin de faire ça. On stocke les données et c'est le programme qui se charge de... de les allouer correctement et surtout de les libérer, puisque si vous ne libérez pas après les données à la fin du programme, elles restent dans la mémoire et c'est comme ça qu'on finit par saturer la mémoire. Donc ça, c'est à retenir quand même, le langage C est un langage compilé, c'est un langage dit de haut niveau, si on compare par rapport au langage proche du langage machine, mais ce sont quand même des langages relativement bas niveau, si on compare au langage Java, au langage C-Sharp, c'est des langages un peu plus récents qui, par exemple, disposent d'un système de libération de mémoire.
ce qu'on appelle un garbage collector, un ramasse-miettes, que le langage C, par exemple, n'a pas. C'est relatif, je vous dis, cette histoire de bas niveau, haut niveau. Il n'y a pas une des deux réponses qui est plus fausse que l'autre, en réalité. C'est selon...
là où on se place selon le point de vue. Il est bas niveau par rapport au C Sharp ou au Java, mais il est haut niveau par rapport au langage d'assembleur par exemple. Ça c'est pour la petite histoire, enfin la petite histoire, en tout cas la petite présentation rapide, la petite description du langage. Du coup, la question à vous poser, c'est pourquoi apprendre le C ? Pourquoi effectivement, quel intérêt, vraiment, quel avantage déjà il peut avoir ?
C'est surtout quel avantage il peut avoir, et qu'est-ce qu'il peut apporter. Le langage C, comme je vous l'ai dit, a été créé dans les années 70. Le gros avantage de ça, c'est qu'il y a des dizaines d'années qui sont passées et que le langage a un vécu. Il a eu le temps de souffrir de nombreux bugs, de nombreux problèmes, et profiter de nombreuses corrections, là c'est plus d'en profiter que d'en souffrir, pour être amélioré, pour apporter des nouvelles fonctionnalités, du nouveau contenu, ce genre de choses. Donc ça c'est quand même un très bon point.
On a ensuite la partie, et ça il faut le prendre en compte, le fait que le langage est ouvert, c'est-à-dire en réalité le langage C n'appartient à personne. Même s'il a été créé par des gens, ils n'ont pas décidé d'avoir la propriété, même si ce n'est pas un langage propriétaire, ça veut dire que vous pouvez le réutiliser sans problème, vous pouvez très bien vendre un produit qui a été programmé dans le langage C sans souci, vous n'aurez pas de compte à rendre aux auteurs qui ont créé ce langage-là. Donc on parle de standard ouvert. Pourquoi on parle de standard ?
On parle également de normes, tout simplement parce que le langage au début... C'est comme tout, quand on commence à créer quelque chose sur toute cette ampleur, on commence sur Dieu, on part sur un peu tout et n'importe quoi, et après on essaye de hiérarchiser les choses, de les organiser, d'avoir quelque chose qui soit clair. Et pour que le langage soit un peu le même partout, que le langage C reste le même au niveau de ses attaques, de ses méthodes, de ses règles, on a créé des normes, on a normalisé le langage. Vous avez peut-être entendu parler des normes C89, C99, C11 ou les normes ANSI. ce genre de choses, ce sont tout simplement une espèce de feuille de route, une feuille de règles qui est assez invivable pour quelqu'un qui n'a pas l'habitude, même déjà pour ceux qui ont l'habitude, où il y a tout un ensemble de règles à suivre concernant le langage.
Ça peut être sur des règles de codage, ça peut être sur la syntaxe, ça peut être sur des méthodes de savoir-faire, sur les méthodes de programmation, etc. Alors, ils ont utilisé ce terme-là pour, par exemple, C89, puisqu'elle a été initiée en 1989, C99, C99. et la plus récente c'est la norme C11 qui a été faite en 2011, donc vraiment on va dire validée en 2011. Donc vous voyez pour un langage qui date des années 70, en 2011 il était encore mis à jour, on avait encore ajouté du contenu, des fonctionnalités. Donc c'est vraiment pas obsolète du tout du tout, et comprenez que tous les langages même aussi vieux qu'ils soient de toute manière peuvent avoir un intérêt encore maintenant tous, même des langages moins populaires que le langage C, puisque lui il a quand même cet avantage là de s'être vraiment popularisé et d'être devenu une référence.
en informatique, ça c'est un gros point. Si je devais citer quelques points moins bien, quelques désavantages, quelques inconvénients du langage C, je parlerais avant tout de sa portabilité. Contrairement si on comparait à d'autres langages, comme le Python ou ce genre de choses, peut-être après que vous n'avez vraiment absolument aucune connaissance de tout ce qui est programmation informatique. Mais sachant en tout cas qu'il y a des langages qui, par exemple, vous programmez, vous codez votre petite application, votre jeu, n'importe quoi. Et vous pouvez le lancer sur Windows, donc le système que j'ai ici, il fonctionnera.
Vous pouvez le déplacer sur macOS, le l'exécuter, il fonctionnera. Déplacer sur une distribution GNU Linux, il fonctionnera aussi. Donc ça c'est l'avantage, c'est portable, on a juste à récupérer le programme, on le lance, point, c'est terminé. Le C ne permet pas de faire ça.
Le code est effectivement le même, sauf quelques exceptions avec des bibliothèques très particulières, mais le code, grâce au standard, il est le même que vous soyez sur Windows ou Linux pour afficher quelque chose à l'écran. On fera pareil peu importe le système. Ça c'est à retenir parce que j'ai eu ce genre, et je pourrais avoir ce genre de remarques.
Si la syntaxe est la même, par exemple, selon notre OS, oui. Pour afficher du texte, c'est la même. Pour stocker des informations, vous verrez qu'on aura la même syntaxe.
Peu importe que vous soyez sur Windows ou Linux d'ailleurs. Du coup, il manque quand même cette portabilité qui fait que quand on va compiler, quand le compilateur va faire la version binaire du programme, Cette version binaire, elle ne fonctionnera que sur le système sur lequel vous avez compilé. Ce qui ne s'agit pas, après il y a des méthodes comme ce qu'on appelle de la cross-compilation, qui permet de compiler pour un autre support. Mais encore une fois, cela en rendant quelque chose d'un peu plus complexe, ce n'est pas ce que je voulais vous montrer en tout cas dans cette formation.
Donc si vous êtes sous Windows, si vous compilez votre programme, il ne fonctionnera que sur un système Windows. Si vous compilez sur macOS, il fonctionnera sur un système Mac, etc. vous aurez comme ça un exécutable en fonction de l'OS sur lequel vous compilez. Du coup, si on veut avoir quelque chose de portable, par exemple, si on fait un programme, si on voulait qu'il soit portable, il faudrait au minimum le compiler sur Windows, le compiler sur macOS, le compiler sur GNU Linux, pour avoir par exemple la compatibilité avec ces trois systèmes, ce qu'on appellerait un programme ou un jeu, par exemple, multiplateforme. C'est dans ce genre de cas-là, une compatibilité multiplateforme.
Un autre point qui peut être assez dérangeant, et les personnes qui développent, par exemple, s'il y a des développeurs de Pascal qui suivent cette vidéo, ou d'autres langages, même le langage comme le Python qui est plus récent et qui est évidemment plus haut niveau, vous remarquerez certainement par la suite, en tout cas, et vous le verrez, je vous le dis maintenant, que la syntaxe, que l'apprentissage du langage C est... à la fois facile parce qu'il y a très peu de concepts, en fait il y a très peu de choses à savoir, on va dire, au niveau de la base du langage, c'est genre, on va voir telle chose, telle chose, telle chose, en une même pas une vingtaine de vidéos, vous verrez qu'on aura vu, on aura fait le tour de tous les concepts du langage. Donc ça va quand même très très vite, ça fait pas beaucoup. Après, on peut bien évidemment les mettre en application pour faire des choses beaucoup plus complexes.
Mais les concepts, il y en a très peu. En revanche, la syntaxe du langage en lui-même, sa compréhension, des fois, peut paraître un peu compliquée. Ce qui fait que, bah, cette...
Cette complication en fait dans la syntaxe, dans la manière de programmer peut amener à beaucoup d'erreurs. Il est récurrent par exemple de faire des bugs parce qu'on a mal alloué la mémoire, parce qu'au niveau des chaînes de caractère, vous verrez plus tard quand on gère du texte, pareil, on ne gère pas correctement tout ce qui est côté mémoire. Et c'est, voilà, disons que l'erreur est vite faite avec le langage C, alors que sur d'autres langages plus haut niveau ou plus simple dans leur syntaxe, il y en aurait beaucoup moins.
Donc attention, si vraiment vous voulez vous lancer là-dedans. Il faudra être un minimum rigoureux bien évidemment, il y a certaines choses qui ne seront pas possibles. Il faudra faire attention, des fois le moindre petit caractère différent pourra causer un bug, ce qu'on appelle un bug sur un programme.
Maintenant je pense que si vous n'étiez pas au courant de ça, vous comprenez peut-être pourquoi des systèmes faits par des professionnels, comme votre système d'exploitation, que ce soit Windows, Linux, Mac, ou les logiciels que vous utilisez tous les jours, votre navigateur, votre antivirus, votre logiciel de traitement de texte, souffrent de dizaines, de milliers même, dans certains cas, de bugs. parce que la moindre petite erreur ne pardonne pas. Et je prends l'exemple du langage C, mais on peut retrouver ça dans d'autres langages qui sont assez similaires, bien évidemment.
C'est vraiment difficile de produire, voire même impossible de toute manière, de produire un programme 100% parfait, qui n'a aucun bug, aucune erreur, et qui soit fonctionnel partout. Parce qu'après, il y a l'histoire de matériel, il faut que ça prenne en compte tout ce qui est fait dans le programme, que le système le supporte, etc. Donc il y a énormément de facteurs qui peuvent faire que le programme...
programme au final chez vous ne fonctionne pas bien et qu'il pourrait très bien fonctionner chez un autre ou alors qu'il dispose d'un petit bug qui vient complètement casser son fonctionnement. Ça peut aller très très vite. Donc vraiment ce point est à prendre en compte comme éventuellement un inconvénient du langage C, c'est qu'il est il rend plus facile les erreurs.
Le fait de faire faire les erreurs, on a plus tendance à faire des erreurs dans ce langage là que dans un autre. Du coup je viendrai sur un autre point pour vous, j'en avais parlé tout au début, c'est pourquoi pourquoi au final apprendre le C, qu'est-ce qu'il peut apporter ? Ce que je vais vous dire là est purement subjectif, c'est moi ce que je pense personnellement, ce n'est pas forcément l'avis de tous ou l'avis des autres. Déjà, il faut savoir que c'est un langage, si vous voulez, qui date, il a pas mal d'années derrière lui, donc forcément il est devenu très populaire, on trouve beaucoup de ressources, beaucoup de contenu sur Internet, donc éventuellement beaucoup d'aides, si jamais vous étiez bloqué sur quelque chose en particulier. Il est forcément...
inclus dans tous les appareils électroniques que vous pouvez trouver, en général quand un constructeur sort un appareil, il s'arrange pour que vous puissiez programmer en tout cas que le langage C soit compatible dessus. C'est pour ça que à l'heure actuelle, si je prends cette année 2016, le langage C est très utilisé par exemple dans les systèmes embarqués. Si vous avez un drone, si vous connaissez en tout cas même ne serait-ce que connaître les systèmes de drones ou les petits robots dans la robotique, dans tout ça, dans la domotique, dans les frigos, maintenant on retrouve ça dans les...
télé, dans n'importe quel appareil comme ça qui sont un petit peu intelligents, ce qu'on appelle des appareils intelligents, vous voyez qu'ils fonctionnent avec des programmes, ils deviennent de plus en plus sophistiqués, et bien dans 95% des cas, peut-être même plus ces petits systèmes sont programmés en langage C c'est un langage, je vous le dis, qui est vraiment un standard qui est devenu une référence un peu partout et qui nous entoure, on est vraiment entouré de programmes, de systèmes qui fonctionnent via ce langage là, donc ce serait je pense en tout cas... dommage de passer à côté de ça si vous vous intéressez à la programmation que vous êtes curieux ou vous voulez apprendre quelque chose je pense que de faire de la programmation et n'avoir jamais fait de c'est dommage c'est dommage de passer à côté de ça ça me paraît utile et en plus est utilisé voilà on l'utilise dans les systèmes embarqués mais on l'utilise également en programmation système quand il s'agit de faire de la programmation sur les systèmes d'exploitation sur du serveur etc on programme beaucoup en c on peut le retrouver dans des jeux vidéo il ya des jeux vidéo qui sont également faits via ce langage là on n'a pas que les langages dont on peut entendre parler comme le C++ ou le C Sharp par exemple, on a également des jeux qui sont faits en C. On a des applications en temps réel puisque le langage C est quand même, je vous ai dit, avec des concepts très très... il a très peu de concepts, donc il se met rapidement en place, ce qui fait qu'il y a beaucoup d'applications en temps réel qui utilisent ce langage-là. On a des bibliothèques également qui permettent par exemple de faciliter le travail des développeurs.
En fait vous avez des fonctionnalités toutes faites et un développeur peut sans problème les réutiliser à son tour dans son propre programme. Il faut comprendre que ce que vous pourrez programmer pourra... être fait sous forme de package en fait et proposer aux autres développeurs qui peuvent s'en servir comme un outil donc c'est un peu infini c'est à partir de rien vous pouvez avoir quelque chose qui peut être utilisé par quelqu'un d'autre qui produira autre chose et ainsi de suite c'est une réaction en chaîne et on arrive comme ça créer des communautés de développeurs qui peuvent se partager un petit peu tout leur savoir faire et tout leur travail et ça c'est je pense une branche qui est très très intéressante et qui devrait être suffisante pour vous donner envie en tout cas de vous lancer dans l'aventure voilà je voulais terminé cette petite vidéo d'introduction avec quelques exemples j'ai pris que deux exemples parce qu'il pourrait y en avoir plein plein plein mais j'ai pris deux gros exemples de projets qui sont faits en majorité avec le langage c'est donc je voulais parler notamment du kernel, donc du noyau Linux.
Si vous connaissez ce système d'exploitation, le noyau est fait principalement en C, pas seulement, mais une grosse partie de ce noyau est fait dans ce langage. Donc si vous connaissez, vous savez très bien qu'il y a une grande fiabilité dans ce noyau-là. C'est pas du petit projet, c'est pas quelque chose qui est devenu obsolète, bien au contraire. Plus les années passent, et plus de gens s'intéressent à des systèmes alternatifs, Avant, on vivait toujours beaucoup dans Windows, Windows, Windows.
Il y a eu Mac qui s'est imposé très rapidement sur le marché. Il y a de plus en plus de gens qui s'intéressent aux solutions open source, aux solutions, pas équivalentes, mais aux solutions, on va dire, alternatives. Donc, si vous ne connaissez pas, vous pourrez vous renseigner un petit peu là-dessus. Je propose une formation Gnou Linux sur la chaîne aussi. Donc, voilà, vous pourrez retrouver comme ça pas mal de petites choses le concernant.
Il y a également, puisque je parlais de bibliothèque, la SDL. On le verra dans notre formation. c'est une bibliothèque que nous utiliserons donc vous voyez c'est pas moi ou c'est pas vous qui aurez créé ce code on utilisera un code qui a déjà été fait celui de la SDL qui permet par exemple de manipuler des images on l'utilise notamment pour faire des jeux vidéo en 2D ou pour gérer du son, on peut gérer des manettes on peut gérer le clavier et la souris bref on peut faire pas mal de petites choses donc ça c'est une bibliothèque que je vous apprendrai à utiliser au cours de cette formation on pourra faire des petits jeux vidéo on pourra faire des petites manipulations d'images pas mal de petites choses comme ça Donc voilà deux gros projets dont on parle assez activement, il y en a plein d'autres, c'est parce que je n'avais pas spécialement envie de faire un listing exhaustif là-dessus, mais ça c'est deux projets en tout cas qui sont bien parlants, qui sont tout à fait d'actualité, qui sont utilisés tous les jours et bien encore maintenant, et qui seront encore utilisés dans 20 ans sans aucun doute. Voilà, vous avez comme ça quelques petits exemples, et moi ça permet comme ça de terminer un petit peu. Avec cette première séance, j'espère que cette petite intro vous a plu.
Alors que ce n'était pas très, il ne s'est pas passé énormément de choses, j'ai surtout parlé, je vous ai présenté pas mal de petites choses, on n'a pas encore vu de code. Dans la prochaine séance, je vous apprendrai bien évidemment à compiler votre premier programme. Donc par rapport, je vous expliquerai bien évidemment quoi faire pour installer des bons outils, des bons programmes, etc. pour pouvoir travailler dans de bonnes conditions. On se retrouve à très bientôt dans une prochaine vidéo, dans la séance numéro 2.