– Toc, toc, toc.
– Qui est là?
– Mon p’tit.
– Mon p’tit qui?
– Mon p’tit Python.
– … ‘est même pas drôle.
– On peut pas tout avoir dans la vie.
Programmer c’est pratique. Pas essentiel dans la vie, mais pratique: on utilise les ordinateurs pour une tonne de choses, il est parfois très intéressant de les utiliser pour résoudre des petits problèmes de la vie de tous les jours, genre « Je veux faire une base de données de résultats de jeux de société » ou « ce serait cool un générateur aléatoire de scénario pour un de mes hobbys« . Ndl’A: Outre la pure hystérie de ma blague d’ouverture, le langage tire réellement son nom du groupe britannique d’humour absurde.
J’ai utilisé quelques langages de programmation au cours de ma vie, mais principalement Java, Perl et PHP. J’en ai tiré beaucoup de bénéfices, mais je cherchais depuis quelques temps un « nouveau défi », une occasion de moderniser mes talents de programmeur du dimanche (je ne prétend à rien de plus!), et je suis tombé sur Python. Quelques observations:
Première observation: le Python se « lit » beaucoup mieux que ces langages, particulièrement le Perl. C’est important pour deux choses: à la fois pour lire ce que les autres ont écrit si on veut utiliser ou déboguer du code de quelqu’un d’autre, mais aussi pour SE relire 2 jours plus tard et comprendre ce qu’on voulait bien vouloir faire avec notre code. Une illustration (vous irez voir le code ci-dessous): Python force l’utilisation de l’indentation pour les « if » et ce genre de structure, ce qui veut dire qu’on peut constater au premier coup d’oeil « qu’est-ce qui est dans le if et qu’est-ce qui ne l’est pas ». Aussi, ne pas se battre pour un « } » oublié: un million de programmeurs soupirent de soulagement.
Deuxième observation: C’est hyper-versatile et ça fait un peu de tout nativement. Ça fait du parallélisme, des interfaces graphiques, et de la programmation orientée-objet. Il y a tout ce qu’il faut comme types de données, surtout mon p’tit préféré: des « dictionnaires » (un « hash » en Perl). Il y a beaucoup de librairies intéressantes et simples d’utilisation qui sont héritées des langages précédents. C’est utilisé pour le web et pour de la programmation « admin » comme « crazy glue » entre les systèmes (ma spécialité). Bref, il serait suprenant d’avoir à aller voir ailleurs parce que « Python le fait pas » ou « Python le fait pas bien ».
Troisième observation: C’est partout. Il existe des implémentations stables et utilisable de Python sur toutes les plateformes majeures (Windows, OSX et Linux minimalement), et il est très facile de réutiliser le même code Python d’un environnement à l’autre. En plus, vu que c’est plutôt « à la mode », la communauté est très active et pas super chiante avec les débutants. Ceux qui se retiennent pour crier « .Net! » depuis tout à l’heure peuvent arrêter, l’une des tares de cette plateforme à mes yeux étant son Windows-centrisme.
Évidemment, rien n’est parfait. Le « Gros Défaut » de Python universellement reconnu c’est que la performance est parfois un peu so-so, mais à l’échelle où je veux l’utiliser, ce ne sera pas un problème pour moi autant que ces quelques facteurs:
- C’est moins web-friendly que le PHP: ça se fait mais tu vois que le Python n’a pas été pensé pour faire des pages web rapidement à la va-vite.
- C’est moins « hacker » que le Perl. Comme disait mon prof de programmation: « ça marche très bien le Perl, c’est ça le problème ». On peut faire en une ligne de Perl des « twists » hallucinantes, en Python tu vas être obligé de tout écrire « au long », mais tu y gagnes en santé mentale au bout du compte.
- En théorie ça joue dans les mêmes platebandes que le Java, mais pas sûr que ce soit moins quoi que ce soit que le Java. C’est un peu « ringard », le Java en ce moment, et on a beau dire, la « coolitude » d’un langage de programmation joue pour beaucoup dans la capacité à trouver des ressources. Faut dire qu’à force d’avoir des vulnérabilités de sécurité, Java s’est retrouvé désactivé de la plupart des systèmes à la maison.
Voici donc un exemple de code que j’ai fait. Je suis resté tout à fait surpris: je venais tout juste d’ouvrir le livre de Python, j’avais un peu de « traitement de texte » à faire (nommément prendre une liste de résultats par date et heure, et n’imprimer qu’un seul résultat par minute), et j’ai pondu ce qui suit en 5 minutes, avec 1-2 erreurs de syntaxe tout au plus, et ça a fonctionné tout de suite comme un charme:
1 #!/usr/bin/python
2 import sys
3 filein = sys.argv[1]
4
5 fichierlog = open(filein,'r')
6
7 lastminute = None
8
9 for ligne in fichierlog: # Format: "Thu Jan 16 02:47:03 EST 2014,11"
10 temps = int(ligne.split(",")[1])
11 dateheure=ligne.split(",")[0]
12 minute = dateheure.split(" ")[3].split(":")[1]
13
14 if minute!=lastminute:
15 lastminute=minute
16 newligne = dateheure+","+str(temps)
17 print newligne
Les plus programmeurs d’entre vous pouvez assez bien « lire » l’intention du programme, et les autres se disent juste « Ah, c’est ça programmer? Ça a pas l’air si compliqué que ça, pourquoi ils sont payés si cher que ça d’abord? », et c’est tant mieux. Bref, je termine par le début en mentionnant que c’est le besoin de comprendre et potentiellement réutiliser des scripts au travail qui m’a poussé à regarder du côté de Python, surtout quand je me suis rendu compte que je pouvais vraiment les réutiliser parce que c’était clair ce que le code faisait.
Et ça, c’est beau.