Site web mis en ligne en Mai 2021. Evolution permanente des nombreuses pages de ce site.
Pourquoi un site internet sur le langage Pascal ?
Le langage Pascal a été créé en 1970, il y a plus de 50 ans (base : 2021). Ses fondations sont issues du langage algol qui était un énorme pas en avant dans la programmation informatique, utilisant des concepts tels l'orthogonalité, la programmation parallèle, la surcharge d'opérateurs (avec l'opérateur + par exemple), la définition de nouveaux types. Le langage Pascal a été pendant longtemps le langage de programmation utilisé en France dans les facultés de sciences ou de maths, ou écoles préparatoires diverses (jusqu'au début des années 2000).Là où le langage C, créé en 1972, est un langage système avec des règles de programmation permissives et susceptibles de planter facilement si on ne maîtrise pas totalement le code, le langage Pascal permet de créer de grosses applications (notamment scientifiques), dans bons nombres de domaines. Le langage Pascal bénéficie d'une syntaxe claire, non permissive, tout en permettant une compilation optimisée pour les microprocesseurs (la boucle FOR, par exemple, définit une compilation automatique vers les instruction Assembleur DEC et INC - plus rapides - des microprocesseurs ce qui n'est pas le cas du même "for" du langage C)
Côté performance, une étude récente (2019) montre que le Pascal est encore classé parmi les 3 meilleurs langages par combinaisons de facteurs (aux côtés du C et du Go). Il est même le plus économique en espace mémoire nécessaire pour toute application. Il est bien meilleur que les langages de script en terme de performance (JavaScript, PHP ou encore pis, Python qui se révèle un des pires langages, en terme de compétitivité). Notons que ce classement n'inclut pas Julia, un nouveau langage de script très prometteur en performances (parfois supérieur au C)...
Vous trouverez ici, une page comparant le Pascal avec les langages les plus utilisés depuis 2000.
En Pascal, vous retrouvez les paradigmes de programmation impératif, objet, voire même fonctionnelle. Vous pouvez définir tout type de donnée simple (nombre et char), structurée (tableau à n dimensions, liste, enregistrements et objets) et définir vos propres types (c'est une des forces du Pascal). Vous pouvez même en faire un langage système à l'aide de routines assembleurs intégrées dans les procédures ou en appel d'unités externes! Il n'a rien à envier aux langages,tels que le C, Java, JavaScript ou Python :
- Pascal a été un des premiers langages à intégrer un pseudo code compilé, le P-Code, en 1977 avec l'UCSD Pascal, 18 ans avant le ByteCode Java!)
- Pascal intègre, en outre, la Programmation Objet
- Pascal permet la création de listes
- Il permet de créer des applications clientes ou serveurs pour internet, à condition d'avoir les API (Unités) adéquates
Ce site internet sera dédié au langage pascal général, sur support du compilateur Pure Pascal (compatible Turbo Pascal 7+) ET OU Alice Pascal (Compatible WatCom Pascal). La première partie de ce site web est la traduction de la documentation allemande d'Applications System Heidelberg dédiée à Pure Pascal (Lexique et Unités). Une deuxième partie sera consacrée aux tutoriels avec des choses surprenantes en Pascal. La troisième partie sera dédiée aux algorithmes personnels que j'ai développés en Pascal.
Pure Pascal (et consort) sur Atari ST, TT, Falcon 030 et FireBee
Il existe 3 compilateurs sur les systèmes Atari ST sous environnement TOS (ce qui est beaucoup pour un système non PC!) :- Alice Pascal (compatible "WatCom Pascal, respectant la norme ANSI/IEEE 777X3.97-1983 standard Pascal)
- HiSpeed Pascal (Parfois nommé injustement Maxon, compatible Turbo Pascal 5.5)
- Pure Pascal (compatible Turbo Pascal 7+)
Alice Pascal est disponible en freeware avec un EDI complet et des outils graphiques pour créer des applications. Ce compilateur est parfaitement compatible avec WatCom dit Waterloo Pascal. Cela signifie qu'il respecte parfaitement la norme ANSI/IEEE 777X3.97-1983 standard Pascal tout en apportant des extensions présentes dans Waterloo Pascal :
- Extension sur les chaines avec de multiples fonctions et procédures, et un codage particulier et cohérent des constantes chaines
- L'extension de processus multiples simultanés permet la simulation de multitraitements directement en Pascal. L'extension utilise une abstraction de passage de messages (utilisant Start, Send, Receive et Reply) similaire à celle utilisée dans plusieurs systèmes d'exploitation en temps réel.
- Les procédures standard RESET et REWRITE sont étendues pour permettre la spécification d'un nom de fichier dépendant du système (exemple : noms de fichiers longs).
- Il existe de nombreuses extensions mineures du langage Pascal, notamment : des extensions du jeu de caractères pour s'adapter aux systèmes sur lesquels le jeu de caractères peut ne pas contenir tous les caractères requis ; fonctions et procédures standard supplémentaires à usage général telles que arcsin, arccos, arctan2, tan, RtoS ("Real to String") et StoR ("String to Real"); et les procédures de débogage non interactives TraceOn et TraceOff (Ces fonctions ne sont pas présentes dans Turbo Pascal 7/Pure Pascal mais le sont dans Free Pascal!).
Pure Pascal est le compilateur Pascal le plus abouti sur les Atari ST, TT, Falcon et le Firebee (Le tout nouvel ordinateur Atari sorti en 2014, avec une puissance de 400 MIPS). Pure Pascal 1.1.1 (31/07/1995), la toute dernière version, est entièrement compatible avec Turbo Pascal 7+ (la dernière version sortie de Borland) ainsi qu'avec le Pascal Objet (Apparu avec Turbo Pascal 5.5).
Pure Pascal a quelques légères différences avec Turbo Pascal 7+, essentiellement liés aux différences de gestion de RAM entre les 2 plate-formes (Atari ST et PC Intel) : des fonctions existant sur PC du fait de cette architecture, sont absentes (ou plutôt inactives) en Pure Pascal. De même Pure Pascal inclut des fonctions pour lui permettre d'être complètement compatible (à part pour les types objets et l'Unité Strings) avec HiSpeed Pascal sur'Atari ST.
Vous pouvez télécharger Pure Pascal 1.1, datant d'Août 1992, sur cette page. Quand à Pure Pascal (1.1.1) Ici en format zip décompactable sur disque dur : L'ajout principal de cette version comparée à la version 1.1, est l'Unité Strings, notamment le Type Pchar (ce type apparu aussi avec TP7+), permettant de manipuler des chaines de caractères de type Langage C (dépassant ainsi les 255 caractères).
Pure Pascal intègre les unités classiques System, GRAPH et CRT qu'on retrouve dans Pascal Borland, mais également les unités propres au systèmes Atari TOS (TOS, GEM etc).
Les documentations d'Application Système Heidelberg, fournies pour Pure Pascal (allemand) sont traduites en français et disponibles dans ce site internet (Pages Lexique et Unités) .
Pourquoi adopter pascal ?
Pascal est un langage qui peut être soit compilé, soit utilisé en P-Code (code natif) initié par UCSD en 1977 (18 ans avant Java). Voici une liste non exhaustive de tout ce que fait Pascal :- Principes de programmation solide et synthaxe intuitive (pas de différence de casses dans les noms de variables, fonctions/procédures ou instructions)
- Langage fortement orthogonal : utilisation des fonctions et procédures
- Surcharge des opérateurs : les opérateurs (+,-,*,/, et comparaisons) peuvent servir pour différents types de données (nombres chaines, ensembles) ce qui n'est pas le cas du C
- Polymorphisme : le langage Pascal applique la même et unique instruction ou fonction pour un même traitement quelle que soit le type de données (exemple : write, read, length...). En temps que langage orthogonal, tout traitement sur une ressource ne modifie en rien les autres ressources (c'est ce que permet les fonctions, procédures et unités). Contrairement au Pascal, le langage C n'est pas orthogonal puisqu'il peut utiliser plusieurs noms de fonction pour la même utilisation : par exemple, pour l'écriture sur l'écran, ou la saisie de données, il y a plusieurs fonctions en C (putc, putl etc)
- Structure de données hiérarchiques (type Enregistrement) permettant un "héritage" de types ET de fonctions (Pointeur de fonctions)
- Paradigme Impératif/Procédural, Objet, Fonctionnel
- Types "enregistrement", pointeurs et pointeurs de fonctions/procédures (Comme en C), permettant une programmation Objet sans les classes.
- Compilateurs les plus rapides au monde (devançant le langage C) : compilation de 20.000 lignes/mn sur Atari ST (microprocesseur à 8 MHz!) avec HighSPeed Pascal (soit plus de 300 lignes par seconde) et donné à 1000 lignes par seconde pour Pure Pascal sous Atari Falcon (processeur 68030 à 16 MHz). Sur cet hyperlien, on apprend que Delphi est le compilateur le plus rapide au monde.
- Programmation structurée avec séparation des typages (déclaration de type, constante et variable) du programme
- Types uniques dans les langages de programmation : Énuméré, Sous-plage (sous ensemble d'entiers) et surtout Ensemble permettant d'informatiser la théorie des ensembles (mais limité à 256 éléments par ensemble, soit 32 octets)... Aucun de ces types n'existe en C, Java ou C++
- Les index des tableaux ne sont pas limités aux seules type entiers mais à tout type "ordinal" (les caractères notamment)
- Unité System (Pure Pascal et Turbo Pascal) assez conséquente et intégrée (pas besoin de l'appeler) : aucune librairie système intégrée "de fait" n'existe en C
- Unité Graphe standard n'ayant aucun équivalent en C (pour manipuler en standard le graphisme) et compatible avec tous les modes vidéos, cartes graphique et pilote existants)
- Les types des variables simples (scalaire) peuvent être changées à la volée (Cast), comme en C
- 2 types de chaines de caractères : Type pascal (Tableaux de 255 caractères max)) et C (se terminant par NIL) seulement avec Pure Pascal 1.1.1 et Turbo Pascal 7+
- Nombreux types d'entiers et réels
- Type enregistrement avec Variante permettant le polymorphisme (n'existe pas en C)
- Instruction For pour des entiers uniquement (optimisation de la vitesse d'exécution n'utilisant que les instruction assembleur INC et DEC)
- Type booléen existant depuis les premières versions de Pascal, alors que le C ne l'a intégré que très tardivement, à la fin des années 1990
- Instruction conditionnelles If then else, et Case, instruction de boucles For, Repeat et While
- Instruction "with" permettant de réduire le texte de code pour une variable de type record
- Notion de tas
- Unités standard (DOS, CRT, System) répondant à tous les besoins en programmation
- Compilateurs existant pour de nombreux standards de l'informatique (tous les ordinateurs 8 bits, les Atari ST/Amiga, Macintosh, Lisa, Archimedes, RiscPC...)
- Code largement portable d'une plateforme à l'autre grâce aux librairies standards notamment
- Pascal a été le langage de programmation utilisé dans les grandes écoles et facultés de science des années 80 aux début des années 2000, remplacé par Python, R ou Julia
- Possibilité de créer des modules en Langage Machine (à adapter sur chaque standard)
De nombreux logiciels, que ça soit sur PC (Delphi) ou d'autres plateformes, notamment sur Atari ST avec l'excellent Tableur Texel, ont été développés en Pascal. Pascal peut servir à toutes les utilisations : langages systèmes logiciels, et même serveur Web! Vous trouverez ici une liste assez conséquente de logiciels ou applications développés avec Lazarus/Free Pascal.
Liste de compilateurs Pascal pour ordinateurs 8 bits, 16 bits et 32 bits
- Amstrad CPC : Turbo Pascal 3 (2013)
- Apple II, II et Lisa : Apple Pascal (1979) (basé sur une machine virtuelle comme l'UCSD); Kyan Pascal, Lazer Pascal, Lisa Pascal...
- Atari ST et compatibles : Alice Pascal, High Speed Pascal, Pure Pascal (compatible TP 7+ et Pascal Objet)
- Atari XL : Atari Pascal (1982) (basé sur une machine virtuelle comme l'UCSD mais 7 fois plus rapide!); Kyan Pascal
- BBC Micro (Accorn) : ISO Pascal (2x16 kO), S-Pascal
- Commodore 64 : Oxford Pascal 2.1 (1984), Pascal 64 3.2 (1984), Super Pascal 5.3 (1985), G-Pascal 3.1 (1983), UCSD Pascal 1.3 (1983), Kyan Pascal.
- Thomson MO et TO : Pascal Base (Pascal compilé (donnant du code 10 fois plus rapide que le Basic) mais typage limité aux entiers et tableaux d'entier), Pascal UCSD (utilisant son propre Système DOS). Les 2 sont dispo sur le site de DC MOTO