Retour sur la soirée Langages Dynamiques avec S. Douche du 09/01
Cet article a été co-écrit avec Cédric Levasseur |
Pour cette première session “Autour de la marmite” de l’année, Sébastien Douche nous a fait le plaisir de venir nous faire une courte présentation sur les langages dynamiques et notamment sur un de leur élément de base : le typage.
En nous exposant rapidement les avantages et les inconvénients d’un typage fort tel que celui de Java ou d’Eiffel et ceux d’un typage faible à la Python ou Ruby, Sébastien nous a invité à réfléchir à notre rapport à la programmation, et en particulier à notre langage préféré, car tout développeur ou développeuse a une préférence marquée pour un langage en particulier.
Tous les participants ont donc pu poser les questions qu’ils souhaitaient voir débattre, ce qui a amené un premier groupe a discuter Python avec Sébastien, pendant qu’un autre groupe avait retenu les deux questions suivantes :
- On a toujours tendance à revenir à ce que l’on connaît. Quelles bonnes pratiques pour apprendre un nouveau langage de programmation ?
- Pour apprendre les bonnes pratiques de la programmation, vaut-il mieux un langage à type statique ou dynamique ?
Comme souvent dans les sessions OST, les discussions ont eu tendance à dévier, les deux questions ont été traitées dans le désordre le plus total, des gens sont partis d’un groupe pour aller dans l’autre, des groupes se sont formés et se sont défaits bref c’était le bazar et c’est tant mieux ! L’objectif de la soirée à ainsi été respecté : se faire plaisir en venant débattre avec des gens aussi passionnés que soi
1/ On a toujours tendance à revenir à ce que l’on connaît. Quelles bonnes pratiques pour apprendre un nouveau langage de programmation ?
Concernant cette question, trois solutions nous ont d’emblée été proposées :
- Faire de l’IRC : les gens qui adorent leur langage de prédilection aiment aider à favoriser son adoption par d’autres
- Lire le livre du concepteur du langage car c’est celui qui possède la philosophie du langage. Et comme le dit Sébastien, l’intérêt d’un langage est plus dans sa philosophie que dans sa syntaxe.
- Trouver un projet Open-Source auquel contribuer : et apprendre directement avec des passionnés, ce qui reste encore la meilleure façon d’apprendre à coder dans un langage, quel qu’il soit.
Pour autant, en cas de difficultés, la tentation est grande de ne pas continuer l’expérience et de retourner à son langage de prédilection ! Il ne faut donc pas négliger le ticket d’entrée dans l’apprentissage d’un langage : certains sont réputés plus difficiles que d’autres (Scala ou Clojure par exemple) et la motivation qui vous pousse à l’apprendre doit être proportionnelle, sans quoi le découragement fera vite son oeuvre.
L’écosystème est également un point important dans l’apprentissage d’un langage : on dit souvent que ce qui fait la richesse de Java c’est son écosystème … et de fait c’est incontestablement lui qui a le plus lourd. Mais on peut vite être découragé devant le nombre de frameworks ou de librairies qu’il va nous falloir connaître, sans parler de l’installation du poste de travail qui peut se révéler franchement laborieuse, longue et pénible pour peu qu’on soit sous Windows (troll inside )
C’est là que coder en groupe apparaît comme étant la solution idéale : comme on l’a déjà dit la transmission humaine reste ce qui est le plus simple, le plus enrichissant mais aussi sûrement le plus motivant. Et finalement même si on succombe sous les difficultés, ce n’est pas dramatique, il s’agit juste d’une expérience avortée qui nous aura néanmoins enrichi
2/ Quel langage de programmation pour apprendre à bien coder ?
Nous avons tous les capacités d’apprendre, pourtant, force est de constater que certains langages nous paraissent plus faciles à apprendre que d’autres.
Intuitivement, la plupart des participants sont tentés de répondre qu’un langage fortement typé est préférable pour commencer : un langage comme PHP dans ses premières versions avait la réputation d’un langage facile à apprendre pour des débutants en programmation mais qui allait totalement à l’encontre des bonnes pratiques avec sa permissivité à outrance.
La question de l’Objet se pose donc tout de suite après celle du typage : certes un langage Objet est naturellement plus contraignant, néanmoins ça n’empêche pas de coder n’importe comment ! Tout le monde a en tête des exemples de C++ ou de Java dont on espère sincèrement que l’auteur a changé de métier alors qu’à contrario on peut tout à fait faire du code propre et structuré en javascript.
Le typage et l’objet ne sont donc pas la réponse mais en font néanmoins partie : nous avons abordé la notion de ticket d’entrée dans la réponse à la première question et ce ticket repose sur notre aisance avec ses notions et avec d’autres, ce qui le rend intrinsèquement lié au développeur. Certains développeurs ne seront pas à l’aise avec la syntaxe de Kotlin et d’autres ne pourront jamais se résoudre à passer des fonctions en paramètres d’autres fonctions dans une forêt de parenthèses comme on peut le faire en Clojure …
Il n’y a donc pas de réponse “toute prête” à la question posée car il y a une grande part d’affectif dans notre adoption d’un langage : notre langage préféré ne sera peut être pas le plus populaire dans la communauté des développeurs, il a peut être des défauts, peut être même ne convient-il qu’à un usage particulier … mais c’est le nôtre. Et c’est rapport affectif qui va nous donner envie de progresser, et donc de bien coder. Alors n’hésitez pas, même si pour cela vous sortez des sentiers battus du monde professionnel, à cultiver cette affectivité pour progresser !