Suivez-nous sur X

|
|
|
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
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Test de Strux
(Article écrit par Laurent Faillie et extrait d'Amiga News - avril 1994)
|
|
"Strux est un utilitaire qui permet de créer facilement la structure d'un programme".
C'est ainsi qu'il est présenté dans sa documention. Il est d'origine allemande et est
produit par Peppermint Computer Products.
Le ton est donné. Son but n'est pas de créer un code compilable mais uniquement le squelette du
programme, qui est la partie la plus complexe dans la conception d'une application.
C'est au programmeur de remplir les blancs... Il est livré sur une seule disquette
qui contient deux versions (anglaise en allemande), et une documentation d'une cinquantaine de
pages en anglais qui précise que le programme fonctionne sur n'importe quel Amiga sous AmigaOS 2.0
ou plus avec un minimum de 512 ko de mémoire...
Installation
Il n'y a absolument rien à faire, si ce n'est prendre le répertoire contenant la version
choisie (strux_english) et la faire glisser dans le répertoire ou la destination choisie
du disque dur. On peut aussi évidemment travailler sur une copie de la disquette. La
documentation indique que Strux prend environ 200 ko (mais plus de 230 ko en réalité).
L'éditeur
Strux peut être lancé directement depuis le Workbench ou depuis le Shell. Grâce à des options,
on peut choisir la langue utilisée (anglais ou allemand), le fichier à ouvrir par défaut, et si
l'on veut qu'il utilise un écran public.
L'éditeur se présente sous la forme d'une simple fenêtre où tout est géré par des menus.
On peut agrandir cette fenêtre jusqu'à la limite de l'écran, même en super haute résolution
avec suraffichage !
Une aide en ligne peut être appelée à tout moment, simplement en cliquant sur la touche "Help"
en sélectionnant l'item sur lequel nous voulons de l'aide. Et le meilleur, c'est que ça marche
même avec PopUp-Menu... génial.
Je vais créer le programme de factorielle que j'ai décrit dans la présentation
cet article. Add/Input et hop, une requête
s'ouvre dans laquelle je tape l'action à faire : "Entrez un nombre :".
Add/OutPut pour afficher le résultat, et enfin Add/SubRoutine/Fact
pour le calcul.
Mais j'ai oublié le nom du programme ! Aucun problème : je remonte en dessus
du premier bloc par un Ctrl-flèche haut et un Add/Programme me permet d'insérer le titre.
Enfin, je finis le diagramme par un Add/Exit.
Éditons maintenant la fonction fact(). On place le curseur sur le bloc "Fact".
Refinement/refine Block : la fenêtre s'efface pour nous permettre d'éditer la
nouvelle fonction. Si vous revenez au graphe principal, vous verrez que "Fact"
a changé de couleur indiquant qu'il contient d'autres instructions.
Tout est vraiment très intuitif, et la documentation n'est vraiment utile que pour des
actions bien spécifiques. Attention, une fonction sera générée dans le source
mais uniquement parce que "Fact" est défini en tant que sous-routine. S'il
avait été d'un autre type, le second graphe aurait été inséré dans le premier
lors de la conversion.
Remarquez que dans "Fact", je place le résultat dans une variable temporaire,
mais ce n'est que pour montrer que plusieurs actions peuvent être mises dans le même bloc.
Il y a trois modes de représentation :
1. Nassi-Shneiderman qui est beaucoup utilisé dans les livres car il est très compact.
2. FlowChart plus classique et plus facile à appréhender.
3. Pseudo-Code qui correspond plus ou moins au langage d'analyse.
Pour chacun de ces modes, on peut choisir le type de police à utiliser. Comme les
graphes demandent beaucoup de place, j'utilise une petite police (Teeny 8) et ça marche très bien.
Les cadres et autres flèches changent de taille pour s'accorder avec la nouvelle police.
En plus de son propre format, Strux (mais où vont-ils chercher des noms pareils ?)
permet la sauvegarde en mode graphique (Brosses IFF) ou en texte, ce dernier mode
étant la génération du source... L'impression est réalisée de manière très intelligente car
le programme choisit une échelle suivant la taille du graphe.
Le seul gros reproche que je lui ferais est qu'il n'utilise qu'une seule fenêtre.
Comme il ouvre un écran public, il est possible de lancer un second Strux sur le même écran :
ils pourront communiquer grâce au presse-papiers. Dommage qu'il n'y ait pas de port ARexx
pour automatiser ce processus... Pour en finir avec l'éditeur, je vous conseille de changer l'unité
du presse-papiers qu'il utilise car certaines applications comme l'éditeur AZ
n'apprécient pas de coller des données qui ne sont pas du texte...
Génération du code
Seul le squelette du programme étant généré, il ne faut donc pas s'attendre à avoir un code
compilable, et je pensais même que ce module serait très quelconque.
Eh bien non, ici aussi, Strux innove encore avec une idée géniale. Au lieu d'incorporer des générateurs
de C, de Pascal ou autres, il utilise des tables de traduction qui sont totalement redéfinissables
par l'utilisateur et qui gèrent une sorte de formatage à la manière du printf()
du C. Ainsi, pour reprendre l'exemple du manuel, une boucle "while" est défini par
"while(%t{%b2%n}". "%t" est remplacé par la condition, "%b2" indique que l'identation
est augmentée de 2, et le "%n" indique un retour à ligne.
Cinq tables sont fournies avec le programme : le C, le Pascal, le Pseudo-Code,
ARexx et... l'AmigaBasic. On voit que les langages de haut-niveau les plus utilisés sont présents.
Pour ceux qui manquent, comme le E par exemple, d'autres tables peuvent être construites facilement,
mais par contre, je doute qu'un générateur de ce type pour le code assembleur soit vraiment fonctionnel...
L'importation
C'est la seule partie du programme qui m'a réellement déçu : théoriquement,
Strux est capable de lire un source C ou Pascal pour en recréer les graphes.
Les premiers tests sur mes propres sources C ont été plutôt infructueux : des fonctions étaient
"oubliées", quand le système ne plantait pas tous simplement ! Était-ce une nouvelle manifestation
de l'esprit malicieux de mon A1000 ? En fait, le problème provient des commentaires C++
(//) que Strux ne comprend pas. Une fois tous ces commentaires supprimés,
le C est lu sans trop de problèmes.
En ce qui concerne le Pascal, impossible de lui faire lire correctement un source de PCQ,
mais il faut dire que se compilateur DP n'est pas particulièrement standard. Attention,
je ne critique pas le fait que Strux ne puisse pas lire tout les sources, car le "//"
n'est pas standard en C normal, mais je trouve anormal que ceci plante le système :
c'est un bogue. En plus, il se mélange totalement les pinceaux avec les switch()/case.
Dommage car cette fonction est très utile pour décortiquer les sources d'un autre programmeur.
Quelques mots sur la doc
Si j'en parle aussi tardivement, c'est qu'elle ne sert pas beaucoup car, comme
je l'ai déjà dit, l'éditeur est vraiment très intuitif. La seule fois où j'ai vraiment eu à l'ouvrir a été pour créer
ma propre table de traduction... Rien à reprocher au tutoriel, qui traite de la création d'une application en C
et en Pascal.
Bilan
Ce que j'ai aimé :
- Les trois modes de visualisation, et le fait qu'ils suivent vraiment la norme.
- La possibilité de changer les polices.
- Les graphes "pseudo-vectoriel", à l'écran comme à l'impression.
- L'impression dont l'échelle varie automatiquement en fonction de la taille du graphe.
- L'édition qui est très intelligente, que ce soit au clavier ou à la souris.
- Le fait qu'il puisse créer son propre écran ou s'ouvrir sur un écran public.
- Les tables de translation qui permettent de créer notre propre langage.
- La documentation est bien faite et surtout, elle sait se faire oublier !
Ce qui peut être amélioré :
- Le symbole "fin de procédure" qui ne correspond qu'au... break !
- Exemple qu'en allemand.
- Importation d'autres langages que le C et le Pascal.
- Gestion inexistante de l'assembleur (mais je vois mal comment un langage de bas-niveau peut être géré par
tel programme !).
- La gestion du //.
- Pas de gestion multifenêtre.
- Un peu plus de couleur aurait facilité la lecture des graphes.
- L'impression ne gère que le monochrome.
- Utilisant un Workbench avec suraffichage, j'aurais aimé que le nouvel écran prenne les
dimensions de ce dernier.
- Un petit port ARexx ?
Ce que je n'ai vraiment pas aimé :
- Que Strux se plante lorsque l'on importe un source qu'il ne comprend pas,
comme du C avec des commentaires C++.
Il n'y a pas encore de distributeur pour la France mais mon petit doigt me dit
que ça ne devrait pas tarder. Une version démo se trouve sur Aminet
et peut-être sur certains BBS (Ramses ?). Strux est disponible auprès de son auteur
pour 98 DM (+12 DM pour les frais d'envoi ) soit environ 400 FF :
PCP (Andreas Günther), Alferner Weg 10. D-33100 Paderborn, Allemagne.
Nom : Strux.
Développeur : Peppermint Computer Products (Andreas Guenther).
Genre : aide à la programmation.
Date : 1993.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire, AmigaOS 2.0.
Licence : commercial.
Prix : 110 DM.
|
|