Syronex

Le paradoxe de Python

Dans une intervention récente j'ai dit quelque chose qui a faché beaucoup de gens : qu'on peut engager des programmeurs plus intelligents pour travailler sur un projet en Python que pour travailler sur un projet en Java. Je n'ai pas voulu dire par là que les programmeurs en Java sont idiots.

Je voulais dire que les programmeurs en Python sont futés. Apprendre un nouveau langage de programmation, c'est beaucoup de travail. Et les gens n'apprennent pas Python parceque ce leur permettra d'obtenir un travail; ils l'apprennent parce qu'ils aiment sincèrement programmer et ne sont pas satisfait des langages qu'ils connaissent déjà.

Ce qui fait d'eux exactement le genre de programmeurs que les compagnies devraient vouloir recruter. D'où ce que j'appellerai le paradoxe de Python, faute d'un meilleur nom : si une compagnie décide d'écrire ses logiciels dans un langage comparitivement ésotérique, elle aura alors la possibilité de recruter de meilleurs programmeurs, parcequ'elle attirera seulement ceux qui se seront donné la peine d'apprendre ce langage. Et du côté des programmeurs le paradoxe est encore plus prononcé : le langage à apprendre pour accéder à un bon emploi est un langage que l'on n'apprend pas seulement dans le but d'avoir un travail.

Seules quelques sociétés ont été assez intelligentes pour s'en rendre compte jusqu'à présent. Mais il y a également une sorte de sélection de ce côté là : ce sont exactement les sociétés pour lesquelles les programmeurs préféreraient travailler. Google, par exemple. Lorsqu'il publient des offres d'emploi en programmation Java, il demandent aussi une experience en Python.

Un de mes amis qui connait presque tous les langages les plus répandus emploie Python pour la plupart de ses projets. Il dit que la raison principale est qu'il aime l'aspect du code source. Cela peut sembler une raison frivole de choisir un language plutôt qu'un autre. Mais ce n'est pas aussi frivole que cela ne le parait: quand vous programmez, vous dépensez plus de temps à lire du code qu'à en écrire. Vous manipulez les blocs de codes source de la même manière qu'un sculpteur le fait pour des blocs d'argile. Donc un langage qui génère un code source désagréable à lire est aussi oripillant pour un programmeur que l'est une terre grumeleuse pour un sculpteur.

A la mention de code source désagréable à lire, les gens pensent evidemment immédiatement à Perl. Mais la laideur d'apparence de Perl n'est pas de celle dont je parle. La veritable laideur n'est pas une syntaxe rude mais de devoir construire des programmes à partir des mauvais concepts. Perl peut avoir l'air d'un personnage de dessin animé en train de jurer, mais il-y-a des cas où il surpasse conceptuellement Python.

Jusqu'à présent de toute façon, ces deux langages sont bien sure des cibles mobiles. Mais ils partagent, avec Ruby (et Icon, Joy, J, Lisp et Smalltalk) le fait qu'ils ont été créé par, et sont utilisés par des gens pour qui la programmation importe vraiment. Et ces personnes ont tendance à être ceux qui le font bien.

Article de Paul Graham publié en août 2004 en anglais sous le titre « The Python Paradox »