Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Pascal (langage)

Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voirPascal.

Pascal
Date de première version1970
Paradigmegénérique,orientée objet,structurée,impératif
AuteurNiklaus Wirth
Dernière versionISO/IEC 10206:1991 Stage: 90.93 (29 июля 2008 года)Voir et modifier les données sur Wikidata
Typagestatique,fort,nominatif
DialectesISO Pascal, UCSD Pascal,Turbo Pascal, Apple Pascal,Delphi,Free Pascal
Influencé parAlgol,Fortran
A influencéAda,Modula-2,Modula-3,Oberon
ImplémentationsCDC 6000,PASCAL-P,PDP-11,PDP-10,IBM System/370,HP,GNU Pascal,Delphi,Free Pascal,Lazarus
Extension de fichierpp, p et pasVoir et modifier les données sur Wikidata
modifier 

Pascal est unlangage de programmationimpératif conçu pour l'enseignement. Il se caractérise par une syntaxe claire, rigoureuse et facilitant la structuration des programmes[1].

En dehors de la syntaxe et de sa rigueur, le langage Pascal possède des points communs avec leC (voir lespointeurs), leJava (le PCode de 1977 avec UCSD Pascal) et leC++ (orienté objet). Le langage Pascal de base était conçu à usage purement éducatif et était assez limité. Par exemple, leschaînes de caractères, absentes du langage d'origine, ont rapidement été intégrées[2],[3].

Les développements qu'il a connus par la suite en ont fait un langage complet et efficace. Plus récemment, lagénéricité a été ajoutée dansDelphi 2009[4] et dansFree Pascal depuis la version 2.2[5],[6].

Lesystème d'exploitationDomain/OS (en) des ordinateursApollo[7], ainsi qu'une partie du système duMacintosh ont été écrits en Pascal. La première version d'Adobe Photoshop également[8]. LecompilateurGCC a été développé parRichard Stallman à partir d'un compilateur duLLNL, qui était écrit en langage Pastel, une extension du langage Pascal[9].

La syntaxe du langage a été adaptée à d'autres langages commeAda,Modula-2 (puisModula-3) ouOberon.

Présentation et histoire

[modifier |modifier le code]
Niklaus Wirth, créateur du langage de programmation "Pascal" , lors de sa visite de la Ural State University

Lelangage de programmation Pascal (dont le nom vient du mathématicien françaisBlaise Pascal[10]) a été inventé parNiklaus Wirth dans les années 1970 avec l'aide d'un de ses étudiants, Urs Amman. Il a été conçu pour servir à l'enseignement de la programmation de manière rigoureuse mais simple, en réaction à la complexité d'Algol 68. Le premier compilateur a été conçu sur unCDC 6400[1],[11].

Le compilateur UCSD Pascal, de l'université de Californie à San Diego, eut beaucoup de succès, notamment sur des machines comme l'Apple II qui furent très diffusées[12].

Des compilateurs ont été produits pour divers ordinateurs, notamment des fabricantsSun[13],HP[14],SGI[15],CDC[16],IBM[17],Unisys[18],Texas Instruments[19].

Le Pascal a fait l'objet des normes ISO 7185 (1983)[20] et ISO 10206 (1990)[21].

Les fichiers sources

[modifier |modifier le code]

Avant l'apparition des bibliothèques, Turbo Pascal permettait d'utiliser desOverlay (en), technique habituelle sousDOS pour les programmes de grande taille[22].

Le Turbo Pascal

[modifier |modifier le code]
Un exemple de code Pascal en cours d'édition dans l'IDE Turbo Pascal 7.0.

Le logicielTurbo Pascal a été écrit parAnders Hejlsberg[23],[24] : il s'est appelé auparavant Compass Pascal, puis Poly Pascal. Très compact (12 kilooctets) et très rapide car travaillant essentiellement enmémoire vive, il compilait en une passe et produisait du code machinex86 sousDOS et non pas dubytecode. Il était livré avec un environnement complet (un éditeur de texte et une aide en ligne, innovation à l'époque, particulièrement compacte grâce à un système desubstitution).

Un exemple de code :Hello World

[modifier |modifier le code]
programHelloWorld(output);beginwriteln('Hello World');readln;end.

Compilateurs

[modifier |modifier le code]

Parmi les compilateurs encore utilisés aujourd'hui (2013), on peut citer :

  • Free Pascal avec son compilateur fpc et souvent avec l'environnement de développement libre RADLazarus, vise à la meilleure compatibilité possible avec Delphi et Turbo Pascal. Il existe sur plusieurs plateformes, facilitant le portage d'un programme d'un environnement à un autre.
  • Delphi, compilateur et environnement de développement « RAD » commercial. Les versions récentes de Delphi fonctionnent surWindows etMacOS X. Au début des années 2000, Borland a tenté pourLinux,Kylix, qui n'a pas eu le succès escompté. Kylix utilisait laCLX, framework ressemblant à laVCL, mais utilisable sur les deux systèmes d'exploitation. Dans Delphi XE2,Embarcadero a introduit le même principe de compatibilité entre systèmes, avecFireMonkey (en)
  • GNU Pascal, dont le but est la compatibilité avec la norme ISO : il implémente complètement l'ISO 7185, et en grande partie l'ISO 10206. Son développement n'est plus actif depuis 2006.

Critique du langage

[modifier |modifier le code]

En 1981,Brian Kernighan etPhillip J. Plauger (en) publient le livreSoftware Tools in Pascal, réédition de leur ouvrage précédent,Software Tools, publié en 1976, et qui employait le langageRational Fortran (en). Le but était de fournir, en langage Pascal, des programmes complets et utiles[25], bien documentés, et montrant comment écrire de « bons » programmes.

Niklaus Wirth avait publié en 1979 une collection de programmes visant un objectif similaire[26]. LesSoftware Tools étaient écrits dans le langage défini par l'ouvrage de Kathleen Jensen et Niklaus Wirth,Pascal User Manual and Report de 1978, et par la proposition de standard ISO.La même année, Brian Kernighan publia l'articleWhy Pascal is not my Favourite Language[27], dans lequel il dénonçait les défauts qu'il voyait dans le langage, et qui selon lui empêchaient de l'utiliser pour de la « programmation sérieuse ». L'article partait de son expérience avec l'ouvrage précédent, et de la comparaison qu'il avait pu faire avec leC, dont il assurait par ailleurs la promotion - le livreThe C Programming Language, coécrit avecDennis Ritchie, était sorti en 1978[28].

Parmi les aspects contestés dans cet article, l'un d'eux rendait la programmation en Pascal particulièrement compliquée : le typage des tableaux, et par voie de conséquence, le typage deschaînes de caractères également. En effet, les dimensions des tableaux font partie du type, en Pascal, ce qui empêche de passer à une fonction des tableaux de taille variable (ou des chaînes de taille variable). Contourner le problème oblige soit à écrire de multiples versions des fonctions qui prennent des tableaux en paramètres, soit à utiliser un type tableau de la taille maximum estimée. Cette dernière « astuce » était fréquemment utilisée dans ce langage ; c'est ainsi que les programmes desNumerical Recipes in Pascal y font systématiquement appel.

Cet inconvénient, toujours présent dans la version définitive du langage ISO 7185 de 1983, était bien connu dans le milieu de l'analyse numérique. Ainsi, lors de laConference on the Programming Environment for Development of Numerical Software[29], organisée en 1978 par leJet Propulsion Laboratory et l'ACM SIGNUM[30], une des présentations[31] montrait l'utilisation possible du Pascal en analyse numérique, et pointait ce problème de passage de tableau, en proposant une syntaxe alternative destinée à être intégrée à une version ultérieure du standard. De fait, elle sera ajoutée en 1990 à l'ISO 10206Extended Pascal. Ce dernier permet, via lesschémas, de créer des types structurés de taille dynamique. De même en Extended Pascal, tous les types chaînes de caractères sont compatibles entre eux[32].

Évolution de Pascal

[modifier |modifier le code]

Delphi et Free Pascal fournissent le typeAnsiString[33], dont la dimension n'est pas limitée, et plus important pour ce qui nous préoccupe ici, ne fait pas partie du type. En réalité, ces chaînes sont des pointeurs dont la gestion est faite de façon transparente pour l'utilisateur.

Descendance et Parenté

[modifier |modifier le code]

Au-delà des variations commerciales, un certain nombre d'utilisateurs Pascal soucieux de fiabilité sont passés soit au langagePortal, soit au langageModula 2 et ses descendants, soit aux langages apparentés commeAda 83, ou enfin aux langages objets commeSimula,Modula 3,Oberon ouAda 95.

Pascal dans l'enseignement

[modifier |modifier le code]

En France

[modifier |modifier le code]

L'enseignement de l'informatique enclasses préparatoires n'est introduit qu'en 1987, basé sur Pascal (plus précisément Turbo Pascal). Une bibliothèque (« MODULOG »), développée par l'ALESUP[34] et l'IREM deMarseille, était également mise à disposition des lycées[35],[36],[37].

Avec la réforme de 1995, l'enseignement de l'informatique en prépa scientifique est séparé en un tronc commun, basé sur un logiciel de calcul formel, et une matière optionnelle enMPSI etMP basée, au choix, sur Pascal ouCaml. Le succès de ce dernier est tel qu'au « stage de Luminy » en 1997, seulement trois participants choisissent le Pascal[38].

Les prépasBCPST ont suivi un chemin similaire : le Pascal est introduit au programme en 1987, puis retiré au début des années 2000, au profit deMATLAB etScilab. Le Pascal n'est plus proposé aux concours à partir de 2004[39].

Annexes

[modifier |modifier le code]

Sur les autres projets Wikimedia :

Articles connexes

[modifier |modifier le code]

Bibliographie

[modifier |modifier le code]

Notes et références

[modifier |modifier le code]
  1. a etbSummary of projects by N. Wirth, 1962 - 1999
  2. The Programming Language Pascal (Revised Report), Niklaus Wirth, ETH Zurich, 1973
  3. (en)An Axiomatic Definition of the Programming Language Pascal[PDF], C. A. R. Hoare, Niklaus Wirth, ETH Zurich, 1972.
  4. Delphi 2009 Reviewers Guide.
  5. Generics - Free Pascal wiki
  6. Generics dans le manuel de référence de Free Pascal.
  7. Documentation des ordinateurs Apollo
  8. Computer History Museum - Adobe Photoshop Source Code.
  9. A Brief History of GCC.
  10. André Loranger,Dictionnaire biographique et historique de la micro-informatique,(ISBN 2-89544-006-9),p. 141
  11. The CDC 6000 Series Computer
  12. Documentation pour la programmation de l'Apple II GS
  13. Documentation du Pascal de Sun
  14. Documentation du Pascal pour OpenVMS (voir aussiici)
  15. Documentation du Pascal de SGI« Copie archivée »(version du surInternet Archive)
  16. Documentation du Pascal sur CDC Cyber
  17. Documentation du Pascal pour IBM 370
  18. Documentation de Pascal-83 pour serveurs ClearPath d'Unisys
  19. Documentation du Pascal pour TI-990
  20. ISO 7185 sur le site de Karl Kleine
  21. ISO 10206 sur le site de Karl Kleine
  22. Use of the Overlay Technique in MS-DOS to Circumvent the 640K Conventional Memory Barrier, Andrew C. Vogan, Cours CS 450, Automne 2002, université James Madison
  23. Memories of Turbo Pascal version 1.0 - Anders Hejlsberg, United States, sur le blog deDavid Intersimone
  24. Anders Hejlsberg, Microsoft Technical Community Network - Awards and Recognitions
  25. Programmes du livreSoftware Tools de Kernighan et Plauger
  26. A collection of Pascal Programs, Niklaus Wirth, ETH Zurich, 1979
  27. Why Pascal is not my Favourite Language« Copie archivée »(version du surInternet Archive)
  28. On peut considérerModula comme une réponse au moins partielle à ces critiques.
  29. Proceedings, Conference on the Programming Environment for Development of Numerical Software, 1978 (voir aussiici)
  30. ACMSpecial Interest Group on Numerical Mathematics
  31. Présentation de Dennis Volper, membre de l'équipe développant le Pascal UCSD - p. 64 des Proceedings
  32. John Reagan,Pascal Standards FAQ
  33. Free Pascal Reference Guide, section 3.2.4 - Ansistrings
  34. ALESUP : Atelier logiciel de l'enseignement supérieur -Centre international de rencontres mathématiques (CIRM)
  35. Jean-Louis Maltret et Robert Rolland,Mathématiques Algorithmique et InformatiqueEllipses, 1994(ISBN 2-7298-9410-1)
  36. Patrick Cousot,Introduction à l'algorithmique numérique et à la programmation en Pascal, cours et exercices,McGraw-Hill, 1987(ISBN 2-7042-1173-6)
  37. Bruno Petazzoni,L'informatique dans les classes préparatoires aux grandes écoles, Revue de l'EPI (Enseignement Public et Informatique), n°101 (2001)
  38. Denis MonassePoint sur le programme de l'option informatique en classe MPSI (première année), compte rendu du débat de Luminy (1997)
  39. Pierre Dieumegard,Comment appliquer l'algorithmique aux sciences expérimentales à partir de logiciels de mathématiques ? Quelques problèmes posés par le programme officiel de classe préparatoire BCPST

Liens externes

[modifier |modifier le code]

Banques de données, dictionnaires et encyclopédies

[modifier |modifier le code]

v ·m
Concurrents
Déclaratifs
Fonctionnels
Impératifs
Orientés objet
v ·m
NormesISO
Logo de l’Organisation internationale de normalisation
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Pascal_(langage)&oldid=231840497 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2026 Movatter.jp