Obligement - L'Amiga au maximum

Jeudi 28 mars 2024 - 17:24  

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

 


Test de Maxon C++
(Article écrit par Gilles Soulet et extrait d'Amiga News - mars 1993)


Depuis le début des années 1990, la programmation orientée objet (POO) a pris une place considérable en informatique et est en passe de devenir aujourd'hui le standard en matière de développement. Longtemps à la traîne dans ce domaine, l'Amiga dispose enfin d'un environnement complet pour programmer en C++ et vous initier aux joies de la POO.

Le paquetage

Maxon C++ est proposé en deux versions :
  • Une version de base qui contient le compilateur C++, un éditeur, un outil d'aide à la création d'interfaces utilisateur et un système d'aide.
  • Une version développeur complétée par un débogueur et un assembleur.
Le système est livré sous forme de quatre (cinq) disquettes accompagnées d'un gros classeur de plus de 1000 pages où sont détaillées toutes les possibilités du produit ainsi qu'une initiation à la POO et au C++. La configuration minimale requise est de 1,5 Mo de mémoire et d'un lecteur de disquette, mais une mémoire de 3 Mo et une installation sur disque dur est souhaitable si on désire profiter pleinement du produit. Maxon C++ fonctionne avec toutes les versions du Workbench mais avec un aspect 2.0, même sous 1.3 grâce à la bibliothèque partagée RCT.library, fournie, dont nous reparlerons par la suite.

Afin d'offrir un confort maximum au programmeur, Maxon C++ est livré sous forme d'environnement intégré. Autrement dit, l'utilisateur n'a pas à lancer plusieurs outils différents (éditeur, compilateur, assembleur, éditeur de liens...) pour générer un exécutable. Tout est fait à partir de l'éditeur.

Edward

Edward, dont le nom est le même que celui de nombreux rois d'Angleterre, se veut être un éditeur royal (dixit la documentation). A l'exécution, deux fenêtres apparaissent à l'écran. La première contient le fichier à éditer, la seconde, appelée "fenêtre de projet", récapitule tous les fichiers chargés avec leurs attributs. Edward permet de travailler simultanément avec autant de fichiers que vous le voulez (ce nombre est bien sûr limité par la mémoire disponible).

La fenêtre de projet permet de passer d'un fichier à un autre par un simple double-clic sur la ligne correspondante (figure 1). Pour ceux qui le désirent, il est également possible d'ouvrir une fenêtre par fichier chargé mais, excepté pour les heureux possesseurs d'écrans 17", la première solution est de loin la plus pratique. Les personnes travaillant sur des projets utilisant de nombreux fichiers sources (ce qui est souvent le cas en programmation) apprécieront cette possibilité.

Maxon C++
Figure 1

Edward possède toutes les fonctions classiques d'un éditeur digne de ce nom : déplacement au curseur ou à la souris, ascenseur, recherche/remplacement, travail sur un bloc (les presse-papiers sont gérés), impression, macros, port ARexx, folds (le fait de replier des blocs de texte : proche des fanfolds du GFA), etc. mais sa qualité principale est sa configurabilité quasi totale.

Edward dispose d'une bibliothèque d'environ 120 commandes telles que la pose d'une marque, le déplacement du curseur, le lancement d'une commande CLI, etc. que l'utilisateur peut utiliser à sa guise dans un fichier de configuration ASCII (comme l'éditeur DME de Matt Dillon pour ceux qui le connaissent mais en mieux !). Pour illustrer ces propos, voici un petit exemple :

Maxon C++

Ces quelques lignes nous ont permis de créer le menu projet de la figure 2 qui assure notamment le chargement, la sauvegarde et l'impression des fichiers.

Maxon C++
Figure 2

Il est également possible d'assigner des commandes aux touches du clavier :

Maxon C++

Nous avons donc la possibilité d'harmoniser les touches de fonctions d'Edward avec celles de votre éditeur favori (ceux qui utilisent plusieurs éditeurs différents savent qu'il est pénible de passer de l'un de l'autre). Enfin, une fenêtre d'options permet d'activer quelques modes très pratiques :
  • L'indentation automatique.
  • Le "word-wrap" : la "non-coupure" des mots en fin de ligne.
  • La sauvegarde automatique, toutes les "n" secondes, des fichiers.
  • La vérification des parenthèses.
  • La possibilité de choisir la place mémoire maximale réservée aux fonctions "Undo" et "Redo".
En bref, Edward est un bon éditeur, bien adapté à la programmation comportant toutefois encore quelques petits bogues tels que la fonction "split" horizontal qui permet de scinder en deux une fenêtre qui se comporte bizarrement sous 1.3, et la fonction de recherche qui ne marche pas toujours comme on le voudrait.

Le compilateur

Sa première particularité est de fonctionner en deux modes : C++ et ANSI-C. Il respecte la norme C++ 2.1 d'AT&T. Maxon C++ est un vrai compilateur et non un préprocesseur. Le C++ n'est donc pas transformé en C avant d'être compilé de manière classique mais est transformé directement en code intermédiaire.

Un panneau de configuration permet à l'utilisateur de choisir ses options de compilation ainsi que les types de "warning" (figure 3). Vous pouvez par exemple générer un fichier assembleur si vous voulez optimiser vous-même le code mais vous devrez alors utiliser l'assembleur de la version développeur ou Devpac pour recompiler. Maxone C++ ne génère en effet pas d'assembleur 680x0 mais un code intermédiaire. La plupart des bons compilateurs passent par un tel code qui permet ensuite l'optimisation du code généré. Il est également possible de créer un "symbol hunk" (symbole de segment) utilisable par le débogueur de Devpac.

Maxon C++
Figure 3

Une autre bonne idée des concepteurs est d'offrir la possibilité de copier les fichiers include (".h") en mémoire vive lorsqu'ils sont appelés pour la première fois (ou ailleurs mais c'est en mémoire que le profit est le plus élevé). Cela augmente évidemment la vitesse des compilations ultérieures en particulier pour ceux qui n'ont pas de disque dur. Pour faciliter la gestion de gros projets, une option "make" permet de ne recompiler que les modules qui ont été modifiés. Lorsqu'il détecte une erreur, Maxon C++ ouvre une fenêtre dans laquelle est décrite l'erreur (figure 4). Un bouton permet de se positionner dans le source.

Maxon C++
Figure 4

L'éditeur de liens est lui aussi différent des éditeurs de liens classiques. En effet, il ne va pas chercher les fonctions standard de la bibliothèque (printf, scanf, puts, strxxx...) dans une bibliothèque mais dans une multitude de fichiers objets (".o"). Pour retrouver ses petits, Maxon C++ utilise un fichier appelé "logfile" dans lequel est stocké une correspondance entre les fichiers ".o" cités plus haut et leur contenu.

L'éditeur de liens ne charge donc que ce qu'il lui faut contrairement aux autres éditeurs de liens qui balayent les fichiers bibliothèques à la recherche des briques de base nécessaires à votre programme. L'éditeur de liens permet de créer deux types de fichiers : des fichiers exécutables normaux et des exécutables sans initialisation des E/S et sans ouverture des bibliothèques Amiga (Maxon C++ ouvre habituellement automatiquement, les bibliothèques graphics, intuition et diskfont en cas d'utilisation en plus de l'exec et de la DOS).

Toutes ces particularités, mises bout à bout, ont pour conséquence une accélération de la compilation et une diminution sensible de la taille du code généré. Le classique "Hello World" occupe 712 octets avec Maxon C++ alors qu'avec Lattice C++, il fait environ 14 ko !

Maxon C++

Enfin, une version CLI du compilateur est également fournie avec le système. Elle fonctionne dans la philosophie Unix, c'est-à-dire qu'une seule commande permet de compiler, assembler et relier le programme. L'ordre "MCPPC test.c" traduit le source et génère l'exécutable test. On n'aurait pu faire plus simple !

Le "Source-Level Debugger"

Il est très rare qu'un programme fonctionne correctement dès la première exécution, alors commence la longue et fastidieuse recherche des erreurs. Pour nous faciliter cette tâche, Maxon nous fournit un débogueur orienté Intuition qui répond au nom de MSDB. Il offre l'ensemble des possibilités d'un débogueur classique : examiner une variable, exécuter une ou plusieurs lignes, placer des points d'arrêts... (figure 5).

Maxon C++
Figure 5

MSDB possède cependant des commandes que l'on retrouve plus rarement telles que le suivi de l'exécution du programme simultanément en C++ et en assembleur. La fonction "Inspect" est celle qui paraît tout de même la plus intéressante : elle permet, après avoir sélectionné une variable, de visualiser son contenu dans une fenêtre. Si cette variable est structurée et possède une sous-structure, celle-ci peut alors être visualisée dans une nouvelle fenêtre (figure 6). Il est ensuite possible de poursuivre l'exécution du programme, les fenêtres étant rafraîchies à chaque pas, le débogage s'en trouve considérablement simplifié.

Maxon C++
Figure 6

MakeAPP

MakeAPP est un programme d'aide à la création d'interfaces utilisateur. Il utilise intensément la RCT.library (Cf. le paquetage) pour vous permettre de rendre vos programmes plus agréables à utiliser. Edward a été en partie créé à l'aide de ce logiciel. Sur un écran de travail, vous ajoutez à loisir fenêtres, boutons, ascenseurs, gadgets de saisie et menus avec les caractéristiques que vous désirez (figure 7).

Maxon C++
Figure 7

Vous pouvez ensuite générer un fichier C++ que vous pourrez adjoindre à votre programme. Pour gérer toutes vos créations la RCT.library dispose d'une panoplie d'environ 100 fonctions. L'une d'elles permet de créer une requête de fichiers plus conviviale que celui de l'asl.library ! Malheureusement, pour l'instant, MakeAPP est fortement bogué, et il est très hasardeux d'arriver à créer un objet même très simple.

HotHelp

HotHelp est le programme d'aide en ligne fourni avec Maxon C++. Interfacé avec l'éditeur, il permet de retrouver rapidement les paramètres de toutes les fonctions de la bibliothèque standard C et des bibliothèques Amiga (figure 8). Avec HotHelp, vous n'aurez plus à vous plonger dans les "ROM Kernel Manuals", ni les documentations C. Il est également possible de créer ses propres fichiers d'aide si on le désire. Pour l'instant, seul un fichier d'aide sur les fonctions du Workbench 1.3 est fourni mais une mise à jour permettant de passer aux fonctions du Workbench 2.0 est disponible depuis janvier 1993.

Maxon C++
Figure 8

Efficacité

Pour tester l'efficacité du code produit, nous avons utilisé comme d'habitude le programme calculant les termes de la suite de Fibonacci, sur plusieurs compilateurs existant sur Amiga. Voici les temps nécessaires pour calculer le 27e terme :
  • Maxon C++ : 17 s.
  • Lattice C++ 1.0 : 21,2 s.
  • Lattice C 5.10 : 14 s (*).
  • Aztec C 5.0a : 17,2 s.
  • GFA Basic : 1 min 15 s (*).
  • High-Speed Pascal : 22 s (*).
  • Devpac 3 : 10,4 s.
  • Maxon ASM 1.1 : 9,9 s.
(*) = Cf. cet article.

On peut remarquer que Maxon C++ s'en tire plus qu'honorablement face aux autres compilateurs. Cet exemple n'est cependant pas très significatif car il n'utilise aucune particularité de la programmation orientée objet. Pour ce faire, un petit programme de traitement de listes chaînées, qui utilise les objets et les notions d'héritages a été utilisé. Le résultat est largement en faveur du compilateur de Maxon :
  • La compilation est environ 3 à 4 fois plus rapide avec Maxon C++ (ce qui était prévisible car le Lattice C++ fait deux fois le travail : il génère du C et il traduit ce C en exécutable).
  • Le code est 5 fois plus cours.
  • Le programme est environ 2 fois plus rapide.
Compilateur
Temps compilation
Taille exe
Temps exe
Maxon C++ 1.0 13 s 3204 23 s
Lattice C++ 1.0 46 s 15536 45 s

Conclusion

Pour :
  • Documentation bien faite et chose rare truffée de gags.
  • Prix très intéressant : pour 2000 FF, on dispose d'un compilateur C/C++, d'un bon éditeur, d'un débogueur, d'une aide en ligne et d'un outil d'aide à la création d'interfaces graphiques.
  • Compilateur rapide et efficace.
  • Environnement convivial.
Contre :
  • Documentation en allemand donc incompréhensible pour ceux qui ne maîtrisent pas la langue de Goethe.
  • Quelques petits bogues dans l'environnement tels que le make qui fonctionne avec des dates internes et non celles sur disque, l'application MakeAPP quasi inutilisable.
  • Ne génère pas de code pour la FPU.
  • La norme 3.0 d'AT&T n'est pas encore gérée (traitement des exceptions).
Nom : Maxon C++.
Éditeur : Maxon.
Genre : programmation.
Date : 1992.
Configuration minimale : Amiga OCS, 68000, 1,5 Mo de mémoire.
Licence : commercial.
Prix : 598 DM (version développeur) et 398 DM (version de base).


[Retour en haut] / [Retour aux articles]