Introduction à la programmation

De EduTech Wiki
Aller à la navigation Aller à la recherche

Introduction

Cette introduction à la programmation vise à fournir à des personnes sans un background technique les éléments conceptuels principaux pour s’initier à la programmation, indépendamment du langage ou des technologies envisagés. Pour ce faire, nous allons d’abord situer la programmation dans le contexte plus large du développement. Ensuite, nous proposons trois types d’approches différentes, mais complémentaires, à la programmation. La première approche, plus conceptuelle, introduit la programmation dans une perspective fidèle au contexte de ce wiki, c’est-à-dire en utilisant des concepts issus des Sciences de l’Éducation et de la Psychologie. La deuxième approche, plus technique, illustre la fonction de médiation entre développeur et machine de la programmation. La troisième approche, plus pragmatique, essaye de mettre ensemble les approches conceptuel et technique pour illustrer les aspects fondamentaux de la programmation. En guise de conclusion, nous proposons une liste non exhaustive de langages de programmation existants.

La programmation dans le cycle de développement

Le développement est un processus qui est souvent considéré comme un cycle. Il existe plusieurs méthodologies de développement qui déterminent de manière différentes le nombre et l’ordre (e.g. séquentiel ou itérative) des étapes. De manière très succincte, on peut identifier les étapes fondamentales suivantes :

  1. Analyse des besoins et/ou du contexte d’utilisation : développer signifie créer quelque chose qui répond à une certaine nécessité et qui représente donc une solution à une exigence pour un ou plusieurs utilisateurs.
  2. Prototypage : l’application à développer est déterminée de manière conceptuelle en fonction des objectifs et de la manière de les achever. Selon le type de méthode adoptée, à ce stade on fait souvent des dessins de l’interface, de scénarios d’utilisation, etc.
  3. Implémentation : l’application est « traduite » dans une forme interprétable par le dispositif sur lequel elle est censée fonctionner. Cette étape correspond normalement à la programmation, c’est-à-dire l’écriture du code.
  4. Test : l’application est contrôlée afin qu’elle fonctionne de la manière imaginée/souhaitée.
  5. Déploiement : l’application est rendue disponible aux utilisateurs (e.g. publiée sur le web).
  6. Maintien : l’application est modifiée ou adaptée à des nécessités qui se présentent dans le temps.

Cette page s’intéresse principalement à la phase d’implémentation, mais considère la programmation comme un élément intégré dans le cycle de développement.

Approche conceptuelle à la programmation

L’approche behavioriste des utilisateurs

{image}

La plupart des personnes qui utilisent un logiciel ou une application adoptent une approche qu’on pourrait qualifier de behavioriste. En effet, les utilisateurs ne se préoccupent pas de comprendre ce qui se passe à l’intérieur de la « boîte noire » de l’application, mais se limite à évaluer ce que l’application permet de faire en termes de manipulations (i.e. les stimuli) et les résultats qu’on peut obtenir (i.e. les réponses). Dans le cadre de la programmation, le schéma « stimulus-réponse » est assez proche du principe du « input-output » (abrégé I/O) : à un certain input introduit dans le système correspond un output.

Le principe du Input/Output

{image}

Le rôle du programmeur est donc de déterminer ce qui se passe à l’intérieur de la « boîte noire », c’est-à-dire déterminer quel comportement l’application va adopter sur la base des stimuli fournies par les utilisateurs. Plus spécifiquement, dans la plupart de cas, programmer correspond à fournir aux utilisateurs la possibilité de transformer des inputs dans des outputs qui sont jugées plus utiles, intéressantes, adaptées à leurs besoins, etc. Le mécanisme d’I/O peut se faire à différents niveaux et discriminer l’input de l’output dépend parfois de la perspective adoptée. Voici quelques exemples très simples pour illustrer le principe :

  • Dans une application qui permet de faire des calculs, l’utilisateur connait deux ou plusieurs chiffres qu’il désire associer de manière mathématique (inputs) pour obtenir un résultat qu’il ne connait pas (output).
  • Dans une application de traitement de texte, l’utilisateur saisie des mots qui forment des phrases (inputs) et applique des transformations sur le texte (inputs) pour obtenir un document final (output) ; en même temps, il peut également partir d’un document existant (output) pour sélectionner une partie spécifique qui l’intéresse (input) et la sauvegarder dans un nouveau document (output).
  • Dans un jeu vidéo « point and shoot », l’utilisateur fournit plusieurs instructions de input (bouger, tirer, etc.) et l’application fournit des outputs correspondant (augmenter les points, passer de niveau, etc.) ; en même temps, le jeu créé automatiquement des obstacles ou ennemies (output) qui détermine les actions du joueur (input).
  • Dans un QCM online le système propose des questions avec des choix possibles (output) parmi lequel l’utilisateur doit identifier et sélectionner la réponse correcte (input). Un feedback (output) suggère enfin à l’utilisateur s’il a choisi la bonne réponse.

L’interaction homme-machine

Le principe de l’I/O est à la base de l’interaction homme-machine (IHM ou HCI an anglais, pour Human-Computer Interaction). En effet, en simplifiant les choses, on peut illustrer l’interaction entre utilisateur et machine à travers une série d’échanges cycliques qui prévoient de l’I/O du côté de la machine, et du stimulus/réponse (ou comportement) chez l’utilisateur :

  1. L’utilisateur obtient des stimuli depuis l’application, par exemple à travers des instructions à faire, des outils à manipuler (boutons, champ de texte, etc.), des feedbacks, etc.
  2. L’utilisateur transforme ces stimuli en comportement (e.g. en cliquant sur un bouton).
  3. Ce comportement représente un input pour l’application, qui détermine un output correspondant (e.g. afficher une nouvelle page)
  4. Cet output représente un nouveau stimulus pour l’utilisateur - on revient donc au point 1 à moins que l’output ne soit considéré définitive (par l’utilisateur et/ou l’application).

{image}

Dans cette perspective, les trois aspects qui déterminent l’ergonomie d’une application (efficacité, efficience et satisfaction) peuvent être analysés par rapport à ces échanges entre homme et machine :

  • Une application est efficace si elle permet d’obtenir l’output souhaité à partir d’inputs identifiables.
  • Une application est efficiente si le nombre d’inputs nécessaires est proportionnel à la qualité/complexité de l’output.
  • Une application est satisfaisante si les échanges I/O vs. stimulus/réponse entre homme et machine sont considérés de manière positive par l’utilisateur.