« Langage C/Introduction au C » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 539 :
== Le langage C ==
 
Malgré tous ces langages de programmation disponibles, nous allons danstout au long de ce tutorielcours nous concentrer sur un seul langage : le langage C. Avant ded'entamer parlerconcrètement desla caractéristiquesprogrammation, il me semble important d'évoquer l'histoire de ce langage, ainsi que les caractéristiques et desles choix qui nous amènent à l’étudier dans ce cours, faisons un peu d’histoire.
 
=== L'histoire du C ===
Ligne 547 :
=== Pourquoi apprendre le C ? ===
 
C’est une très bonne question. Après tout, il existe tellement de langages différents, et on peut logiquement se demander pourquoi le C en particulier ? IlEn fait, il y a plusieurs raisons àqui peuvent motiver l'apprentissage du çaC.
 
* Sa '''popularité''' : il fait partie des langages de programmation les plus utilisés. Il possède une communauté très importante et de nombreux tutoriels et documentations. Vous aurez donc toujours du monde pour vous aider. De plus, il existe beaucoup de programmes et de bibliothèques développés en et pour le C.
* Sa '''rapidité''' : le C est connu pour être un langage très rapide, ce qui en fait un langage de choix pour tout programme où la vitesse d’exécution est cruciale.
* Sa '''légèreté''' : le C est léger, ce qui le rend utile pour les programmes embarqués où la mémoire disponible est faible.
* Sa '''portabilité''' : cela veut dire qu’un programme développé en C marche théoriquement sur n’importe quelle plateformeplate-forme. Il faut savoir que le C a été conçu pour la programmation système (drivers, systèmes d'exploitation, matériel embarqué, etc). Or, les plate-formes étant différentsdifférentes, il était difficile à l'époque d'avoir un code générique pouvant marcher sur n'importe quel environnement. La volonté des créateurs du C était donc de faire un langage permettant de produire du code portable.
 
Ce ne sont que quelques raisonsarguments parmi tant d'autres, mais ellesse sont à mon goutgoût des raisons plus que suffisantes pour apprendrejustifier l'apprentissage de ce langage. Bien entendu, le C comporte aussi sa part dedes défauts. On peut citer la tolérance aux comportements dangereux qui fait que le C demande beaucoup de rigueur pour ne pas tomber dans certains « pièges », unle nombre plus restreint de concepts (c’est parfois un désavantage, carqui onimpose estde alors obligé dedevoir recoder certains mécanismes qui existent nativement dans d’autres langages), etc. D’ailleurs, si votre but est de développer rapidement des programmes amusants, le C n’est pas du tout adapté pourà cet çausage, et je vous encourage à vous tourner vers d’autres langages commetel que le Python par exemple.
 
Le C possède aussi une caractéristique qui estpeut-être considérée à la fois comme un avantage et comme un défaut : c’est un langage plutôt de '''bas niveau'''. CelaC'est veutà dire qu’il permet de programmer en étant proche de sa machine, en cherchant à vraiment comprendre ce que l’on fait. C’est à double tranchant : c’est plus difficile et plus long, mais on en apprend beaucoup sur sa machine et on a un grand contrôle desur ce que l’on fait. Cette notion de bas niveau est d’ailleurs à opposer aux langages de '''haut niveau''', qui permettent de programmer en faisant abstraction d’un certain nombre de chosesnotions primordiales dans le cas d'un langage de bas niveau. Le développement est souvent plus facile et plus rapide, mais en contrepartie on voit moins bien le fonctionnement de la machine. Ces notions de haut et bas niveau sont néanmoins à nuancer, car elles dépendent du langage utilisé et du point de vue du programmeur.
 
JeMême terminesi cettec'est partieun enlangage rajoutantqui quelquene chose.sera Peut-êtrepas avez-vousabordé entenduau parlerlong dude ce cours, il me semble important d'évoquer le C++, dont vous avez peut-être déjà entendu parler. C’est un langage de programmation qui a été inventé dans les années 1980 par Bjarne Stroustrup, un collègue de Dennis Ritchie, qui souhaitait rajouter des éléments au C. Bien que très ressemblants à l’époque de sa création, ces deux langages sont aujourd’hui très différents (on ne programme pas et on ne réfléchit pas de la même façon en C qu’en C++). Ne croyez pas qu’il y a un langage meilleur que l’autre. Ils sont simplement différents. Si d’ailleurs votre but est d’apprendre le C++, je vous encourage à le faire directement. Contrairement à ce que l’on pense et dit souvent, il n’yest atout pasà besoinfait depossible connaitred'apprendre le C++ poursans ça.passer Cepar tutoriell'apprentissage nedu se concentrera quand à lui que sur ce dernierC.
 
=== La norme ===
 
Comme précisé plus haut, le C est un langage qui possède des règles. Ces règles ont été définies par des informaticiens professionnels et sont toutes regroupées dans ce que l’on appelle '''la norme''' du langage. Cette norme sert de référence à tous les programmeurs. Chaque fois que l’on a un doute ou que l’on se pose une question, le premier réflexe est de regarder dans la norme ce qui est dit. Bien entendu, la norme n’est pas parfaite, etelle ne répond pas à toutes les questions, que l'on pourrais se poser et ne précise pas tous les détails dont on pourrais avoir besoin. Néanmoins, elle reste '''la référence''' dude tout programmeur. Cette norme sert aussi de référence pour les compilateurs. En effet, tous les compilateurs respectent cette norme (en règle générale), afin de parer à différentes interprétations d’un même code.
 
Cette norme sertest aussidonc decomparable référenceaux pourrègles lesd’orthographe, compilateurs.de Engrammaire effet,et tousde lesconjugaison compilateursde respectentla cettelangue normefrançaise. (enSi règlel'on générale),ne cesuit quiplus faitces qu’ilrègles n’yet auraque pasl'on différentescommence interprétationsà d’unnous mêmeexprimer code.à Cettenotre normeguise, estil l’équivalentdevient desrapidement règles d’orthographe,impossible de grammairenous etcomprendre. deLe conjugaisonrésultat desera nosle interprètes. Imaginezmême si chacun écrivait ou conjuguaitcommence à sainterpréter guisedifféremment tout ce qu'il veutentend. La norme sert donc à officialiser tout un tas de règles pour que touschaque lespersonne souhaitant interprètescommuniquer (etles doncprogrammeurs) puisse être parfaitement compris par chaque interprète (les compilateurs) la suivent.
 
Il existe plusieurs versions de la norme : le C89, le C99 et le C11. Dans ce cours, nous avons décidé de nous servir de la norme C89. En effet, même si c’est la plus ancienne et qu’elle semble restrictive à certains, elle permet néanmoins de développer avec n’importe quel compilateur sans problèmes, contrairement aux normes C99 et C11 que tous les compilateurs ne connaissent pas. De plus, il est très facile de passer aux normes plus récentes ensuite. Voici [http://flash-gordon.me.uk/ansi.c.txt le lien] vers le brouillon de cette norme. Cela signifie que, ce n’est certes pas la version définitive et officielle, de la norme,mais celle-ci est très chère à obtenir, alors queet le brouillon est largement suffisant pour notre niveau et entièrement gratuit. Bien entendu, cette norme est en anglais.
 
== L’algorithmique ==