« Le style du programmeur | Accueil | »

26 septembre 2008 - Divers

Le programmeur et les objets

Le programme informatique correspond concrètement à des instructions qui, une fois exécutées par la machine, ont un effet sur la réalité : affichage de fenêtres colorées sur l'écran de l'ordinateur, entrée dans la mémoire de données saisies par l'utilisateur, calcul de la paie des employés...

- Les instructions peuvent être simples : « affiche un rectangle rouge de 100 pixels par 150 au milieu de l'écran », « copie le fichier X dans le fichier Y ». Ces instructions nécessitent seulement, pour le programmeur, la connaissance de certaines fonctions à appeler. Elles ne demandent aucun effort conceptuel pour organiser des données.

- Les instructions peuvent également, c'est le cas le plus courant, être complexes. On demande à l'ordinateur d'exécuter une instruction sous certaines conditions, dans un contexte particulier, lorsque survient un événement donné. Par exemple : « fais un lien hypertexte rouge si la page distante n'existe pas, en bleu si elle existe » (sur Wikipédia), « lorsqu'un CD est chargé, cherche sur Internet les informations le concernant » (lecteurs multimédias), « à partir d'une base de données sur les individus, calcule si X et Y ont un ancêtre commun » (logiciels généalogiques)...

Ces instructions complexes demandent au programmeur, avant d'écrire le code de manipulation des données, d'organiser ces données sous une forme qui permette au code informatique de les manipuler ainsi.

Programmation fonctionnelle, programmation par objets

La programmation fonctionnelle fait les délices de nombreux étudiants et universitaires par l'économie de moyens avec laquelle elle permet de réaliser n'importe quelle tâche. (Par exemple, un programme Lisp se présente comme une série d'instructions entre parenthèses (imbriquées les unes dans les autres (avec un nombre arbitraire de niveaux (comme dans certains textes de Raymond Roussel))).)

En entreprise, comme dans le domaine des logiciels libres, on utilise plutôt la programmation par objets. La programmation par objets paraît plus proche du monde réel car elle se base sur une représentation analogique, dans le vocabulaire et la syntaxe du langage informatique, des concepts manipulés par les utilisateurs du logiciel dans leur travail ou dans leur vie de tous les jours.

Un « objet » informatique est une abstraction avec deux faces :
- dans le programme, c'est une « variable », c'est à dire un mot défini par l'utilisateur et utilisé à différents endroits du programme.
- dans la réalité, c'est un concept qui peut être une idée ou une chose matérielle.

Voyons comment cela se passe. Un programmeur qui réalise un logiciel généalogique sera amené, tout naturellement, à créer un objet de type « Personne ». Cet objet aura des attributs tels que le « nom », le « prénom », le « père » et la « mère ». Ces attributs seront, dans le programme, des variables, donc des mots manipulables selon les règles du langage. Certains de ces attributs seront eux-mêmes des attributs et pourront entrer dans des relations complexes. Ainsi le « père » et la « mère » d'une « Personne » seront eux-mêmes des objets de type « Personne », pourvus chacun d'un « nom », d'un « prénom » et... d'un « père » et d'une « mère ».

Sur ces objets seront définis des actions particulières. Ainsi l'objet « Personne » pourra être pourvu d'une action « trouver les enfants ». Cette action sera définie dans le programme informatique avec le vocabulaire et la syntaxe du langage ; elle consistera concrètement en une suite d'instructions telles que : « regarde tous les objets Personne qui existent », « extrais ceux dont l'attribut « père » correspond à la personne dont je recherche les enfants ».

Le code d'un programme à objets ressemble à ceci (dans le langage Java) :

  Personne x = new Personne();
  x.nom = "Watson";
  x.prénom = "Bobby";
  print(x.getEnfants()); // Affiche la liste des enfants

Le programmeur et la réalité

Dans les langages informatiques comme dans la communication humaine,

Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément

La rédaction d'un programme informatique, comme celle d'un discours ou d'une dissertation, n'est pas une activité de transcription automatique du monde dans des symboles. Le programmeur ne peut se contenter d'une connaissance purement technique : il doit d'abord comprendre le monde, les liens entre les choses, les besoins des personnes qui utiliseront son logiciel, leur manière de travailler (ou de s'amuser, selon le logiciel), les règles officielles et les pratiques officieuses. Bien souvent, même, il amène les utilisateurs à mieux se comprendre eux-mêmes : c'est que, confronté à la rigueur du langage informatique, il ne peut se contenter d'approximations ou de non-dits. Avant de coder le programme, il faut décoder les pratiques.

Puis le programmeur traduit ces idées, ces choses, ces normes, ces personnes même dans le vocabulaire et la syntaxe d'un langage informatique, les réduit à des « objets » en retirant tout ce qui n'est pas nécessaire aux traitements informatiques. Le talent du programmeur est alors de concevoir et de réaliser des « objets » qui sont propres à représenter l'activité des utilisateurs tout en restant manipulables efficacement (rapidement et sans « bug ») par l'ordinateur.

L'informaticien écrit : il est mi-auteur. Mais il n'écrit pas pour décrire le monde, il écrit pour produire un outil : il est donc, aussi, mi-artisan.

Ceci était le dernier article de cette série.

Précédent : la double articulation des langages informatiques .

Publié par thbz le 26 septembre 2008

1 commentaire(s)

1. Par S.  (27 septembre 2008) :

En quelque sorte tu rends hommage à l'informaticien...

Publier un commentaire :




Se souvenir de moi ?


Textes et photos (sauf mention contraire) : Thierry Bézecourt - Mentions légales