Si on a un topic sur la programmation je suppose que je devrais raconter l'histoire de ma haine envers Python.
Je ne sais pas quand j'ai entendu parler de Python pour la première fois, mais ça ne m'a pas trop intéressé au début. (C'est vrai que je n'aspirais pas beaucoup à être « multilingue » quand j'étais jeune
– le français ne m'intéressait pas trop au début non plus 
) Quand j'ai commencé à utiliser Linux en 2011, les programmes en Python sont devenus assez importants pour moi, notamment PlayOnLinux, mais mon indifférence a continué.
En 2014, j'ai commencé à lire
Linux Voice. Dans ce magazine, il y avait des tas de tutoriels dans lesquels la programmation jouait un rôle, et la plupart de ces tutoriels utilisaient Python. J'ai décidé d'en lire un vers la fin de 2014, ou peut-être vers le début de 2015, et j'ai remarqué que les blocs sont marqués seulement par l'indentation. Je trouvais que c'était une attaque insupportable sur la lisibilité, et aussi sur la liberté du programmeur. Je me suis donc dit que j'essaierais d'éviter d'utiliser ce langage.
À la fin de 2015, j'ai eu l'idée dingue de me faire un Linux from Scratch. Il a bientôt fallu installer un interpréteur Python, et j'ai suivi les
instructions sur le wiki CBLFS pour compiler une version « multilib » de CPython. Pourtant ces instructions n'ont pas très bien fonctionné, et les conséquences m'ont donné pas mal de douleur, au moins jusqu'à l'
anéantissement du système vers la fin de 2016. Les problèmes que j'ai eu avec Python en utilisant ce système LFS ont renforcé mes sentiments négatifs envers le langage. Bien sûr, c'était la configuration de CPython qui me donnait les problèmes, pas le langage lui-même, mais quand même il faut noter qu'aucun autre paquet ne m'a donné tant de problèmes à cause de la configuration multilib.
Suite à l'anéantissement déjà mentionné j'ai crée un nouveau système LFS et j'ai décidé de faire deux installations complètement séparées de CPython : une version 64-bits dans /usr et une version 32-bits dans /opt/python32. Pas trop beau, mais ça marche. Après ça ma haine a diminué un peu.
Un mois plus tard, j'ai commencé mon stage, et j'ai vite appris à utiliser le logiciel qu'ils ont pour analyser les données mesurées dans le labo. J'ai vite appris aussi que ça a été programmé, en Python, par un mec qui a quitté l'entreprise pendant mon premier semaine ! J'ai vu quelques inefficacités dans le logiciel que j'ai mentionnées à mes collègues et à mon superviseur. On m'a dit de mettre des bogues sur notre Bugzilla, et quelqu'un s'y mettrait. Pourtant je me suis vite rendu compte qu'il n'y avait personne qui saurait (ou aurait suffisamment de temps pour) modifier ce drôle de programme. Mon superviseur m'a dit que l'entreprise allait recruter quelqu'un pour s'occuper de notre logiciel, mais après quelques mois (et un dessert très sucré à un déjeuner de l'équipe !) j'ai décidé que j'en avais marre et j'ai commencé à faire des patchs, malgré mes problèmes avec le langage.
Mes supérieurs ont remarqué ce que j'ai pu faire, et m'ont dirigé vers un autre logiciel presque oublié, créé par le même mec, pour faire des simulations optiques. Pendant les semaines et mois suivants, j'ai fait beaucoup de simulations différents, tout en apprenant (et maudissant !) peu à peu ce langage avec lequel il me fallait tout faire. L'indentation m'a bien sûr donné des problèmes. Je ne sais pas quel éditeur le mec a utilisé, mais toutes ses indentations sont de quatre espaces. Moi j'utilise Gedit (oui, j'aurais préféré Vim, mais ça n'est pas installé sur nos ordis

) qui garde de vrais '\t' quand j'appuie sur Tab. Dans l'éditeur, un Tab a la même apparence que quatre espaces, mais Python ne sait pas que ce sont la même chose. J'ai amusé mes collègues je ne sais combien de fois en hurlant quand après avoir reçu des « IndentationError » !
Malgré tout je suis devenu le « Python go-to guy » et j'ai maintenant fait beaucoup de modifications au logiciel d'analyse, qui simplifient ma vie et les vies des autres ingénieurs. Aujourd'hui j'ai ajouté un fonctionnement qui utilise des regex, que j'avais en tête depuis quelques semaines. À vrai dire, j'atermoyais cette modification particulière, parce que je savais que ce serait une déception de devoir utiliser des regex en Python, au lieu de mon Perl bien aimé. Et j'avais raison. Je trouve
Code: Select all
devnumber_obj = re.search(r'dev_?(\d{1,2})',datalabel)
if devnumber_obj:
devnumber = int(devnumber_obj.group(1))
return devnumber
beaucoup moins naturel que
Code: Select all
if ($datalabel =~ /dev_?(\d{1,2})/) {
$devnumber = $1;
return $devnumber;
}
Alors, malgré mes objections morales, malgré tous les problèmes que j'ai eu en 2016, malgré les problèmes que je continue à avoir chaque jour, le langage Python est au cœur de tout le travail important que je fais en ce moment. Quelle ironie !
