Overblog
Suivre ce blog Administration + Créer mon blog
5 août 2009 3 05 /08 /août /2009 12:04

Petit effort pour anticiper quelques questions relatives à cet article.


Un contresens à éviter : vous jugez peut-être que Norbert exécute le programme que Maman lui dicte au téléphone ? Non, Norbert est incapable d'exécuter un programme : mettez-lui une fiche ou un cahier dans les mains, il sera comme une poule qui a trouvé un couteau. C'est bien Maman (intelligente) qui choisit et lit les fiches, comprend ce qu'elles signifient, et commande Norbert (abruti) à distance. La confusion peut venir de ce que Norbert, pour les besoins de l'exemple, n'est pas complètement idiot : il comprend ce que lui dit sa mère et réagit en conséquence. Pour une analogie rigoureuse (mais qui serait bien triste) Norbert serait totalement décérébré et Maman devrait lui transmettre directement son influx nerveux. Dans ce cas il serait vraiment un terminal passif de sa mère, je laisse de plus psychologues que moi méditer sur cette situation.


Question possible : quelle différence entre programme et procédure, sous-programme et fonction ? Rien de fondamental : il s'agit toujours et essentiellement de suites d'instructions.

Une première nuance vient de la place dans la hiérarchie des fiches : les programmes ou procédures sont  en haut , répondent à des besoins pratiques, alors que les fonctions ou sous-programmes sont  en bas , sont des auxiliaires des programmes ou procédures, auxiliaires qu'on n'utilise jamais isolément. Vous double-cliquez sur l'icône du programme qui vous intéresse, jamais sur celle d'une fonction – d'ailleurs les fonctions n'ont pas d'icône.

Deuxième nuance, aujourd'hui périmée, entre fonction et sous-programme. Une fonction, comme en mathématiques, était d'abord un calcul avec un résultat (durée de la recette=temps d'épluchage + temps de cuisson), alors qu'un sous-programme (comme son nom l'indique) était plutôt perçu comme un gros bloc d'instructions (éplucher les patates, éplucher les carottes, les mettre dans la cocotte, fermer la cocotte, etc.), une subdivision du programme principal ( préparer le dîner  dont un autre sous-programme pourrait être  mettre le couvert ). Il y a eu besoin de résultat pour des sous-programmes, il a fallu que certaines fonctions grossissent… Bref : aujourd'hui les deux notions se confondent et tout est fonction ( sous-programme  est sorti de l'usage), à tel point que dans certains langages de programmation on ne parle même plus de programme mais de  fonction principale .

Dernière nuance, de pure rigueur technique : un programme (on précise quelquefois programme exécutable ou, plus vite dit, exécutable) enchaîne des instructions qui agissent directement sur le processeur alors qu'une procédure (ou procédure de commande ou script ou macro-commande ou…) enchaîne des instructions transmises à un autre exécutable qui se charge d'agir sur le processeur. Cette deuxième organisation est plus lourde et lente à cause du niveau intermédiaire, quels sont ses avantages ? Elle permet d'enrichir un programme servant principalement à faire autre chose (comme le font les macro-commandes d'un tableur), elle permet aussi de rendre la procédure indépendante de la machine sur laquelle elle s'exécute (machine-cible). C'est ainsi qu'il n'y a pas besoin d'un dialecte JavaScript pour Mac et d'un autre pour Windows, car c'est le navigateur (chargé d'exécuter JavaScript) qui diffère d'un environnement à l'autre.

Pour résumer : même significatives ces nuances ne doivent pas faire oublier l'essentiel – tout ça, c'est des instructions.

Archives