Compatibilité
Pascal est considérablement plus standardisé que BASIC. Presque toutes les versions de Pascal sont basées sur une définition du langage contenue dans le «Pascal User Manual and Report», par Kathleen Jenson et Niklaus Wirth, Springer-Verlag, 1974. Le Pascal Language System est un sur-ensemble du Pascal décrit dans cette section. De plus, ATARI Pascal répond à une norme plus récente, à savoir la norme ISO (International Standards Organization, similaire à ANSI). On s'attend à ce que tous les Pascal développés à partir de maintenant soient certainement comparés à cette norme et s'efforcent d'y répondre. ATARI a appris l'importance de la compatibilité grâce à son expérience avec ATARI BASIC. Un Pascal répondant à la nouvelle norme ISO est une étape très positive vers la compatibilité.
Un problème de compatibilité possible est que le ATARI Pascal Language System n'est pas entièrement compatible avec l'UCSD Pascal. L'UCSD Pascal a atteint une popularité considérable sur les petits ordinateurs. S'il est vrai qu'ATARI Pascal n'est pas totalement compatible avec UCSD Pascal, il convient de rappeler que les deux versions sont écrites autour d'un noyau commun -- Pascal tel que défini par Jenson et Wirth. Les différences, bien qu'elles soient présentes, ne sont pas aussi significatives que, par exemple, les différences entre les différents BASIC. De plus, la supériorité du Pascal Language System justifie les incompatibilités impliquées.
Une brève comparaison des fonctionnalités qui diffèrent entre les deux Pascal suit. Certaines parties de cette comparaison sont nécessairement quelque peu techniques, car la plupart des différences résident dans des détails linguistiques profonds.
Incompatibilités avec UCSD Pascal
- Le type prédéfini INTERACTIVE est uniquement disponible dans UCSD Pascal. Sur le micro-ordinateur ATARI, tout fichier associé à la console de l'ordinateur est automatiquement interactif, et donc ce type n'est pas nécessaire et ne ferait qu'encombrer inutilement le langage.
- La procédure prédéfinie SEEK est disponible uniquement dans UCSD Pascal.
- UCSD Pascal utilise UNIT pour implémenter la compilation modulaire. Ils sont faciles à comprendre, mais sont beaucoup plus restrictifs que l'implémentation de la compilation modulaire par ATARI Pascal.
- UCSD Pascal fournit des procédures SEGMENT pour permettre les recouvrements à partir de disquettes. ATARI Pascal utilisera les méthodes DOS standard pour appeler des recouvrements.
- Les ensembles peuvent être considérablement plus grands dans UCSD Pascal. L'implémentation ATARI Pascal est plus conforme à l'esprit du standard Jenson et Wirth.
- UCSD Pascal inclut le paquet au niveau bit sur les structures PACKED. Le paquet au niveau bit coûte à la fois en taille de l'interpréteur et en vitesse d'exécution du programme (en particulier sur une machine basée sur le microprocesseur 6502 ne contenant pas de multiplication et de division).
- UCSD Pascal a une construction EXIT nom de la procédure n'étant pas incluse dans ATARI Pascal, bien qu'ATARI Pascal autorise EXIT sans le nom de la procédure. De nombreux puristes de Pascal estiment que la construction telle qu'implémentée par l'UCSD n'est pas une construction structurée et est donc contraire à la philosophie du langage.
- UCSD Pascal inclut le type LONG INTEGER n'étant pas disponible dans ATARI Pascal.
- Plusieurs fonctionnalités d'UCSD Pascal dépendent du système d'exploitation, par exemple les noms de fichiers longs et les entrées/sorties d'unité (similaires à XIO). Ceux-ci n'ont pas été implémentés dans ATARI Pascal.
Fonctionnalités supplémentaires disponibles avec le système de langage ATARI Pascal
- Le système de langage de programmation ATARI Pascal est un Pascal standard ISO complet. Certaines des fonctionnalités ISO non incluses dans UCSD Pascal sont la gestion conforme des tableaux, les procédures et fonctions en tant que paramètres, les fichiers locaux, les procédures PACK et UNPACK, READ et WRITE pour les fichiers non texte, WRITE et WRITELN d'expressions booléennes et GOTO à partir d'un procédure dans une procédure environnante.
- Le pseudo code implémenté dans ATARI Pascal a été optimisé pour le microprocesseur 6502.
- ATARI Pascal utilise le même système d'exploitation que tous les autres programmes ATARI. Les fichiers ATARI Pascal et ATARI BASIC ont le même format et les fichiers de données peuvent être lus dans les deux langages de programmation. Vous n'avez pas l'inconvénient d'apprendre deux systèmes d'exploitation différents et incompatibles, comme vous le faites avec UCSD Pascal. De plus, ATARI Pascal permet l'accès aux entrées/sorties d'une manière très similaire à ATARI BASIC. XIO, les graphiques, le son, les contrôleurs de jeu et les périphériques nommés sont tous implémentés.
- Les procédures de segment UCSD sont limitées à six par programme, ce qui limite le développement d'applications volumineuses. ATARI Pascal devrait permettre le développement d'applications plus complexes.
- ATARI Pascal a neuf ou dix chiffres de précision sur les nombres réels. UCSD Pascal n'a que 6,5 chiffres de précision.
- ATARI Pascal permet au programmeur de détecter les erreurs et d'empêcher l'abandon des programmes.
- ATARI Pascal offre une protection lors de la lecture d'une chaîne de caractères. Si la chaîne de caractères est trop longue pour la variable réceptrice, ATARI Pascal tronquera la chaîne de caractères. UCSD Pascal écrasera les octets suivant la chaîne de caractères en mémoire, ce qui entraînera des erreurs de programme non définies.
- ATARI Pascal a étendu la déclaration CASE en ajoutant une clause ELSE. Si l'expression de sélection de cas n'entraîne pas l'exécution d'une instruction avec CASE, la clause ELSE est exécutée. ELSE simplifie la vérification des erreurs. L'exécution d'un CASE similaire sans correspondance dans UCSD Pascal provoque un résultat indéfini.
- La compilation modulaire est beaucoup plus flexible dans ATARI Pascal. Les variables statiques locales, les procédures et fonctions externes situées dans le programme principal et l'utilisation de variables globales externes sont toutes absentes de UCSD Pascal.
- ATARI Pascal a un type de données BYTE intégré. Ce type de données élimine l'utilisation d'enregistrements de variantes CASE déroutants lors de la manipulation de caractères sous forme d'entiers.
- ATARI Pascal a un type de données WORD intégré. Un type de données 16 bits non signé est très utile pour l'arithmétique des adresses et la programmation au niveau machine.
- UCSD Pascal n'implémente pas entièrement la compatibilité entre les chaînes de caractères et les caractères. Les chaînes de caractères et les caractères sont totalement compatibles dans ATARI Pascal.
- Pour les applications dépendantes du système, ATARI Pascal permet d'assouplir les règles de vérification de type. Cet assouplissement permet d'effectuer des manipulations d'entrées/sorties machine et de mémoire sans encombrer le programme avec des enregistrements de variantes CASE déroutants.
- ATARI Pascal possède les routines de manipulation de bits intégrées TSTBIT, SETBIT, CLRBIT, SHL et SHR. La manipulation des bits dans UCSD Pascal doit être effectuée avec des enregistrements de variantes CASE, prêtant à confusion et dépendent de la machine.
- Dans ATARI Pascal et UCSD Pascal, les entrées/sorties du fichier GET/PUT sont assez lentes. ATARI Pascal contient également GNB et WNB, étant des routines d'entrée/sortie à grande vitesse pour les entrées/sorties d'octets.
- ATARI Pascal met pleinement en oeuvre les procédures NEW et DISPOSE, y compris la gestion de la fragmentation et la réutilisation des zones éliminées. UCSD Pascal implémente une version beaucoup plus restreinte de ces procédures. Cette fonctionnalité est vitale pour tout programme effectuant une gestion dynamique des données.
- ATARI Pascal permet une utilisation complète des fichiers. UCSD Pascal n'autorise pas les fichiers locaux, les fichiers dans des enregistrements ou les tableaux de fichiers.
- ATARI Pascal inclut la fonction ADDR. Cela renvoie l'adresse d'une variable, d'une procédure ou d'une fonction. Cette fonction est utile lors de la programmation dépendante de la machine.
- ATARI Pascal possède une fonctionnalité INLINE intégrée pouvant être utilisée pour générer des données constantes au moment de la compilation. Cette fonctionnalité peut être utilisée pour générer des données constantes au moment de la compilation. Cette fonctionnalité élimine l'initialisation à l'exécution des tables constantes, augmentant ainsi la vitesse d'exécution et réduisant la taille du code.
- ATARI Pascal permet la sortie dans n'importe quelle base numérique de deux à seize.
- ATARI Pascal permet la saisie de nombres décimaux ou hexadécimaux.
- ATARI Pascal n'a étendu la liste des paramètres sur aucune routine standard ISO (en particulier RESET et REWRITE). Pour accéder aux fichiers externes, une nouvelle procédure (ASSIGN) a été ajoutée.