Avec sa version 3.0, Python mue pour s'harmoniser
Malgré quelques incompatibilités clairement affichées, la version 3.0 de Python habille un des langage tendance du développement Web d'une nouvelle peau, gage de sa maturité. Une nouvelle forme pour gommer ses erreurs de jeunesse.
« La première version de Python où la rétro compatibilité a été intentionnellement oubliée. » C'est en ces termes que Guido van Rossum, développeur principal de Python a inauguré la sortie de la version 3.0 de son langage. Une mouture qui tranche avec les versions précédentes et extrait le langage de son ère 2.0 pour le plonger dans une mise à jour, «plus que majeure ». Au programme, syntaxe révisée et comme prévu depuis plusieurs mois, une incompatibilité fermement assumée avec les versions existantes. Le tout, pour un futur meilleur.
Python fait parti de ces langages qui montent, à l'image de Ruby (avec son framework Ruby on Rails) dont nous évoquions récemment l'ascension à l'occasion de Paris on Rails 2008. Python, qui a fait ses débuts en 1991, est à la base d'environnements comme Zope, ou encore du framework Django qui motorise, avec son système de template, Google App Engine, le framework de développement d'applications dans le nuage de Google. Le groupe a par ailleurs recruté Guido van Rossum.
Selon une étude EvansData, Python est réputé auprès des utilisateurs pour la lisibilité du code et sa facilité d'usage. Toujours selon cette même étude, il occupe la 4e place des langages interprétés préférés des développeurs, derrière Ruby, Atlas (le framework Ajax de Microsoft) et Flex (Adobe). PHP arrive en 6ème position de ce classement.
Harmoniser le langage
Cette version 3.0 de Python rompt avec le cycle classique du langage, en le corrigeant et en gommant ses défauts. C'est ainsi que Guido van Rossum résume en substance les modifications apportées à Python 3.0. Un point que confirment Philippe Lafaye et Julien Fache, deux développeurs de la SSLL Emencia spécialisée dans les développements Python, pour qui « cette mise à jour a justement pour but d'effacer les erreurs de jeunesse du langage, le faire progresser en prenant en compte l'évolution des besoins dans le milieu informatique, et de profiter d'idées qu'ont pu apporter certains nouveaux langages ». C'est notamment le cas de la Curryfication, un concept de programmation imaginé par le logicien américain Haskell Curry, déjà présent dans Perl, et qui a été introduit dans la version 2.6 de Python.
C'est ainsi le prix à payer de quelques incompatibilités, semblent-ils dire. D'autant que « les changements dans l'environnement Python pur ne sont pas si grands. Le plus représentatif est le passage du mot clef "print" [qui permet d'afficher les résultats d'une opération, notamment NDLR] en fonction. Il va falloir se re-adapter légèrement à la nouvelle syntaxe mais rien de contraignant ». Et d'ajouter : « Il faut savoir qu'à chaque version majeure de Python, de nouveaux éléments se greffent à la syntaxe et revoir sa manière de développer est donc déjà une habitude ».
Ces problèmes d'incompatibilités ne sont donc pas si handicapants que cela, pour le développeur. « L'apport de Python 3.0 est vraiment plus considérable que ses problèmes de non retro-compatibilité, avec notamment la gestion du tout Unicode qui évitera les trop nombreux problèmes d'encodage, » commentent Philippe Lafaye et Julien Fache dans un email envoyé à la rédaction.
D'autant que la migration vers la 3.0 depuis la 2.x, si elle peut être délicate, notamment « au niveau de l'interfaçage avec C », a été planifiée à l'avance par les équipes de la communauté Python. Un passage presque sans douleur puisque « la version 2.6 sortie il y a 2 mois, intègre les nouveautés de Python 3.0 en gardant la compatibilité 2.5 », soulignent-il.
Restera alors à appliquer le script 2to3 qui « s'occupe d'automatiser la migration de code 2.6 en 3.0 » et viendra ainsi, une fois quelques correctifs appliqués, clore la procédure de migration. Et ce, sans ré-écriture de code. Pas question alors de voir la communauté s'éroder et filer à l'anglaise vers d'autres langages, comme Ruby.