Pourquoi est-ce si compliqué de changer de langages de programmation ?

difficulte a changer de langages de programmation

Vous apprenez à coder et vous ne comprenez pas pourquoi il est difficile de changer de langages de programmation ? Pourtant, vous savez que la base de tous les langages c’est l’algorithmique. Alors pourquoi connaître l’algorithmique n’est-il pas suffisant ?

Je discute régulièrement avec des recruteurs et des commerciaux qui me posent ces questions. Ils aimeraient pouvoir recruter un développeur C++ pour travailler sur un projet Java, ou vice-versa. Seulement cela ne marche pas. Je ne dis pas que c’est impossible, je dis juste que cela demande un effort particulier et surtout, du temps !

Je vais faire ici un parallèle avec quelque chose que vous connaissez bien, vous verrez, en fait c’est super simple !

 

Bases de notre comparaison

Imaginons que l’algorithmique est l’équivalent des mouvements de base du corps humain. Je parle ici du fait de savoir marcher, courir, sauter, soulever quelque chose, attraper, lancer, etc. Je vous propose donc de faire le parallèle entre tous ces mouvements de bases simples et l’algorithmique.

Vous noterez que nous ne sommes pas nés avec la connaissance de tous ces mouvements. Très jeunes, nous les avons tous appris, généralement dans les 4 premières années de notre vie. C’est le tronc commun qui nous permet de faire de nombreuses choses au quotidien. Nous ne nous en rendons même plus compte.

Admettons donc que l’algorithmique, avec les boucles, les conditions, les concepts d’instruction et de variables, est l’équivalent des mouvements de base du corps.

 

Selon vous, quel peut être l’équivalent d’un langage ?

 

Comparaison entre langages et sports

Joueuses RugbyJe vous propose de comparer les langages aux différents sports que vous pouvez pratiquer.

Tout d’abord, pour pratiquer un sport vous devez maitriser les mouvements de base utiles à ce sport. Impossible de jouer au foot, et à de nombreux autres sports, si vous ne savez pas courir.

Voyez là un parallèle fort avec l’algorithmique ! Connaître les mouvements de base du corps et être capable de les réaliser vous permet de débuter dans un sport. Cela ne vous permet pas de maitriser directement ce sport. Vous avez encore de nombreuses choses à apprendre, n’est-ce pas ? Winking smile

Savoir envoyer un ballon à quelqu’un est une capacité nécessaire pour débuter le Handball ou le Volley-ball. Il faut ensuite apprendre à faire ce geste dans les conditions d’un match, généralement en déplacement, en respectant les règles du sport, et en étant le plus précis possible !

Sans oublier que dans l’exemple ci-dessus, le fait d’envoyer le ballon à quelqu’un ne se fait pas exactement de la même manière. Il s’agit toujours d’envoyer. Mais au Handball vous attrapez la balle pour l’envoyer ensuite alors qu’au Volley-ball vous n’avez pas le droit de stopper la balle. Il faut juste lui donner un nouvel élan dans la direction qui vous intéresse.

Tous les autres sports où l’on envoie une balle ont également des spécificités :

  • Rugby : envois exclusivement vers l’arrière,
  • Tennis, badminton : utilisation d’une raquette,
  • Football : exclusivement au pied,
  • Basket : envois assez libres,
  • Etc.

De manière similaire, vous avez également des différences dans la manière d’utiliser l’algorithmique dans chaque langage.

 

Changer est compliqué

Soyons clairs, les différences sont tout de même moins grandes en informatique qu’en sport.

Toutefois les différences existent et peuvent troubler des développeurs débutants, voire même expérimentés.

Vous avez pris l’habitude d’utiliser les variables dès que vous en avez besoin sans les déclarer avant ? C’est vrai que votre langage vous le permet, donc pourquoi pas ?

Forcément, passer à un langage qui oblige à déclarer les variables avant sera un peu plus compliqué pour vous.

Il existe des différences similaires à celle-ci sur tous les aspects des langages.

L’écriture des instructions, des boucles, des conditions, sur la visibilité des variables, leurs valeurs par défaut, etc.

Il faut réellement un temps d’apprentissage spécifique d’un langage à un autre. Cette durée est très variable en fonction des langages que vous connaissez déjà et du langage que vous souhaitez apprendre.

J’ajoute qu’il est même parfois plus problématique de changer de langage pour un expert. Cela tient beaucoup plus à la psychologie qu’à la technique. Combien d’experts de leurs domaines sont prêts à accepter de redevenir débutants dans un nouveau langage ? De réapprendre une partie non négligeable de leurs compétences ?

Pour revenir à notre comparaison, un sportif peut passer d’un sport à un autre, cela s’est déjà vu. Il devra s’adapter et apprendre certains mouvements différents. Il devra même travailler spécifiquement pour automatiser ces mouvements qu’il ne pratiquait pas avant. Son efficacité et sa réussite sont à ce prix.

Il mettra un certain temps avoir d’atteindre le même niveau dans son nouveau sport, parfois plusieurs années.

Joueur Handball

 

Une complexité supplémentaire : les librairies

Et il n’y a pas que le langage à apprendre !

Le langage permet “seulement” d’écrire un code plus simple que si nous devions le faire directement en langage assembleur.

Le langage assembleur est le langage le plus bas niveau possible. C’est le langage qui est directement interprété par la machine. Enfin… l’assembleur correspond à la version en langue humaine. Car la machine comprend seulement la version binaire, constituée de 0 et 1.

L’assembleur a en plus le problème d’être spécifique à un processeur. Vous changez de processeur ou de machine ? Il faut vérifier que votre code est compatible et si besoin le modifier. Le code assembleur n’est pas portable.

Les langages sont une surcouche à l’assembleur qui est là pour nous simplifier la vie. Elle propose généralement des concepts additionnels comme le nommage de variable, les constantes, les procédures, les fonctions ou même la notion de classes et d’objets.

Un code écrit dans un langage est ensuite compilé en assembleur. Les langages sont portables, du moment que vous avez un compilateur compatible avec votre processeur.

Pour qu’un langage soit facile à utiliser, il propose généralement des librairies additionnelles. Ces librairies sont très utiles car elles permettent de :

  • écrire un message à l’écran,
  • lire un fichier,
  • créer des fenêtres,
  • échanger des choses sur le réseau,
  • envoyer des emails,
  • etc.

Ces librairies sont généralement écrites dans le langage pour lesquelles elles ont été créées. Une librairie PHP est utilisable en PHP seulement, une librairie Perl en Perl, etc.

Elles utilisent les normes et habitudes du langage. Cela forme un petit écosystème indépendant qui obéit à ses propres règles, qui a ses habitudes et ses standards.

C’est autant de choses supplémentaires qu’un développeur doit apprendre pour passer à un nouveau langage. Là encore, le parallèle existe avec le sport.

Quand un sportif change de sport, il doit non seulement découvrir et s’améliorer sur de nouveau mouvements, mais il doit aussi apprendre de nouvelles règles, de nouvelles stratégies. D’un sport à l’autre, la manière d’attaquer ou de défendre n’est pas la même ! Un dégagement ne se fait pas de la même manière, etc.

Joueur Tennis

 

En conclusion

Autant vous ne vous attendez pas à ce qu’un footballeur de haut niveau passe à la natation ou au tennis très facilement, autant il ne faut pas non plus attendre qu’un développeur PHP expérimenté puisse rapidement coder et être efficace dans un autre langage comme le Java, le C#, le C++ ou autre.

Et encore, je n’ai pas parlé de Web, de client lourd, de multithreading ou de contexte spécifique comme du temps réel…

 

Est-ce que cette comparaison vous as aidé ? Êtes-vous d’accord ? Avez-vous une meilleure comparaison à proposer ? Partagez votre avis dans les commentaires.

 

Crédits photos

 

Partager l'article
  •  
  •  
  •  
  •  

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.