FAQ

Quelle est la différence entre une fonction et un foncteur ?

En programmation informatique, une fonction est une série d’instructions et d’étapes de calcul fournies pour effectuer une certaine tâche.

Ces instructions constituent une unité qui peut être utilisée dans n'importe quelle partie du programme où cette tâche doit être effectuée. (Lisez directement des experts en programmation : quel langage de programmation fonctionnel est-il préférable d'apprendre maintenant ?)

La fonction fournira une valeur de résultat qui dépend de ses paramètres et arguments, comme le calcul de valeurs mathématiques pour déterminer une sortie. La fonction peut également inclure l'exécution de certaines tâches en fonction du résultat, comme modifier des données dans une base de données ou démarrer d'autres fonctions liées de manière récursive.

En programmation procédurale (PP), des fonctions, des procédures ou des sous-programmes effectuent des opérations sur les données. Dans cette approche descendante, les ordinateurs reçoivent des instructions sous forme de fonctions pour savoir quoi faire, étape par étape, pour réaliser n'importe quelle tâche.

Les foncteurs entrent plutôt en jeu dans la programmation orientée objet (POO).

En POO, les données et les fonctions (et, par conséquent, les comportements informatiques) sont encapsulées dans des objets. Les fonctions ne sont plus quelque chose en soi, mais elles sont toujours connectées aux objets de manière modulaire.

Chaque objet « sait » réaliser ses tâches et interagir avec les autres objets qui constituent l'application elle-même.

Les foncteurs sont des objets qui se comportent comme des fonctions. Ce sont des objets de classe qui peuvent surcharger la fonction opérateur() et agir comme fonction eux-mêmes. Ils peuvent encapsuler leur propre fonction qui est exécutée en cas de besoin.

Des pointeurs vers des fonctions membres ou des classes arbitraires peuvent être créés afin qu'ils soient tous appelés via la même interface, quelle que soit leur classe.

Par exemple : supposons que nous ayons un chauffeur de camion (notre objet) et que nous souhaitions qu'il atteigne un certain endroit. En PP, vous devez leur remettre un livre avec des instructions sur la façon de conduire (une fonction), tandis qu'en POO, cette « connaissance » fait déjà partie de l'objet lui-même.

Ces instructions déterminent donc la vitesse que le camion doit maintenir sur certaines routes, disons 55 mph sur les routes urbaines, 65 mph sur les autoroutes et 70 mph sur les autoroutes. Imaginons maintenant qu'un jour nous recevions une livraison urgente et que nous souhaitions qu'il augmente sa vitesse de 24 km/h. En PP, il faut écrire plusieurs fonctions différentes pour modifier chaque vitesse.

En POO, nous n'avons besoin que d'un foncteur pour les incrémenter tous de 15 mph puisque l'objet est une classe qui a été créée pour surcharger le opérateur().