Quand ne pas utiliser Python ?
lundi 15 décembre 2014 à 16:12J’ai lu récemment sur un forum la question “quand utiliser Python ?”. Mais la vérité c’est que Python est un langage globalement bon partout. En fait, on peut presque tout faire en Python car c’est un langage bourré de qualités avec une belle communauté et des libs pour presque tout.
Du coup, je pense qu’il est plus judicieux de se poser la question inverse : quand ne pas utiliser Python ?
Pour le moment, j’évite d’utiliser Python dans les cas suivants :
- L’équipe avec laquelle je travaille est bien meilleure dans un autre langage. Il faut profiter des compétences de chacun au maximum plutôt que privilégier une technologie, c’est plus productif.
- Je reprends du code d’un projet solide, dans un autre langage. Inutile de réécrire quelque chose qui est propre et qui fonctionne.
- Je travaille dans un environnement où d’autres technologies sont mieux intégrées. Par exemple, dans une entreprise avec une forte culture Java, faire les choses dans son coin ne va pas permettre un bon travail d’équipe. Travailler avec une boîte qui a des serveurs qu’ils ne peuvent pas changer et d’autres technos ? Inutile de forcer la main.
- Des technologies plus productives existent pour ce domaine : c’est le cas de l’embarqué, ou des jeux vidéos. Ça ne veut pas dire qu’on ne peut pas en faire en Python. En fait, il y a un fort travail de la communauté pour améliorer cela en ce moment même. Mais difficile de combattre les outils en C/C++ dans ces domaines.
- Je suis pressé, et la solution de facto n’est pas en Python. Par exemple, je veux faire du Web temps réel. Si j’ai le temps, je ferai du Python, car ce n’est pas grave si il me faut aiguiser moi-même quelques outils pour obtenir le résultat désiré. Si par contre j’ai 2 semaines devant moi, je prendrais NodeJS, malgré mon dégoût pour le Javascript, car je suis pragmatique.
- J’ai mesuré mes besoins objectivement, et est évalué que Python ne serait pas assez performant malgré toute les mesures d’optimisation que je sais mettre en œuvre. Dans ce cas, on se tourne vers des solutions plus lourdes mais nativement plus rapides : C, GO, Erlang etc.
- Je vise une plateforme en particulier (Windows, iOS…), je n’ai pas besoin de porter mon code, et je sais qu’utiliser les outils de la boîte qui fait l’OS me donnera de meilleurs résultats. Par exemple si je vise Android uniquement, utiliser leur SDK donnera une app plus fluide et une UI mieux intégrée.
Dans tous les autres cas, Python est un choix excellent.