LA PROGRAMMATION INFORMATIQUE LE PROCESSUS DE PROGRAMMATION Combien de fois t’est-il arrivé/e de te frustrer parce que l’ordinateur ne faisait tout simplement pas ce que tu voulais qu’il fasse? Est-ce comme lorsque tes parents te demandent de nettoyer ta chambre et que tu ne le fais pas? Voyons si c’est le cas. Dans le cas du nettoyage de ta chambre, les paroles échangées pendant la communication ont été comprises par les deux parties, mais quelqu’un a refusé de le faire (on ne nommera pas qui!). Au cours d’un échange avec l’ordinateur, le langage utilisé n’a pas eu l’effet désiré. Une des parties qui « conversait » a utilisé des termes incompris de l’autre. Le langage est donc important. Comment alors l’humain s’assure-t-il d’être compris par l’ordinateur ? LE LANGAGE MACHINE 0010100111010101100101011001! As-tu saisi le sens de cette instruction? L’ordinateur, lui, n’aurait aucune difficulté à comprendre. En fait, ce langage de 0 et de 1, la base du système binaire, est le seul qu’il comprenne et qu’il maîtrise. Lorsqu’un programme informatique est sous la forme de 0 et de 1, on dit qu’il est en code machine. Il n’est donc pas facile de communiquer directement avec un ordinateur. C’est pourquoi les programmeurs ont mis au point des langages de programmation en vue de faciliter la composition des instructions d’un logiciel. Ils se sont aussi entourés de processus de programmation pour structurer leurs efforts. LE PROCESSUS DE PROGRAMMATION EN INFORMATIQUE Entre l’idée de la nécessité d’un programme informatique et de sa réalisation en un code machine pour régir le comportement de l’ordinateur, le programmeur fait appel à une série de processus qui l’aideront dans sa démarche. L’illustration ci-dessous schématise bien cette séquence de processus. Le programmeur sera ainsi progressivement conduit du langage humain au code source, pour finalement aboutir au code machine. Langage humain : Mets la variable « somme » égale à trois. Code source : Code machine : …001001010010101011001010101010011011110100101010… LA COMPILATION ET L’INTERPRÉTATION Les langages de programmation ont évolué pour ressembler beaucoup plus au langage humain qu’au langage machine en 0 et en 1. Un processus doit donc exister pour que les instructions que tu écriras en Visual Basic soient traduites en langage machine que l’ordinateur pourra comprendre et exécuter. En d’autres mots, il faut un processus pour passer du code source en Visual Basic, par exemple, au code objet en 0 et en 1 (le code objet est équivalent au code machine). En fait, cette traduction s’accomplit par l’une ou l’autre des deux méthodes suivantes : la compilation ou l’interprétation. C’est en fait le choix du langage de haut niveau qui détermine la méthode de traduction utilisée. Certains langages sont compilés (p. ex., Turbo Pascal, C) alors que d’autres sont des langages interprétés (p. ex., Visual Basic). Il y en a même, comme Java, qui font appel à une combinaison des deux méthodes. Par définition, les compilateurs et les interpréteurs sont euxmêmes des programmes! Eh oui! Ce sont des logiciels composés spécifiquement pour prendre les instructions que tu as composées dans un langage de programmation et les convertir sous la forme de codes compris par la machine. Une analogie pour comprendre compilation et interprétation Comment distinguer compilateur et interpréteur? C’est ce que tu découvriras en répondant à la question suivante : S’il est facile pour deux francophones de se parler, comment s’y prendre lorsqu’un francophone communique avec un anglophone? Voici les deux solutions qui t’aideront à départager la différence entre compilation et interprétation. Solution interprétée. Le francophone fait appel à un interpréteur qui traduit du français à l’anglais au fur et à mesure. Le francophone prononce d’abord une phrase en français. L’interpréteur écoute la phrase, la reformule dans l’autre langue et la dicte en anglais à l’anglophone. Ce processus est répété pour chacune des phrases. La communication entre le francophone et l’anglophone a beau commencer sans délai, l’interprétation est quand même un processus lent; la communication est continuellement entrecoupée par les efforts de traduction. Solution compilée. Le francophone consigne tout ce qu’il doit dire par écrit dans un document. Ce document en français est ensuite entièrement traduit en anglais. Le résultat final est un document compilé en anglais qui implique les faits suivants. La compilation exige la traduction complète du document avant sa prise en charge par l’anglophone, ce qui entraîne un délai important avant le début du processus réel de communication. L’avantage ne se révèle qu’une fois que le document final est entre les mains de l’anglophone; il peut être lu à n’importe quel moment opportun et à la vitesse désirée, sans pause aucune. De tels scénarios sont analogues à ceux pouvant se produire dans le domaine de l’informatique. Il suffit tout simplement de voir que le français est similaire au code source, l’anglais, au code machine et que l’anglophone est l’ordinateur. Le compilateur Le compilateur traduit la totalité du programme source en code machine. D’un seul coup, le compilateur compile entièrement le code source et génère un fichier exécutable composé de code machine. Ce fichier exécutable s’enregistre sur un support de stockage (disque dur, cédérom, etc.). Cela signifie donc que : le programme ne peut être exécuté qu’une fois le code entièrement traduit ; toute modification apportée au code source nécessite une recompilation ; L’illustration ci-dessous donne une bonne idée de l’application du processus de compilation. L’interpréteur L’interpréteur, quant à lui, fournit les outils nécessaires à ce qu’un programme écrit en langage source puisse être compris et exécuté par l’UCT, ligne de code par ligne de code. Dès que l’interpréteur tombe sur une instruction, il la traduit et demande immédiatement à l’UCT de l’exécuter avant de passer à l’instruction suivante. Ce processus est répété jusqu’à ce que le programme ait terminé. Cela signifie donc que : l’interpréteur est un programme qui doit être chargé en mémoire en même temps que le programme source qu’il doit interpréter ; les instructions du programme source sont ramassées et exécutées une à la fois ; le code interprété n’est pas conservé. Si un tel programme doit être réexécuté, il doit passer de nouveau par l’interpréteur ; L’illustration ci-dessous donne une bonne idée de l’application du processus d’interprétation. En résumé, tout langage de haut niveau peut-être soit compilé ou interprété. C’est le type d’application qui se porte juge du choix. Voici des facteurs à considérer : L’interpréteur doit être chargé en mémoire au cours de l’exécution d’un programme interprété; l’espace mémoire disponible à l’exécution de ce dernier est donc réduit. Dans le cas du compilateur, il n’est chargé en mémoire que pendant l’étape de compilation; seul le code machine d’un programme compilé réside en mémoire au cours de l’exécution. Dès qu’un fichier exécutable est accessible, il peut être exécuté aussi souvent que désiré sans devoir utiliser le compilateur. Cependant, avec un programme en langage interprété, il faut utiliser l’interpréteur chaque fois que l’on désire exécuter un tel programme. Les programmes en code machine ont une rapidité d’exécution supérieure à celle des programmes interprétés. Il est plus facile et plus rapide de modifier le code d’un programme interprété que celui d’un langage compilé. Les langages interprétés ont donc l’avantage de réduire le temps de développement. Selon toi, dans un environnement de production où la vitesse d’exécution du programme est de mise, lequel des programmes, compilé ou interprété, aura l’avantage? Pourquoi? Dans un environnement de production où la vitesse de développement est de mise ? Pourquoi ? Ce pourrait être de bonne question d’examen.