Quel langage de scripting dois-je utiliser ?

which scripting language choose

En tant que developpeur c’est une question que l’on doit souvent se poser, étant donné qu’un bon développeur est un développeur fénéant (Three virtues) on utilise généralement le langage que l’on connaît le mieux, cependant est-ce vraiment la meilleure solution ?

Dans notre application nous utilisons le stack suivant :

  • AngularJS pour la partie Web
  • Java pour le backend
  • MongoDb pour la base de données

Pendant nos phases de développement nous avons souvent besoin de développer des scripts pour mettre à jour la base de données, les configurations etc. et nous demandons quel langage nous devrions utiliser. Nous avons actuellement les 3 langages suivant (ceux-ci peuvent évidemment être utiles dans d’autres cas d’utilisation, cependant dans le cadre de cet article nous nous limiterons au scripting) :

Date de création : 1990

Dernière version : 3.6.0 (Decembre 2016)

Gestionnaire de paquets : PIP

LAngage orienté objet

Facile à apprendre

Grosse communauté

Date de création : 2009

Dernière version : 7.4.0 (Janvier 2017)

Gestionnaire de paquets : NPM

Javascript

Facile à utiliser si l’on connaît javascript

Utilise des mécanismes asynchrones

Date de création : 2003

Dernière version 2.4.7 (Juin 2016)

Permet l’utilisation des librairies Java

Java

Facile à utiliser si l’on connaît Java

STATISTIQUES

Chaque année le site stack overflow fait un sondage (~50 000 votes) permettant d’analyser différents aspecter du travail de développeur, ci-dessous vous pouvez vous les technologies les plus populaires. Consulter le sondage !

stack overflow survey

Que peux t-on déduire de ce graphique ?

On peut voir que seulement 0.34% des réponses concernent Groovy, ce résultat est probablement biaisé puisque Groovy s’appuie sur Java, ce qui est par contre intéressant est que Python et Java sont quasiment au même niveau (environ 30%) et que nodeJS est à 17.2% (mais utilise Javascript)

EXEMPLE

Afin de comparer les 3 langages, j’ai développé un algorithme qui cherche un document dans notre base de donnée mongo, le met à jour et le recherche à nouveau pour afficher le résultat.

Python

python update db mongo

~10ms

NodeJS

nodejs update db mongo

~40/50ms

Groovy

groovy update db mongo

~15/20ms

Sur ces exemples on peux voir que :

  • Python est plus concis
  • Le fonctionnement asynchrone de NodeJS rends l’algorithme plus difficile à comprendre pour quelqu’un qui n’a pas l’habitude de lire du Javascript
  • Les requêtes sont plus compliquées à écrire en Groovy
  • Python et NodeJS ont une syntaxe similaire à MongoDB

En conclusion, dans cet exemple on peut voir que le langage le plus simple semble être le Python.
Personnellement je recommenderais d’utiliser Python pour sa simplicité, même si NodeJS nous permet d’utiliser directement des objets JSON.
Il est également possible de voir que NodeJS est plus lent que les deux autres langages.

PERFORMANCES

En fonction du cas d’utilisation, les performances doivent (ou non) être prises en compte quand on compare les différents langages.
Nous avons déjà vu dans notre exemple précédent que NodeJS était plus lent que les 2 autres langages, nous allons maintenant comparer les performances sur différents algorithmes.

Nous pouvons voir que NodeJS et Java sont plus rapides sur 3 des 4 algorithmes, cependant chaque langage à ses propres spécificités.
Ce qui est également intéressant est la charge CPU, on peut voir que NodeJS utilise beaucoup moins de CPU que les 2 autres langages, ceci peut être pris en compte par exemple si le programme doit faire d’importants calculs.

CONCLUSIONS

Au final, quel langage de scripting dois-je choisir ?!

Personnellement, je ne pense pas qu’il y ait de bonne réponse à cette question, tout dépend du cas d’utilisation.
Afin de choisir un langage il faut répondre aux questions suivantes :

  • Quels sont les langages sur lesquels l’équipe est à l’aise ?
  • Quel type d’application suis-je en train de construire ?
  • Est-ce que je dois prendre en considération les performances ?
  • Est-ce que je peux recruter facilement des gens qui connaissent ce langage ?

Lorsque l’équipe a répondu à ces questions, choisissez un langage et rester cohérents, n’utilisez pas 3 langages différents pour faire la même chose.

Chez Dexstr nous avons choisi d’utiliser Python pour nos scripts, ce qui est le plus en adéquation avec le monde de la « data science ».

Léo, Front End Lead Developer.

Share on LinkedInTweet about this on Twitter