🌍2025.11.22
idiomatique
Mon langage de prédilection en programmation est depuis longtemps maintenant le Python. Dans le cursus dans lequel j’enseigne, cependant, les langages principalement utilisés sont le Java et le Typescript. J’ai fait pas mal de Java. Le Typescript est une “surcouche” du Javascript, et j’ai déjà fait du Javascript. Donc “ça devrait aller”, en tout cas pour m’en sortir dans la syntaxe. Et, évidemment, les concepts de programmation en général sont transférables d’un langage à l’autre.
Mais ce qui va me manquer, et sur lequel je vais devoir un peu travailler, c’est ce qui fait souvent dire à des gens qui ne maîtrisent pas un langage particulier que ce langage est nul: la connaissance des idiomes du langage.
J’entends souvent des gens qui se plaignent du Python, et à chaque fois quand je vois ce qui les bloque, c’est qu’ils n’ont “pas compris” comment utiliser Python efficacement. Je râle de mon côté sur le Java ou le Javascript chaque fois que je me retrouve à en faire, et c’est sans doute pour la même raison.
Les idiomes ne sont pas seulement liés à la syntaxe ou aux règles formelles du langage, mais bien au “bon usage”, les réflexes à avoir qui font que les choses fonctionnent sans friction.
L’exemple typique, en Python, est celui des listes en compréhension. Si on cherche à appliquer une certaine fonction sur tous les éléments d’une liste et à stocker les résultats dans une nouvelle liste, on pourrait faire:
nouvelle_liste = []
for i in range(len(ma_liste)):
element = ma_liste[i]
resultat = ma_fonction(element)
nouvelle_liste.append(resultat)Ce serait tout à fait “correct” au niveau de la syntaxe du langage, mais ce n’est pas idiomatique. La liste en compréhension offre, en Python, une manière plus lisible (pour celleux qui sont ont l’accent local!) d’exprimer la même opération:
nouvelle_liste = [ma_fonction(element) for element in ma_liste]Et comme dans les langages parlés par les humains, plusieurs idiomes peuvent coexister. Dans certaines régions du pays Python, on utiliserait plutôt:
nouvelle_liste = list(map(ma_fonction, ma_liste))Avec toujours le même résultat.
Comprendre non seulement la syntaxe et les règles, mais aussi les idiomes du Typescript, c’est ce que je vais chercher à faire dans les prochains mois. Je documenterai cette aventure en terre moins connue ici: Typescript: une aventure.