Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07132.jsonl.gz/30

3. Quand "savoirs" et "savoir-faire"collaborent efficacement dans des situations qui leur donnent un sens
La programmation procédurale peut être décrite comme une explicitation du savoir-faire suivie de sa transposition dans un langage exécutable par un automate. Par exemple, pour programmer le tri de fiches suivant un critère donné, il faut 1) savoir trier des fiches, 2) savoir décrire les actions à réaliser pour les trier et, enfin, 3) savoir ce que l'automate sait faire pour traduire ces actions dans son langage [R. Samurçay a utilisé pour désigner cette compétence le concept de savoir-faire faire (Samurçay, 1984)]. Par souci d'efficacité, cette explicitation du savoir-faire est la plus générale possible. Elle comprend donc des paramètres chaque fois qu'il s'avère possible de généraliser une procédure. Ce n'est qu'au moment où l'on utilise effectivement le programme que l'on injecte des connaissances déclaratives pour l'instancier [dans notre exemple, nous donnerions au programme des fiches particulières à trier].
A l'inverse, la programmation déclarative ou fonctionnelle consiste à décrire, dans un premier temps, les relations qui existent entre les différents éléments du problème que l'on cherche à résoudre sans programmer d'actions spécifiques [par exemple, établir les relations entre personnes d'une même famille sur un arbre généalogique]. Dans ce cas, les connaissances contenues dans le programme sont des connaissances de type déclaratif et sont très spécifiques au domaine de connaissances [par exemple, Pierre est le père de Jean, Jean a deux fils, etc. ]. Dans un deuxième temps seulement, lorsque le domaine est totalement décrit, on peut interroger ce programme en lui posant des questions. Ce n'est qu'à ce stade que l'utilisateur lui indique ce qu'il doit faire de la réponse et qu'il l'utilise dans une procédure [par exemple: Ecris combien Pierre a de petits-enfants].
Mais depuis à peu près une dizaine d'années s'est imposé dans le monde de l'informatique un nouveau mode de programmation: la programmation orientée-objet [le premier langage portait le nom suggestif de SmallTalk. Ce mode de programmation est bien connu de tous les utilisateurs d'interfaces graphiques (Macintosh ou Windows) et son prototype le plus répandu est le langage Hypercard]. Ces langages permettent de résoudre certaines des difficultés de conception que les programmeurs rencontraient avec l'une ou l'autre des deux familles de langage de programmation citées [ces difficultés sont essentiellement liées à la mise au point et à l'évolution des programmes complexes]. Ils permettent surtout à des non-professionnels de la programmation de réaliser des applications très performantes.
Dans les langages "orientés-objet", la programmation consiste à définir des classes d'objets qui contiennent à la fois des propriétés paramétrables [par exemple, une fenêtre présentée sur l'écran peut être ouverte ou fermée] et un répertoire de méthodes pour agir sur d'autres objets de l'environnement [par exemple, un objet déplacé sur une autre fenêtre exécute une commande liée à ce nouveau contexte]. Cette métaphore informatique permet de proposer aux concepteurs de logiciels un univers représenté analogue au monde réel. En effet, c'est la manipulation directe des objets sur l'écran qui définit, pour un contexte donné, les commandes qui seront exécutées. Cette évolution a permis aussi de rendre les applications informatiques plus faciles à programmer pour l'utilisateur [surtout en ce qui concerne leur adaptation à des problèmes spécifiques] et plus conviviales à utiliser. Elle semble aussi donner raison à ceux qui pensent que les rapports difficiles qu'entretiennent savoirs et savoir-faire peuvent être pris en charge efficacement pour peu que l'on s'intéresse concrètement aux situations, aux contextes et aux outils avec lesquels ces deux formes de connaissances interagissent.
Generated with CERN WebMaker