Magazine Focus Emploi

Ils aiment le C et moi aussi

Publié le 13 juin 2013 par Abouchard

J’ai déjà écrit plusieurs articles sur les langages de programmation : ceux que je connais, le modèle objet, l’utilisation de TinyCC pour créer un interpréteur, quelques remarques sur les syntaxes, ainsi qu’un article dans lequel j’expliquais les forces du PHP (et qui a reçu des réponses qui me font toujours rire un an après).

J’ai déjà exprimé clairement que mes deux langages préférés sont le PHP et le C ; le premier pour sa souplesse, son adaptabilité et la rapidité avec laquelle on atteint son objectif ; le second pour sa simplicité, son efficacité et le fait qu’il donne un accès direct et transparent à la machine.

Et c’est justement du C dont je vais rapidement vous parler. On a souvent l’impression que c’est devenu avec le temps un langage complètement has-been, et que même ceux qui veulent faire du développement compilé nativement s’orientent tous vers le C++ ; et qu’à moins que vous ne fassiez du développement embarqué (style mbed ou Arduino), choisir le C est forcément un mauvais choix.

J’ai toujours été contre cette vision des choses, mais je me disais que je devais être un peu particulier dans mon genre.

Récemment, je suis tombé sur plusieurs articles sur le web, qui m’ont fait voir que je suis loin d’être le seul à penser que les qualités du C sont toujours intactes.

Popularité

L’index TIOBE est très connu ; il mesure la popularité des langages de programmation. Devinez quel est le langage le plus populaire actuellement ?

TIOBE juin 2013

Eh oui, il s’agit bien du C, qui se tire la bourre avec le Java depuis pas mal de temps. Comprenez bien qu’il s’agit d’un indice de popularité, pas d’un benchmark de performances ou une étude sur les qualités intrinsèques des langages ou sur les fonctionnalités qu’ils proposent.

Non, cela montre simplement que le C est toujours un langage très utilisé de par le monde.

Performances

C’est un peu une évidence, mais ça va toujours mieux avec des chiffres. Je connais deux sites qui proposent des benchmarks entre les langages de programmation, basés sur différents algorithmes (certains très théoriques, d’autres plus proches de l’usage réel) : The Computer Language Benchmarks Games et The Great Win32 Computer Language Shootout.

Je vous laisse regarder par vous-même, mais les différents compilateurs C se retrouvent régulièrement en tête − ou dans le peloton de tête − des résultats.

Les autres exemples

Pour tout vous avouer, l’idée d’écrire cet article a commencé à germer en lisant un post sur le blog de Damien Katz, le créateur de CouchDB et directeur technique de CouchBase. Ce post a pour titre The Unreasonable Effectiveness of C.
Dedans, il explique pourquoi il apprécie le C, et pourquoi de plus en plus de parties du CouchBase Server sont écrites en C (il est écrit en Erlang à la base). Son article est très clair, et le point de vue de quelqu’un avec autant d’expérience est forcément très intéressant. Je vous invite à le lire en entier.

Juste pour le plaisir, je vais vous traduire le premier paragraphe :

Pendant des années j’ai essayé de m’éloigner du C. Trop simple, trop de détails à gérer, trop vieux et plein de cochonneries, de trop bas niveau. J’ai eu des amours intenses et torrides avec Java, C++, et Erlang. J’ai construit des choses dont je suis fier avec chacun d’eux, et pourtant ils m’ont tous brisé le cœur. Ils ont fait des promesses qu’ils ne pouvaient pas tenir, créé des cultures qui mettent l’accent sur de mauvaises choses, et ont fait des compromis dévastateurs qui font souffrir douloureusement au final. Et je reviens à chaque fois au C.

Plus récemment, je suis tombé sur un article (en fait deux) écrit par Martin Sústrik, le co-créateur, architecte et principal développeur de ZeroMQ. Je vous ai déjà parlé de cette bibliothèque réseau (là, là et là, ainsi que lors de conférences), c’est un incroyable morceau de logiciel.
Son article s’intitule Why should I have written ZeroMQ in C, not C++. Difficile de faire plus explicite. Là encore, je vous conseille de le lire en entier (ainsi que la seconde partie). C’est assez technique, il parle des exceptions et de la gestion mémoire, notamment. On peut ne pas être d’accord avec sa vision des listes intrusives, mais là encore son expertise rend son opinion intéressante.

Pour info, il a réimplémenté ZeroMQ en pur C. Le projet s’appelle nanomsg, j’ai commencé à l’utiliser, c’est une tuerie.

Et pour moi ?

J’ai commencé tout récemment à travailler sur un nouveau projet (pour occuper mon temps, comme s’il m’en restait de libre…). Si ce projet aboutit, il n’aura d’intérêt que par ses performances. Je me suis donc tourné vers le langage le plus rapide que je connaisse. Et comme à chaque fois que je refais un peu de C, c’est un grand plaisir.

Évidemment, il faut un peu plus de temps que si je codais les choses en PHP (ou un autre langage interprété), particulièrement quand on commence à vouloir manipuler des chaînes de caractères, des listes ou des tableaux associatifs. Et il faut courir après les bibliothèques nécessaires, là où les autres langages fournissent beaucoup de choses de base.
Mais l’impression de puissance est grisante. La mémoire est là, à portée de main, on en fait ce qu’on veut. On contrôle exactement les threads et les processus à notre guise. Pas d’overhead, pas de choses cachées, pas de “magie” qui fait le boulot à notre place. La maîtrise du code est totale, et en contrepartie il n’y a aucune aide derrière laquelle se réfugier.

Avantage secondaire, du code écrit en C compile partout et n’a pas d’autre dépendances que celles que vous avez choisies.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Abouchard 392 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte