UP PREVIOUS NEXT TOP

6.3 Les langages de commandes

On pourrait penser que l'idéal soit de permettre à l'utilisateur d'introduire ses commandes en langage naturel et dans sa propre langue. Par exemple, le préposé de la gare taperait:

"je veux un billet aller-retour première classe pour Bruxelles"

A l'exception de certains prototypes pour l'interrogation de base de données, cette approche est peu utilisée pour des raisons techniques et fonctionnelles. Les raisons techniques sont liées à la lenteur des progrès réalisés en Intelligence Artificielle dans l'analyse du langage naturel (voir module 4). Les raisons fonctionnelles sont liées au fait que le clavier est un moyen de communication particulièrement lent à utiliser. Quand nous dialoguons avec une autre personne, nous utilisons de fréquents sous-dialogues ou des références au contexte pour éliminer les ambiguïtés inhérentes au langage naturel. Dans le cas du dialogue avec un ordinateur, les sous-dialogues sont coûteux en temps et les références externes difficiles à réaliser. De manière générale, introduire une commande aussi longue que celle ci-dessus prend trop de temps et offre une forte probabilité de commettre une erreur de frappe. Certes, les progrès en matière d'analyse de la parole permettent déjà de prononcer à haute voix des commandes de complexité restreinte, mais un fossé énorme (plusieurs dizaines d'années de recherche) sépare la reconnaissance de mots et la compréhension d'une phrase. Aussi, les langages de commandes actuels sont des langages restreints et dotés d'une syntaxe stricte. C'est par exemple le cas des systèmes d'exploitation tels que UNIX et MS-DOS. Le langage comprend un certain nombre de termes: des commandes (par exemple 'copier', 'move', 'rename'), des arguments (noms de fichiers, adresses, facteur de répétition, ...), des séparateurs (souvent un espace) et des mots-clé (par exemple 'from', 'to'). Il comporte aussi une syntaxe stricte. Ainsi, si le système de billetterie utilisait ce style d'interaction, le préposé de la gare de Genève désirant commander un aller-retour deuxième classe pour Paris devrait taper une commande du type:

De GVA à BXL 2 AR

Ce style d'interaction est souvent utilisé pour interroger les bases de données. Nous reviendrons dans le module 10 sur les langages d'interrogation des bases de données. En effet, l'utilisation d'un tel langage ne dépend pas uniquement des caractéristiques intrinsèques du langage, mais aussi de la manière dont l'utilisateur se représente la structure de la base de données.

Reisner (1988) affirme que les langages dont la syntaxe repose sur la position exacte des mots dans la phrase sont plus difficiles à maîtriser par les novices que les langages utilisant des mots-clé. Cette différence peut se comprendre dans la mesure où les mots-clé définissent un syntaxe explicite.

Un préposé peut maîtriser la syntaxe d'un langage de commandes et en retenir toutes les abréviations s'il utilise ce système à longueur le semaine. Ces langages offrent l'avantage d'utiliser des messages plus brefs que ceux qui constituent la langue naturelle. Certains langages de commandes sont extensibles: ils permettent à l'utilisateur de définir des "macros" afin regrouper des séquences de commandes qu'il utilise fréquemment. Une macro est une commande de haut niveau, créée par l'utilisateur, qui regroupe plusieurs commandes dans un ordre fixe. Par exemple, dans un logiciel de traitement de texte, la macro 'relief' ci-dessous comprend trois opérations en vue d'afficher l'objet sélectionné en Times, gras, 14 points. Une fois la macro définie, l'utilisateur appellera seulement celle-ci pour exécuter ces trois commandes.

Macro "relief"

Choisir la police 'Times'

Choisir la taille de caractères 14

Choisir le style 'gras'

A côté de ces avantages, les langages de commandes souffrent de certains inconvénients. Parce qu'ils reposent sur une syntaxe stricte, ils requièrent un apprentissage intensif et un exercice régulier afin de mémoriser à la fois le vocabulaire et la syntaxe. Pour cela, les langages de commandes conviennent aux experts mais pas aux utilisateurs intermittents, ni aux novices. En outre, ces langages sont rigides et tolèrent peu de variations orthographiques ou syntaxiques. L'expert n'est jamais à l'abri d'une faute de frappe ou de syntaxe. Hanson et al. (1984) ont observé des taux d'erreur allant jusqu'à 30% pour les commandes pourtant fréquentes dans UNIX (par exemple "cp" pour "copy").

La version 1a du programme CFF vous permettra d'expérimenter les avantages et inconvénients d'un langage de commandes très simple. La simplicité du langage est due ici à sa syntaxe, puisque l'utilisateur peut introduire les commandes dans l'ordre qu'il désire et sans arguments. Ce programme fonctionne malgré cette simplicité parce qu'il ne couvre qu'un nombre de cas très restreints. Il permet uniquement d'émettre des billets au départ de Genève. Si le programme devait produire des billets tels que 'Lausanne - Zurich' ou 'Zurich - Lausanne', il conviendrait soit de contraindre l'ordre des arguments (par exemple, dans "> Lausanne Zurich simple 1" la gare de départ serait nécessairement le premier argument ), soit d'utiliser des mots-clé (par exemple, "de Lausanne à Zurich simple 1").

On ne peut considérer tous les langages de commandes comme équivalents. Les études les plus intéressantes visent à déterminer plus précisément pourquoi tel langage est meilleur qu'un autre. Nous parlerons d'abord de la syntaxe du langage, puis de son vocabulaire. Schneiderman (1992) présente un certain nombre de facteurs qui facilitent la mémorisation d'un langage de commandes.

6.3.1 Syntaxe des langages de commande

6.3.2 Vocabulaire des langages de commande