Python, un langage en demi teinte

J’ai depuis plusieurs mois l’occasion de coder régulièrement en Python. Je commence à être familier avec ce langage, ce qui m’a conduit à mener une réflexion à son sujet.

D’une manière générale, je pense que Python est un langage moderne et bien conçu.

pythonSa syntaxe est assez différente de celle du C dont beaucoup de langages se sont inspiré. La principale différence réside en le fait que l’indentation a une sémantique forte en Python et c’est finalement un concept assez intelligent. Une fois passée la frustration liée à l’absence de point-virgules et d’accolades, on se rend assez vite compte que l’indentation est tout à fait suffisante. Dans des langages inspirés de C, elle n’est pas nécessaire pour le compilateur mais presque indispensable pour l’humain (et c’est parfois un peu dangereux). Python propose là une solution que je trouve élégante.

name = 'Foo'

if name is not None:

    print('Hello %s' % name)

J’apprécie également la volonté dans le choix des mots-clés de s’approcher du langage naturel. C’est un point positif pour ce qui concerne la lisibilité du code.

Les paramètres de fonction optionnels et nommés permettent de limiter le nombre de lignes de code, et faire de jolis DSL, même si il faut résister à la tentation de les utiliser systématiquement. Souvenons-nous que moins une fonction a de paramètres, mieux c’est.

J’apprécie également le fait que l’API de base intègre le support des concepts utilisés les plus couramment, ce qui n’est pas forcément le cas dans tous les langages, dont entre autres :

  • De quoi lire et écrire du XML ou du JSON
  • Un client HTTP
  • De quoi lire dignement les paramètres d’une commande (argparse)
  • Un framework de tests unitaires avec support natif des mocks

En plus de ce qui est fourni par défaut, on trouve de nombreuses bibliothèques qui sont pour la plupart publiées sur le dépôt central PyPi.

L’interpréteur Python en mode interactif peut être pratique, cela permet de tester des petites portions de code lorsqu’on tâtonne avec une API qu’on ne maîtrise pas forcément par exemple, ou alors quand on met au point une expression régulière.

Mais Python est un langage dynamique, et je n’aime vraiment pas ça. J’avais déjà eu l’occasion de détailler ce que je reproche à ces langages qui sont pourtant parfois très sexy. J’ajoute également que la syntaxe très expressive de Python, qui permet d’écrire beaucoup en peu de caractères, peut être à double tranchant. Il faut veiller à ne pas en abuser pour ne pas nuire à la lisibilité du code.

Pour conclure, je dirais que Python est un très bon langage quand il s’agit d’écrire des petits outils, mais à mon sens, ce n’est pas envisageable d’utiliser Python dans un projet qui dépasse la dizaine de milliers de lignes et sur lequel plusieurs développeurs travaillent.

Je serais tenté de dire que, finalement, le langage parfait serait un langage statique avec des concepts modernes comme ceux de Python. Et si ce langage était Ceylon ?

 

L’image d’en-tête provient de Flickr.

Une réflexion sur « Python, un langage en demi teinte »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.