Obligement - L'Amiga au maximum

Vendredi 17 mai 2024 - 11:49  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : ARexx - Introduction et applications
(Article écrit par François Gueugnon et extrait d'Amiga News Tech - mai 1991)


Rexx est un langage qui existe depuis 1985, et son succès sur d'autres machines a tout naturellement provoqué le désir de le porter sur Amiga. Son introduction dans notre excellente machine date de 1987 et a été réalisée par W. S. Hawes qui s'est efforcé, le fait est remarquable, de coller le plus parfaitement possible à la définition de Rexx, de sorte que ceux qui connaissent Rexx ne seront pas dépaysés.

Pendant quelque temps, ARexx n'a été l'apanage que de quelques spécialistes et d'amateurs avertis, juste le temps d'atteindre la version 1.15. Les hommages lui furent alors rendus, qui le placent désormais au rang des fonctions de base de l'Amiga 3000. Mais malgré son succès, dû à son intérêt, sa popularité n'a pas atteint, à notre sens, le niveau qu'elle devrait logiquement avoir.

En inconditionnels d'ARexx, après l'avoir été de Rexx, nous développerons dans ces colonnes successivement : la présentation, l'intérêt, les modalités d'emploi et enfin l'utilisation d'ARexx dans une présentation qui associera les règles théoriques et les exemples pratiques de façon à satisfaire tant lè débutant ou l'exploitant moyen, que l'exploitant le plus expérimenté de l'Amiga (de l'A500 à l'A3000). Une ouverture enfin sera donnée au programmeur/développeur qui ne saurait aujourd'hui réaliser un bon produit sans une inclusion d'ARexx dans le fruit de ses travaux, utilitaire ou jeu !

Avertissement

Différents articles traitant d'ARexx, de niveaux différents, ont déjà paru dans différentes publications, si bien qu'il doit exister en conséquence différents niveaux parmi les lecteurs. Que les plus avancés patientent un peu pendant que les moins avancés et les nouveaux prendront place dans les rangs. Pour la cohérence d'une suite d'articles, il importe aussi de commencer par le début et de suivre un enchaînement logique.

Introduction

La question première qui fuse lorsqu'on évoque ARexx est bien évidemment : "qu'est-ce que c'est ?". La réponse est nette et définitive : c'est un langage de programmation de haut niveau !

Pour les uns, la déception est grande, qui leur fait craindre un travail supplémentaire. Du BASIC au Pascal, en passant par les Forth, Lisp, Prolog, Fortran (de 1 à 77 !), COBOL divers, APL, PLI, LTR, ADA, qu'avions nous besoin d'un langage supplémentaire, et pas même TURBO ?

De haut niveau avez-vous dit ? Voilà qui va nous mettre à dos la cohorte des attardés de l'assembleur 8/16 bits et faire ricaner les subtils experts du C ! Il n'entre bien évidemment pas dans nos visées de déclencher une polémique quelconque, aussi stérile qu'inutile tant il est vrai que ces modes de programmation ont leur intérêt et fait leurs preuves !

Mais il faut bien appeler les choses par leur nom. C'est toutefois faire injure à ARexx, qui, s'il entre dans cette catégorie à cause de son formalisme, présente des caractéristiques tout à fait séduisantes et, il faut bien le dire, à nulles autre pareilles.

En tant que langage de programmation, ARexx est utile à un large spectre d'utilisateurs. Il est à la fois très facile à apprendre, car s'apparentant au BASIC, et très puissant. Toutefois, au lieu de viser à l'universalité, il est principalement orienté vers le traitement des caractères et très bien adapté comme langage de commandes. Les programmes de commandes sont fréquemment appelés "scripts" (ou, plus techniquement, "macros") ; ils sont écrits dans un fichier de type texte et sont largement utilisés pour élargir l'ensemble des commandes prédéterminées d'un logiciel ou pour en personnaliser une application.

Par contre, ses capacités mathématiques sont faibles et les graphiques inexistants. Que l'on se rassure toutefois, l'appel aux bibliothèques spécialisées pallie à cette apparente faiblesse.

Nous verrons donc par la suite comment ARexx permet :
  • La commande directe à partir du clavier, à la façon d'un CLI ou d'un Shell.
  • La réalisation de petits programmes spécifiques, écrits en quelques minutes et effectuant des opérations quasi-magiques.
  • La réalisation de scripts correspondant à l'exploitation des progiciels du commerce dont l'emploi avec ARexx est prévu et dont l'exécution peut être déclenchée de l'intérieur ou de l'extérieur de ce progiciel.
Si bien que tout en étant un langage de haut niveau, ARexx est plus réputé comme "interpréteur de commandes", incomparablement plus riche que ne peuvent être les CLI ou Shell qui n'ont pas ses spécificités d'ouverture.

Dispositions spécifiques importantes d'ARexx

Quelques particularités importantes spécifiques d'ARexx doivent maintenant être précisées, pour montrer ses intérêts premiers.

1. Données sans type : les données utilisées par les instructions ou les fonctions, sont traitées comme des chaînes de caractères sans type (alpha, numérique, etc). Il n'est pas besoin non plus de déclarer les variables avant usage et toutes les opérations vérifient dynamiquement la validité des opérandes, de façon à réaliser uniquement des opérations cohérentes. Cela s'applique également aux tableaux (ou STEM) qui n'ont besoin ni d'être dimensionnés, ni même d'être de type unique, c'est-à-dire qu'ils peuvent être mixtes. Ils ont d'autres propriétés intéressantes que nous verrons plus loin.

2. Interface de commande : les programmes ARexx peuvent fournir des commandes aux programmes externes qui proposent l'interfaçage approprié. N'importe quel logiciel ou progiciel de ce type est entièrement programmable ou paramétrable suivant les cas, et peut être étendu sans limite par l'utilisateur final, au moyen d'un ou de plusieurs scripts. Cela veut dire aussi que le développeur peut limiter l'effort d'étude de son interface avec l'utilisateur (écran, clavier) à l'indispensable ou le strict nécessaire, en laissant à l'utilisateur le soin, et pourquoi pas le plaisir, de définir ses propres accès au logiciel, d'en changer pour en améliorer la fonction et, pour celui qui veut rester en dehors de "tout cela", proposer un interfaçage standard.

3. Trace et débogage : ARexx contient des facilités de déverminage des programmes au niveau source, qui permettent au programmeur de suivre les actions de son programme pas à pas pendant son fonctionnement. Un système d'interruption interne permet une manipulation spéciale des erreurs qui auraient par ailleurs provoqué l'arrêt du programme. La fonction "Trace", munie de nombreuses options, ce qui est inhabituel dans de tels langages, permet de suivre, éventuellement sélectivement, tout ce qui se passe pendant l'exécution du programme y compris l'interactivité avec l'utilisateur et la mémorisation de la "Trace".

4. Exécution interprétée : les programmes ARexx sont mis en oeuvre par un interpréteur. Cela veut dire qu'il n'est pas nécessaire de les compiler et de les "relier", et qu'ils sont exécutables dès qu'ils sont tapés ! Bien que cela réduise la vitesse d'exécution (et, ici, pas de façon très sensible) cela simplifie grandement la réalisation des programmes.

5. Bibliothèques de fonctions : des bibliothèques de fonctions externes diverses peuvent être utilisées pour élargir considérablement les possibilités du langage, ou faire des passerelles vers d'autres programmes.

6. Gestion automatique des ressources : l'allocation et la dé-allocation de la mémoire interne, en relation avec la création et la destruction des chaînes de caractères et autres structures d'information, sont entièrement automatiques. Elles libèrent le programmeur de ce souci tout en assurant une occupation minimale de la mémoire.

7. Capacité de programmation dynamique : certaines instructions d'ARexx permettent de résoudre certains problèmes de programmation d'une façon intéressante et nouvelle.

Avec la possibilité d'interpréter, le programmeur peut demander au programme d'exécuter des variables chaîne de caractères comme si c'étaient des instructions. Un programme peut donc être conçu non seulement pour créer des lignes de programme, mais encore pour les exécuter. Des fragments de programme peuvent aussi être passés comme des arguments à des fonctions qui peuvent aussi les interpréter.

Bien que cela soit plutôt réservé à ceux qui jouent dans la cour des grands, cette activité, dans ARexx, est accessible sans difficulté à tout programmeur.

Applications d'ARexx

Nous nous sommes volontairement limités dans une introduction qui aurait dû autrement changer de nom. Il reste encore de nombreuses et belles pépites dont l'accès est aussi simple que le reste.

Tout ce que nous avons dit est sans doute très beau, mais ne parle guère au néophyte qui en est toujours à la première question : à quoi tout cela sert-il ? Aussi allons-nous dès à présent essayer à la fois de satisfaire sa curiosité et lui donner l'envie, ainsi qu'aux autres, d'aller plus loin.

Premier exemple : il est de notoriété publique que l'impression du répertoire d'une disquette est résolument triste si l'on utilise la commande du CLI, "DIR > PRT:". Même avec l'option A ou N, on n'obtient ni toutes les informations désirées, ni une présentation très "classe" ! Nous pourrions souhaiter mieux, par exemple :
  • Imprimer le nom de la disquette.
  • Donner le nombre de fichiers dans la disquette.
  • Imprimer les répertoires avec une indentation à droite au fur et à mesure de leur niveau relatif.
  • Changer la couleur et/ou la police de caractères.
  • Écrire le contenu classé par ordre alphabétique, ou par ordre de taille ou tout autre classement au choix.
  • Donner entre parenthèses la taille de chaque fichier.
  • Effectuer des calculs indiquant la place restante sur la disquette.
  • Indiquer pour chaque fichier son degré de protection.
  • Etc.
Ce genre de programme demandera plus de temps à l'utilisateur pour définir ce qu'il souhaite voir après impression, que pour taper les commandes dans un fichier script. Nous en ferons un exemple appliqué dès les premiers essais de programmation à venir.

Second exemple : les disquettes du domaine public, en particulier celles, remarquables, de Fred Fish, ont la particularité d'être organisées selon un plan constant. La disquette a un nom qui contient son numéro d'ordre dans la collection, il y a un fichier, qui a toujours le même nom, donnant des indications générales sur l'intérêt et l'emploi des programmes contenus dans la disquette. Nous pourrions donc vouloir imprimer le nom de la disquette, tenir à jour une liste par valeur numérique ordonnée des disquettes en notre possession (même si nous ne les possédons pas toutes et si nous ne les avons pas obtenues dans l'ordre), imprimer les répertoires, les principaux étant précédés par le texte explicatif, et sauvegarder le tout dans un fichier répertoire spécialisé.

Là encore, le plus grand travail consistera à définir ce que l'on veut. Le programme, comme tous les autres (à l'exception de ceux d'intelligence artificielle), étant incapable de discerner nos goûts en la matière. Néanmoins son écriture ne devrait pas dépasser quelques dizaines de minutes.

Troisième exemple (et le plus délicat) : imaginons que nous ayons une banque de données réalisée sous un logiciel X (disons au hasard DBMan, ou, dans sa version française InfoFile). Mais pour des raisons dont nous n'avons pas à nous préoccuper, nous voudrions bien passer sous, encore au hasard, SuperBase. Il existe bien des méthodes mais la question des délimiteurs fait que cela n'est pas aisé, sinon impossible.
Voici donc la procédure utilisable sous ARexx : tout d'abord, éditer le fichier de données dont on se sert. C'est un fichier relativement illisible mais dans lequel il y a obligatoirement les noms des champs associés à chaque élément : par exemple nom, adresse, numéro de téléphone, etc. Chaque fiche est construite de la même façon, et il y a aussi obligatoirement une périodicité de nombre de caractères ou de type de caractères : les délimiteurs. Il faut repérer tout cela précisément.

On crée ensuite dans la banque de données nouvelle que l'on souhaite utiliser, un fichier contenant deux ou trois fiches strictement identiques à celles de la banque de données initiale. On se livre ensuite au même travail de repérage. A la fin, on dispose du modèle de chacune des méthodes de stockage des deux banques. C'est ici qu'ARexx entre en jeu. Comme il ne s'intéresse qu'aux caractères, on va écrire un programme qui va lire dans le premier fichier (celui que l'on veut transposer) une série de caractères, égale ou supérieure à celle qui est nécessaire pour obtenir l'équivalent d'une fiche. On en tirera les valeurs utiles, à savoir les noms, adresses, numéros de téléphone, etc. Puis on construira une définition, caractère par caractère, d'un fichier formellement identique à celui de la banque nouvelle que l'on veut utiliser, en plaçant là où il le faut les valeurs (data) extraites de la précédente. On répétera l'opération autant de fois qu'il sera nécessaire jusqu'à la fin du fichier source, en utilisant une instruction de boucle. Il ne restera plus qu'à enregistrer le fichier ainsi créé avec le nom voulu pour que la deuxième banque de données puisse s'en servir comme si elle l'avait construit elle-même.

Nous verrons dans le prochain article comment utiliser certains programmes du commerce : dessin, numérisation, traitement de texte, etc. Nous verrons aussi comment installer ARexx, ce qu'il est nécessaire de posséder et de faire pour le mettre en oeuvre et l'utiliser.


[Retour en haut] / [Retour aux articles] [Article suivant]