Ou, chose beaucoup plus vraisemblable, intégré en tant que coprocesseur, comme le sont actuellement les FPU, MMX et autres SSE au sein des processeurs... Il est indéniable qu'un cœur fonctionnel au sein d'un processeur serait un énorme atout, tout comme l'est un FPU dès que l'on veut faire du calcul ou un SSE pour les traitements SIMD...
Mais pour moi, ça restera soit des CPU de niches, soit des coprocesseurs. La seconde solution serait d'ailleurs bien plus profitable aux approches fonctionnelles que la première ! Il y a dix ans, qui connaissait (et utilisait !) les processeurs SIMD, à part les étudiants en architecture parallèle ? Avec l'arrivée du MMX, puis du SSE, ces principes de calcul sont devenus quasiment courants, et connus de la plupart des développeurs. Ils ne l'auraient pas été autant si les CPU SIMD étaient restés "dédiés" à des niches.
Non, c'est ce que je me tue à expliquer... Débuter par un des extrêmes (que ce soit du ML ou de l'ASM) est, à mon sens, néfaste car cela empêche l'ouverture d'esprit.
Pas à pas... Séquentiellement... Impératif...
Merci.
Tiens, effectivement, je n'ai pas parlé de la récursivité... Chapitre pourtant souvent délicat à enseigner à ceux qui ignorent ce qu'est une suite (au sens mathématique, bien sûr).
Ceci étant dit, c'est une notion qui peut être enseignée facilement si l'on prends la peine de montrer l'analogie avec les boucles, et en quoi une récursion est différente d'une boucle (concept de "pile").
Pour ma part, j'utilisais l'analogie de la découpe de bois : on commence par couper le tronc en deux, puis chaque moitié en deux, puis encore, et encore, jusqu'à obtenir des cure-dents. Il est facile de montrer que la version "boucle" (analogie : un trajet à pied, un pas, puis un pas, puis un pas, ...) serait bien plus difficile à faire, car tailler un cure-dent dans un tronc d'arbre n'est pas évident (quelle taille ? quel diamètre ? où commencer ? ...).
Ce serait plutôt que les enseignants en question ont été formés à une époque un peu trop reculée des réalités modernes, et de façon beaucoup trop autodidacte. Sans parler du fait que peu de profs acceptent de se remettre en question sur le sujet !!
Dans toutes mes études, j'ai rencontré très exactement TROIS profs d'informatique "valables", notamment un de mes profs d'algo. Les autres, comme je l'ai dit, étaient soit des matheux reconvertis, soit des "bidouilleurs" ayant accédé au professorat. Dans un cas comme dans l'autre, c'étaient de très mauvais pédagogues.
Conceptualiser les pointeurs et l'expliquer correctement n'est ni difficile à faire, ni difficile à comprendre. Mais comme beaucoup de domaines, il n'est pas possible d'expliquer clairement quelque chose que l'on ne maîtrise pas TOTALEMENT.
Et quand je voyais un de mes profs de DEUG complètement largué par des doubles indirections et des pointeurs fonctionnels, on peut légitimement se demander s'il était apte à enseigner la notion de pointeurs...
La récursivité n'est pas dépendante de la notion de pointeurs, je dirais même qu'il vaut mieux éviter d'en parler en approche du concept récursif. Toutefois, il n'est pas toujours trivial de trouver un exemple concret de récursivité qui n'implique pas des notions de mathématiques.
Le concept lui-même n'a pas besoin de maths, mais faire sa première fonction récursive, c'est souvent des maths par contre... A moins d'avoir avancé suffisamment dans les algos pour avoir expliqué les tris, et donc pouvoir illustrer la récursivité avec QuickSort.
Moi non plus... D'où l'intérêt des langages multi-paradigmes, d'ailleurs. La POO n'est pas très difficile à comprendre, mais quelques bases saines sont quand même nécessaires auparavant je pense.
Ce qui est le cas de Pascal et Ada, notamment...
Partager