Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 22:02  

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 HighSpeed Pascal 1.10
(Article écrit par Gilles Soulet et extrait d'Amiga News - octobre 1992)


HiSoft, déjà célèbre pour son assembleur/débogueur Devpac, ou son BASIC compilable, nous propose désormais un environnement complet pour programmer en Pascal. Les spécialistes de cet excellent langage vont pouvoir enfin développer sérieusement sur l'Amiga !

Compatible...

Il existait déjà plusieurs Pascal sur notre machine (KickPascal, Oxford Pascal...) mais aucun n'était vraiment idéal pour travailler (faiblesse de l'éditeur, lenteur de compilation, peu de modularité, quelques bogues...). Avec HighSpeed Pascal, HiSoft frappe un grand coup et introduit, pour la première fois, un Pascal compatible avec Turbo Pascal, la référence absolue en la matière !

Car il faut savoir que contrairement au C, le Pascal possède plusieurs "dialectes", et que c'est bien Turbo Pascal de Borland qui reste considéré comme la référence (sur micro), et qui possède le plus grand nombre de sources. HighSpeed Pascal ouvre à l'Amiga une grande bibliothèque de programmes, tout en les simplifiant au maximum la portabilité entre notre machine et le monde des compatibles PC.

Remarquons quand même que la compatibilité n'est pas absolument parfaite, et qu'elle se limite à la version 5.0 du Turbo Pascal, version récente certes, mais qui ne propose pas l'approche orientée objet de la version 5.5.

Caractéristiques générales

Le produit se présente sous forme de quatre disquettes, accompagnées d'un manuel de référence et d'un manuel utilisateur. La configuration minimale conseillée est 1 Mo de mémoire centrale et de deux lecteurs de disquette. Il est toutefois possible de faire fonctionner HighSpeed Pascal avec 512 ko, en limitant au maximum la consommation de mémoire.

L'installation sur un disque dur est évidemment la solution idéale. Aucun programme d'installation n'est fourni, car il suffit de recopier quelques fichiers à l'endroit voulu. HighSpeed Pascal fonctionne aussi bien sur AmigaOS 1.3 que sur 2.0 (deux versions différentes sont fournies).

Ce Pascal dispose d'un environnement totalement intégré. Toutes les opérations peuvent être effectuées à partir de l'éditeur, dont les nombreux menus proposent, outre les classiques fonctions d'édition (couper, coller, rechercher, remplacer...), toutes les options pour configurer le compilateur, générer un programme, exécuter en mémoire, déboguer, etc. La présentation, identique à celle de Devpac 3, est extrêmement agréable : tous les menus et options sont bien organisés, de façon très ergonomique.

HighSpeed Pascal est compatible avec la version 5.0 du Turbo Pascal : il permet donc de faire de la programmation modulaire, grâce à des modules séparables (Units). Mais il propose également des particularités permettant d'utiliser les capacités de l'Amiga, notamment au niveau graphique, et il permet même de générer des biliothèques, grâce au "Libmaker".

L'éditeur

Il est entièrement configurable. Ses quatre premiers menus (Project, Edit, Search, Window) sont réservés à la partie édition de votre source. Les trois suivants (Program, Macros, Settings) sont dédiés au compilateur (options de compilation, exécution du programme, création d'un fichier objet, etc.).

HighSpeed Pascal

HighSpeed Pascal

L'éditeur propose toutes les options classiques d'un éditeur moderne : déplacement au curseur ou à la souris, ascenseurs, sélection d'un bloc en cliquant et même d'un mot, en double-cliquant. Les blocs sélectionnés sont envoyés dans le presse-papiers de l'Amiga, et pourront donc être récupérés dans un autre éditeur.

Plus rare, mais très utile, le mode "indentation automatique" qui rend votre source plus lisible. Autre option appréciable, "revers" vous permet de revenir à l'ancienne version de votre texte.

Vous avez la possibilité de placer des "marques" à certains endroits du source. Grâce à ces marques, il est facile de se déplacer aux endroits cruciaux de votre programme. On peut travailler sans problèmes sur plusieurs sources, car l'éditeur gère plusieurs fenêtres. Celles-ci peuvent être organisées automatiquement en cascade, en diagonale, horizontalement ou verticalement. Associées aux marques, elles facilitent le développement sur les gros projets. Enfin, cet éditeur est très rapide, notamment sur des fonctions de recherche ou de remplacement de chaîne, et ceci, même sur des sources longs. Tout au plus peut-on regretter une relative lenteur le défilement.

Le compilateur

Il se présente sous forme d'un fichier exécutable nommé HSPC (HighSpeed Pascal Compiler). Il sera la plupart du temps invoqué directement depuis l'éditeur, de façon totalement transparente, mais vous avez la possibilité de compiler directement un fichier source, sans passer par l'éditeur. La syntaxe est alors :

HSPC [options] source [options]

La caractéristique principale de ce compilateur est sa rapidité foudroyante ! Je n'ai personnellement jamais vu un compilateur aussi rapide sur Amiga : il compile, en une seule passe, 20 000 lignes/minutes avec un 68000 à 7,09 MHz ! Il est vrai que la plupart des compilateurs Pascal sont rapides... Lorsque le compilateur détecte une erreur dans le source, une fenêtre s'ouvre automatiquement, indiquant la nature de l'erreur. En même temps, une marque spéciale est placée dans le texte à l'endroit précis où se trouve l'erreur. Il est alors facile de la corriger et de recompiler. Malheureusement, il n'est pas possible de continuer la compilation à l'endroit où elle s'est arrêtée.

HighSpeed Pascal

Il existe une option "make" qui permet de ne recompiler que les dernières unités modifiées. L'option "Build all" recompile entièrement tout votre source. Outre la gestion des exceptions (division par zéro, erreur d'adresse...) le compilateur peut aussi incorporer à votre programme des routines de traitement d'erreur plus subtiles (run-time error handling). Il est ainsi possible de traiter les erreurs d'entrées-sorties, les dépassements de piles, les dépassements de variables. Les diverses options de compilation sont choisies à partir d'un panneau de contrôle accessible depuis l'éditeur.

HighSpeed Pascal

Lorsque le programme rencontre une erreur, un message explicite est affiché, indiquant la nature de l'erreur ainsi que la position ("offset") où elle s'est produite. Grâce à l'option "Find error" de l'éditeur, il est possible, en précisant cette position, de retrouver dans le source l'endroit exact où s'est produite cette erreur !

Le compilateur propose enfin d'incorporer à l'exécutable des informations sur les symboles de segment ("hunk symbols") et des informations utiles au débogueur ("hunk debug").

Le débogueur

Le débogueur inclus dans HighSpeed Pascal est la version 3.02+ du désormais célèbre MonAm. On ne présente plus cet outil, tant il est devenu indispensable pour développer sur Amiga. La version 3.02 permet, comme les précédentes, de faire du débogage "symbolique" sur des exécutables contenant des "hunks symbols". Les variables, fonctions et autres symboles du programme apparaissent clairement, facilitant la mise au point.

Mais cette dernière version permet également de tracer un source, pourvu que l'exécutable contienne des "hunks debug". On dispose alors de deux fenêtres : une contenant le texte source et une affichant le code machine correspondant. En traçant pas à pas, le source est automatiquement décalé, de façon à ce que la première instruction affichée corresponde à l'instruction assembleur en cours. Si votre programme comporte plusieurs unités, MonAm chargera automatiquement le fichier source approprié. Inutile de dire que ceci facilite grandement la mise au point des programmes !

MonAm propose évidemment toutes les fonctionnalités d'un débogueur évolué : points d'arrêts, gestion des exceptions 68000, points d'arrêts conditionnels, exécution immédiate d'un sous-programme, affichage des registres, de la mémoire, etc. On peut essentiellement reprocher deux choses à MonAm : il n'utilise pas de requêtes évoluées (du type ASL, ARP ou REQ) pour charger un fichier et il ne permet pas de détailler des structures en mémoire. Cela dit, il reste de loin le meilleur débogueur disponible sur Amiga.

Le Pascal lui-même

Si vous êtes étudiant en informatique, vous connaissez probablement le Pascal, qui est le langage très enseigné dans les Universités, notamment en premier cycle. Pour ceux qui ne connaissent pas encore le Pascal, sachez que c'est un langage qui a été inventé par un Français, tout comme ADA, dont il se rapproche beaucoup pour la syntaxe. C'est un langage très évolué du point de vue sémantique, et extrêmement clair du point de vue syntaxique (contrairement au C).

C'est aussi un langage fiable et très robuste, qui pardonne facilement les erreurs de programmation (contrairement au C...). Aussi est-il recommandé aux débutants qui veulent prendre de "bonnes habitudes de programmation", en évitant certains langages qui ont la fâcheuse tendance à admettre le "GOTO" comme structure de contrôle (vous voyez sans doute de quoi je veux parler...).

HighSpeed Pascal reprend entièrement la syntaxe et les concepts originels du Pascal, tout en introduisant quelques notions supplémentaires. Il est ainsi possible d'écrire une fonction en assembleur, ce qui peut être parfois très appréciable.

Autre notion très utilisée : les "unités de programmation". C'est un concept extrêmement puissant et, sans entrer dans les détails, en voici les grandes lignes. Lorsqu'on doit travailler sur de gros projets, on divise le texte source en plusieurs unités (Units). Une unité est un module indépendant, qui ressemble beaucoup au paquetage ADA. Elle contient une ou plusieurs fonctions ou procédures, généralement regroupées pour des raisons liées à la conception du programme.

Chaque unité est divisée en deux parties : une partie "interface" et une partie "implémentation". L'interface contient juste les déclarations des fonctions de l'unité qui sont accessibles depuis une autre unité ou depuis le programme principal. C'est la partie "publique" de l'unité. Cette partie est purement déclarative, et ne contient pas de ligne de programme. Elle correspond en gros à la déclaration du paquetage ADA.

Par contre, la partie implémentation contient le code source de toutes les fonctions de l'interface, ainsi que des éventuelles fonctions auxiliaires. Cette partie n'intéresse pas les "clients" de l'unité, qui ne sont pas sensés connaître l'implémentation des fonctions qu'ils utilisent. Aussi, cette partie est dite "privée", car elle est totalement inaccessible aux autres unités. Elle correspond au corps (BODY) du paquetage ADA. Cette manière de séparer un programme en petites unités s'appelle la programmation modulaire. Lorsque une unité fournit une interface à un client, tout en masquant ses propres données internes, on parle alors "d'encapsulation". L'encapsulation est typique des langages évolués de dernière génération (ADA, Modula 2...). Elle est aussi utilisée dans tous les langages orientés objets.

Mise à jour de mars 1993 : il faut noter que ce HighSpeed Pascal a un problème, l'impossibilité d'arrêter un programme lorsqu'on n'est pas dans une séquence d'entrée-sortie. Ceci peut donc s'avérer très gênant lorsque le programme se perd dans une boucle infinie. Ce problème ne m'était pas apparu lors de mon test car je n'ai testé que des programmes qui ont beaucoup d'entrées-sorties, et il ne m'est jamais arrivé qu'un programme boucle indéfiniment.

Et la vitesse ?

Vous me connaissez. je n'ai pas pu résister à l'envie d'aller voir de près le code que génère ce compilateur ! J'ai donc adapté en Pascal mon petit programme de test (voir cet article) afin de regarder d'un peu plus près la qualité du code obtenu après compilation. Le champion toute catégorie est pour l'instant incontestablement le SAS C 5.10, qui produit un code tellement optimisé que ça frise l'impertinence !

Le Pascal n'est pas réputé être un langage rapide. C'est plutôt un langage robuste qui pardonne les bêtises du programmeur. En contrepartie, il procède à certaines vérifications qui ralentissent l'exécution, je m'attendais donc à trouver un code machine assez mauvais du point de vue optimisation. Pourtant, j'ai été agréablement surpris ! Sans pouvoir rivaliser avec un bon compilateur C, ce brave HighSpeed Pascal produit quand même un code assez efficace. Son gros défaut est de ne pas utiliser les registres pour les variables locales, mais il se rattrape sur les boucles et les appels de fonctions.

Fibonacci

A ce sujet, j'ai procédé à un petit test consistant à évaluer la vitesse de calcul de la suite de Fibonacci. Un terme d'ordre "n" de cette suite est calculé en additionnant les deux termes précédents :

HighSpeed Pascal

Les premiers termes de cette suite sont donc 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Ce test est particulièrement révélateur de la vitesse d'appel des fonctions et de passage des paramètres, car le calcul s'effectue de façon doublement récursive. Le nombre d'appel à la fonction, et donc le temps d'exécution, augmentent de façon exponentielle avec l'ordre du terme calculé. Il est très facile de faire exploser votre machine (au sens figuré !) en s'amusant à calculer récursivement la suite de Fibonacci !

Je me suis livré à un rapide comparatif des vitesses de calcul de Fib(27) sur différents compilateurs. J'ai systématiquement utilisé toutes les options permettant d'améliorer le temps d'exécution, sans toutefois chercher à optimiser le source. Voici les résultats que j'ai obtenus sur un Amiga "de base" (68000 à 7,09 MHz) :
  • HighSpeed Pascal : 22 secondes.
  • SAS C 5.10 : 14 secondes.
  • GFA Basic : 1 minute 15 secondes.
Ces chiffres indiquent clairement que ce Pascal est très rapide, sans pour autant pouvoir rivaliser avec SAS C, qui reste le langage évolué le plus rapide du moment. Quant au GFA Basic, il confirme ici qu'il n'est vraiment pas doué pour les appels de fonctions (comme pour tout le reste, d'ailleurs...) !

Pour les sceptiques, je propose ici les trois textes sources que j'ai utilisés. Vous pourrez ainsi vérifier par vous-même les chiffres obtenus. Voici d'abord le listing correspondant au source en Pascal :

HighSpeed Pascal

Voici maintenant le listing correspondant au source en C :

HighSpeed Pascal

Voici pour finir le listing correspondant au source en GFA Basic :

HighSpeed Pascal

Concluons !

Ce HighSpeed Pascal est tout simplement remarquable ! Il est rapide, facile à utiliser et il compile très vite. Il s'adresse non seulement aux débutants, qui trouveront là un langage assez simple à apprendre, avec une syntaxe agréable, mais aussi aux développeurs qui préfèrent utiliser le Pascal plutôt qu'un autre langage.

La seule ombre au tableau me semble être la compatibilité avec Turbo Pascal : celle-ci n'est pas absolument parfaite, et j'ai rencontré pas mal de problèmes pour adapter des sources provenant de Turbo Pascal sur PC, notamment au niveau des entrées-sorties et des fonctions d'affichage. Même s'il existe toujours des problèmes d'adaptation lorsqu'on passe d'une machine à l'autre, HighSpeed Pascal n'est malheureusement pas compatible à 100% avec Turbo Pascal.

Cela dit, que ceci ne vous empêche pas d'investir dans ce produit : HighSpeed Pascal est de loin le meilleur Pascal disponible pour notre machine. HiSoft confirme qu'il domine actuellement les environnements de programmation sur Amiga, et nous attendons tous avec impatience une nouvelle version, totalement intégrée, du SAS C, dont HiSoft assure aussi la distribution.

Nom : HighSpeed Pascal 1.10.
Développeur : Keith Wilson.
Éditeur : HiSoft.
Genre : programmation.
Date : 1992.
Configuration minimale : Amiga OCS, 68000, 1 Mo de mémoire, deux lecteurs de disquette.
Licence : commercial.
Prix : 99 £.


[Retour en haut] / [Retour aux articles]