Que vous entrepreniez votre premier pas dans le monde de l’algorithmique, ou que vous soyez un vétéran de la programmation, vous avez sans doute rencontré toutes sortes de légendes qui courent à propos du langage C. Vous avez certainement entendu des gens dire qu’il s’agit d’un langage difficile et dépassé, et qu’il serait de votre intérêt d’en apprendre un autre plus facile et plus pratique. Alors dites-vous bien, que d’un côté, ils ont absolument tort.
Assurément, C est probablement l’un des langages les plus persistants de l’histoire de l’informatique. Toute la programmation logicielle des noyaux système l’adopte, du fait de sa rapidité d’exécution , comparativement à d’autres langages populaires comme JAVA.
Pourquoi fuit-on ce langage ?
Le langage C est souvent considéré comme un langage de recherche et d’ingénierie, compte tenu de la grande rigueur que le programmeur doit démontrer pour coder des instructions complexes. Ceci n’est pas une caractéristique inhérente de C, il s’agit en effet d’un critère répandu parmi les langages compilés.
Par ailleurs, il est primordial de souligner que le langage C a également beaucoup de dérivés très connus, essentiellement C++ et C#, et qu’il constitue le pilier de beaucoup d’autres langages comme le célèbre PHP, un incontournable pour la programmation web.
Il faut pourtant admettre que la programmation C est d’une difficulté élevée comparée à d’autres langages, et la réputation qu’il tient auprès des développeurs tient ses origines d’une notion qui lui était au départ : celle des pointeurs.
Les pointeurs expliqués en quelques lignes
Les pointeurs font toute la force du langage C (et du C++, Java, etc.). Leur utilité peut être débattue au début, mais dès que l’on acquiert le savoir de les manipuler, ils deviennent presque indispensables : dans le cas où vous voulez avoir accès à une variable depuis une fonction, vous aurez accès à une simple copie, ou un « hologramme » du contenu de la variable en question. La fonction va utiliser cette copie pour retourner un résultat sans pour autant modifier la variable, ce qui semble parfois problématique.
Les pointeurs aident à résoudre ce problème, car ils vont agir comme des marques page ou des flèches, indiquant à la fonction l’adresse mémoire de la « vraie » variable pour qu’elle puisse modifier directement son contenu.
Les pointeurs sont encore plus utiles dans C++, plus exactement dans le cas d’une allocation dynamique, qui désigne une gestion plus appropriée de la mémoire. Par exemple dans le cas où l’utilisateur souhaite travailler avec un tableau, l’allocation dynamique permet de lui réserver des éléments mémoire qui ne sont pas forcément contiguës, quitte à une utilisation plus modérée de l’espace mémoire. Toutefois, le problème qui se pose, c’est que sans l’aide des pointeurs, et notamment leur capacité à stocker les adresses mémoires, ce genre d’allocation sera très anarchique.
Sur le même sujet : Les langages de développement web à la mode
Comment le langage de programmation C est-il encore utilisé aujourd’hui ?
La programmation C a bel et bien sa digne place dans le futur, plus exactement dans l’IoT. Assurément, l’internet des objets repose essentiellement sur les systèmes embarqués, et sur la capacité des équipements à effectuer des traitements d’une façon autonome. Cette tendance a effacé quelque peu la présence de la programmation procédurale. D’ailleurs c’est la raison pour laquelle C++ a vu le jour, qui se veut une version orientée-objet de C.
Le langage C est également à l’origine des systèmes d’exploitation UNIX. Son apprentissage est essentiel pour les administrateurs réseau et des informaticiens, car il permet l’accès à des fonctionnalités avancées dans les systèmes de noyau Linux, ainsi que l’optimisation des requêtes de ligne de commande avec les bibliothèques du programme AWK, un dérivé très utile et absolument puissant, permettant une manipulation plus sophistiquée du système.
En outre, le langage C est souvent utilisé pour la programmation de la majeure partie des circuits électroniques embarqués, les plus répandus étant les cartes Arduino (dont le langage dédié est très proche du C ou C++), qui sont à leur tour largement utilisées dans la robotique et l’automatisation dans la domotique.
Et ce n’est pas tout ! Les périphériques de traitement de signal, comme les DSP, composantes consubstantielles à tout type de matériel dédié au traitement du son et de l’information dans les systèmes de télécommunications, reposent également sur la programmation sous le langage C, et sur sa capacité élaborée à combiner robustesse et évolutivité.