Pour ceux qui ne connaissent pas (en gros les non-informateux), Python est un des langages à la mode, pas dans la section « hype cool qui en met plein la vue mais qu’on aura oublié dans deux ans » mais dans la plus sérieuse « c’est en prod’ depuis une décennie, Google utilise massivement, et y a pléthore d’applis et de bibliothèques ».

Depuis des années je ne code plus qu’en SQL ou un méta-équivalent, ou en bash, et je voulais retrouver un langage généraliste, agréable, plus concis que Java (c’est pas dur), de plus haut niveau que le C, qui ne me prenne pas le chou à apprendre, moins spécialisé que l’ABAP, plus répandu que l’Objective C, assez établi pour que l’investissement en vaille la peine, impérativement utilisable sur Mac comme Linux, éventuellement Windows, et accessoirement potentiellement utilisable au boulot (ça fait toujours bien sur le CV et bricoler une petite application rapidement peut sauver la vie ou juste une soirée).

Finalement, à part peut-être Ruby, il n’y a à ma connaissance que Python à remplir le cahier des charges.

Globalement c’est très positif. J’ai dévoré un bon livre d’initiation sur le sujet que je recommande, mais pas encore réalisé grand-chose d’envergure, donc ce qui suit sera à revoir dans quelques mois :

J’aime :

  • le côté multiplateforme (Linux, Mac, Windows), y compris pour la partie graphique avec PyQt4 (on verra ce que ça vaut à l’usage) ;
  • la syntaxe assez propre (je suis un ancien du Pascal, le C est trop dangereux pour un étourdi comme moi, et Perl est illisible) ;
  • l’intégration de plein de paradigmes à la mode avec les librairies qui vont bien : les tests intégrés (assert), la documentation automatique...

Je suis surpris par :

  • les espaces significatifs : un coup à prendre paraît-il, mais mélanger le formatage et la syntaxe, bôf bôf… ;
    (Mise à jour de 2009 : Finalement, c’est une excellente idée qui allège beaucoup le code.)
  • les distinctions subtiles entre listes, ensembles, tuples, en fin de compte logiques à l’usage, et entre types mutables et immutables — il faut savoir ce qu’on manipule.

J’aime pas trop, peut-être parce que ça casse mes habitudes, mais je vivrai avec :

  • le côté interprété (mais comme disent certains, le plus lent là-dedans c’est encore le développeur, et c’est son temps qu’il faut économiser) ;
  • la non-déclaration des variables, ne serait-ce que parce que je suis le roi des fuates de frappe ;
  • le non-typage explicite des variables, certes plutôt logique quand tout est objet, mais qui doit ouvrir des classes entières de bugs.
    (Ces deux derniers points se résumant en « je ne peux pas contraindre les objets que je manipule ».)

Thias avait aussi découvert le langage il y a peu et pour le moment j’aurais tendance à partager les mêmes impressions.