Obligement - L'Amiga au maximum

Mardi 27 juin 2017 - 21:09  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : ARexx - premiers pas
(Article écrit par Cédric Beust et extrait d'Amiga News - janvier 1992)


Si, comme beaucoup de personnes, vous aimeriez programmer votre Amiga mais votre première expérience avec l'AmigaBasic vous en a définitivement fait passer le goût... Si "compilateur" est un mot que vous osez à peine prononcer sans rougir et que vous en êtes resté au bon vieux "run toto" de l'Apple II... Si ARexx est un nom qui éveille un vague intérêt chez vous mais que vous résistez difficilement à dix lignes d'un article sur le sujet, et encore moins d'un listing... Si vous venez d'acquérir un A500+ et que vous avez un superbe système 2.0 devant les yeux mais que la lecture de la documentation vous incommode fortement, surtout celle succincte liée à ARexx...

Si vous avez hoché la tête à chacune de ces suppositions et que vous n'êtes pas encore irrité par mon style très conditionnel d'introduction, alors cet article vous concerne car il sera peut-être le premier que vous lirez en intégralité sur ARexx. Tel est mon souhait en tout cas.

Maintenant que j'ai votre attention, je vous expose mes buts. J'ai l'intention de vous prendre par la main et de vous faire découvrir petit à petit le monde de la programmation de l'Amiga par le petit bout de la lorgnette. Pas de compilateur à acheter ni de commandes ésotériques à taper pour obtenir un exécutable: vous avez tout sous la main. Je vais quand même supposer que vous êtes capable d'ouvrir un Shell et d'y lancer des commandes. A part ça, un éditeur quelconque suffira largement pour ces premiers pas.

Vous ne trouverez pas dans cet article une description exhaustive des commandes. Un coup d'oeil à votre manuel vous donnera tous les renseignements à ce sujet. Ce que le manuel ne vous donnera pas, en revanche, c'est la distinction entre ce qui est essentiel pour commencer et les commandes spécialisées dont vous ne vous servirez qu'avec davantage de pratique. Pas de panique : j'ai fait ce filtrage pour vous. Suivez le guide !

Premier programme

Afin de conserver votre attention intacte, je ne vais pas vous bombarder d'arguments visant à vous démontrer en quoi ARexx se distingue des autres langages de programmation. Restons simples, telle est ma devise. Je vais vous montrer comme il est facile d'écrire un programme en quelques minutes et je suis certain que, séduit par cette simplicité, vous aurez envie d'en savoir plus.

Si vous avez le système 2.0, vous n'avez besoin de rien d'autre car ARexx fait partie de la distribution. Dans le cas contraire, il vous faudra faire l'acquisition d'ARexx auprès de son auteur, Bill Hawes.

Comment ne pas passer par l'incontournable "Hello World", fidèle de tous les programmateurs depuis tant d'années ? Tout simplement en étant un peu mégalomane et en faisant preuve d'un peu d'imagination. Ce qui amène le premier programme que voici :

/* Un premier programme */
say "Salut Terrien, je te donne l'heure:"
address command "date"

Sauvez ce programme en RAM: par exemple et appelez-le "p1.rexx". Si ce n'est pas déjà fait, il faut en premier lieu lancer le serveur principal d'ARexx, qui s'appelle "rexxmast". Maintenant, tapez sous Shell la commande "rx ram:p1.rexx" et vous verrez s'afficher la phrase attendue...

Contrairement aux apparences, ce programme vous enseigne plein de choses. Tout d'abord, qu'un programme ARexx commence toujours par un commentaire. C'est une bonne habitude à prendre de toutes façons, et puis si cela ne vous plaît pas, rien ne vous empêche de mettre un commentaire vide. Ce commentaire est délimité par "/*" et "*/". Notez que les commentaires peuvent être indentés, ce qui est pratique pour mettre entre commentaires toute une portion de code alors que celle-ci contient déjà des commentaires.

La commande standard d'affichage est "say". Elle affiche toujours son contenu suivi d'un retour chariot. Vous pouvez concaténer plusieurs éléments sur un même "say" en les séparant par "||".

La communication inter-applications sous ARexx

Le mot-clé "address" est un des plus importants du langage, et c'est pourquoi je l'introduis dès maintenant. C'est lui qui permet à vos programmes de piloter des applications possédant un port ARexx. Beaucoup de logiciels offrent cette possibilité désormais mais peu donnent le moyen pratique de le réaliser. Si c'est une question que vous vous êtes toujours posée sans jamais oser la demander, voici enfin la réponse. Dans ce programme, je spécifie que je m'adresse à l'hôte command (il s'agit du Shell) et je lui envoie la commande qui suit (date). Voici donc déjà un moyen simple d'exécuter des commmandes Shell.

Prenons un exemple plus concret. Supposons que vouz ayez lancé l'éditeur de texte QED et que vous souhaitiez lui envoyer une commande l'aide d'ARexx ; par exemple le changement de la taille des tabulations à 7. La première chose à faire est d'identifier le nom du port sur lequel QED attend ses ordres. On peut faire ça en ARexx avec le programme suivant :

/* Quels sont les ports ARexx actifs actuellement ? */
say show(ports)

Si vous lancez ce programme, vous obtiendrez par exemple un résultat ressemblant à celui-ci :

PlayBeepPort ConClip.rendezvous MachIII Port MachHand M3 Timer Beep REXX AREXX WSH_Completer cxreply_port cxcon_port cxid_port SNAP FF2:) Bypass KD_lib wIconifyPort wIconSetterPort Exchange Spliner Virus_Checker DirWork Stuff WSH_6 ProWrite ced_port rexx_ced QED1 IPrefs.rendezvous SetPatch Port

On a tôt fait de repérer que le nom qui nous intéresse est "QED1". On exécute alors notre plan avec le programme suivant :

/* Envoie une requête à QED /*
address QED1 TAB 3

Vérifiez tout d'abord la taille des tabulations dans QED (avec "Amiga droite + T"), puis lancez le programme par la méthode que vous commencez à connaître et constatez que la requête a été reçue par QED. Je ne vais pas m'étendre davantage sur cet aspect pour le moment : restons simples. Je pense qu'il était important de souligner cet aspect et peut-être cela ouvre-t-il des horizons à certains d'entre vous. Il existe bien entendu des méthodes plus rigoureuses pour localiser le port que vous recherchez, et tout cela est indiqué dans la documentation ARexx livrée avec le programme que vous souhaitez piloter. Je vous y renvoie donc.

Un peu d'organisation

Avant d'aller plus avant, précisons quelques règles de bienséance concernant l'organisation de vos fichiers. C'était implicite dans les paragraphes précédents, mais le minimum est d'avoir mis vos commande "rexxmast" et "rx" dans votre répertoire "C:", si ce n'est déjà fait.

Ensuite, il est fortement recommandé d'avoir une assignation "rexx:" vers un répertoire dans lequel vous stockerez tous vos admirables listings ARexx. Par exemple, si vous avez un disque dur, créez un répertoire avec la commande "mkdir dh0:rexx" et ajoutez dans votre user-startup (ou startup-sequence si vous utilisez le 1.3) la commande "assign rexx: dh0:rexx".

Le répertoire "rexx:" est le premier répertoire parcouru par "rx" à la recherche de votre commande (ou le deuxième, le premier étant le répertoire courant, je ne sais plus exactement). Si vous stockez vos programmes dans ce répertoire, il n'est plus nécessaire de spécifier le chemin intégral lors de l'appel de "rx". Si vous déplacez p1.rexx dans ce répertoire, vous pouvez l'appeler par un simple "rx p1". Notez que le suffixe ".rexx" est également facultatif. Je vous conseille de le mettre à tous les programmes "indépendants" que vous écrivez. Par "indépendant", je veux dire qu'ils ne pilotent aucune application. Si ce n'est pas le cas, il est préférable de leur mettre un suffixe permettant à l'application en question de retrouver les siens lors du parcours de rexx: (dans le cas de QED, c'est le suffixe ".qed"). Là encore, Cf. la documentation ARexx de votre programme.

Un pas plus loin dans le langage

Voici un autre programme à méditer :

ARexx

Une première constatation : ce programme est faux :-). Ne m'en veuillez pas, c'est voulu. Il y a plusieurs choses intéressantes dans ce programme, indépendamment du fait que c'est moi qui l'ai écrit. D'abord, il montre quelques structures de boucle et de test classiques. Pour peu que vous ayez déjà programmé dans votre vie, vous devez être capable de comprendre à quoi elles correspondent.

Ensuite, j'ai utilisé l'instruction "parse". C'est une instruction très puissante qui peut être utilisée de plein de façons différentes. Ici, je l'ai utilisée pour analyser la ligne de commande lors de l'appel du programme, c'est-à-dire tous les mots qui suivent "fibo" lors de l'appel "rx fibo n". Dans le cas présent, la seule chose qui m'intéresse est de connaître la valeur de "n" afin de l'utiliser dans ma boucle. "parse" est très pratique pour analyser une longue chaîne parsemée de symboles que vous attendez (des virgules, des blancs, des tirets) afin d'en retirer les informations dont vous avez besoin. Je reviendrai sur sa syntaxe car on peut difficilement faire des programmes performants sans l'utiliser...

Après quelques essais, je me suis rendu compte que mon programme rendait des valeurs incorrectes. J'ai donc utilisé la commande "trace" afin de suivre de plus près le déroulement du programme.

J'ai uniquement demandé à tracer tous les résultats du programme. Lancez-le et vous obtiendrez l'affichage suivant :

ARexx

Je crois que cet affichage est suffisamment clair : les lignes exécutées sont précédées par leur numéro et les valeurs suivant ">>>" sont les résultats des calculs. Je pense que vous voyez immédiatement à quel point cette fonction peut faciliter la tâche du programmeur... Il y a bien évidemment beaucoup d'autres façons de tracer le programme de façon à ne se concentrer que sur l'essentiel.

Conclusion

J'espère que cette introduction vous aura intéressé. Si c'est le cas, gardez à l'esprit que le meilleur moyen d'apprendre rapidement est de lire les listings des autres. Replongez-vous donc dans vos disquettes de DP et disséquez-les. Je crois vous avoir donné les bases nécessaires à une compréhension minimale et vous ne devriez pas vous sentir trop dépaysé.


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