IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Publié pour la première fois en 1970 le langage de programmation Pascal fête ses 50 ans,
Retour sur quelques détails clés de la vie du langage

Le , par Bill Fassinou

112PARTAGES

18  0 
De 1960 à aujourd'hui, le monde informatique a énormément évolué, de la conception des ordinateurs à l'avènement d'Internet, en passant par les langages de programmation. Au fil des ans, ces derniers sont devenus davantage concis, plus performants et plus sûrs, avec plusieurs paradigmes de programmation. Pascal, né pendant les premières années de la programmation structurée, fête aujourd'hui ses 50 ans. Utilisé dans le développement logiciel, Pascal est surtout très présent dans l'enseignement. Alors, que vaut-il aujourd'hui face à une concurrence plus sûre et plus performante ?

Pascal : comment le langage de programmation est-il né ?

Pascal est un langage de programmation publié pour la première fois en 1970. Son auteur, Niklaus Wirth, s'est inspiré de ses travaux précédents sur l'Algol W dont il n'était pas totalement satisfait. En effet, à la fin des années 1950, les langages Fortran (FORmula TRANslator) pour les applications scientifiques et Cobol (COmmon Business Oriented Language) pour les applications commerciales dominaient. En 1960, un comité international a publié le langage Algol 60. C'était la première fois qu'un langage était défini par des constructions formulées de manière concise et par une syntaxe précise et formelle.


Niklaus Wirth, inventeur du langage de programmation Pascal

Environ deux ans plus tard, ses pères ont décidé d'apporter quelques corrections et améliorations au langage, car Algol 60 n'était destiné qu'au calcul scientifique. Un groupe de travail a donc été formé pour ce projet. Toutefois, tout le monde n'était pas d'accord sur les nouvelles spécifications à ajouter au jeune langage, ce qui a donné naissance à deux factions au sein de la communauté. L'une d'entre elles visait un second langage avec des concepts radicalement nouveaux, non éprouvés et avec une flexibilité omniprésente. Wirth ne faisait pas partie de ce sous-groupe dont la proposition fut acceptée et donna naissance plus tard à l'Algol 68.

Il a quitté le groupe vers 1966 et s'est consacré, avec quelques étudiants en doctorat de l'université de Stanford, à la construction d'un compilateur pour la proposition qu'il avait faite. Le résultat a été le langage Algol W en 1967. Il a déclaré que l'Algol W était utilisé sur de nombreux gros ordinateurs IBM. Wirth raconte qu'Algol W a connu un grand succès comparativement à l'Algol 68. « Le jalon Algol 68 est apparu, puis a rapidement sombré dans l'obscurité sous son propre poids, bien que certains de ses concepts aient survécu dans les langages suivants », a-t-il déclaré.

Cependant, Algol W n'était pas parfait à son goût, car il contiendrait encore trop de compromis, étant donné qu'il était issu d'une commission. Wirth entreprit alors de nouveaux travaux et parvint à développer un tout nouveau langage en fonction de ses propres préférences qu'il appelle Pascal. Dans un mémo sur le site de l'ACM (Association for Computing Machinery), une association internationale à but non lucratif vouée à l'informatique, il a déclaré que ce travail lui a réservé beaucoup de surprises et que ses collaborateurs et lui ont vécu une expérience désastreuse pendant le développement.

Ils voulaient décrire le compilateur en Pascal lui-même, le traduire manuellement en Fortran, et enfin compiler le premier avec le second. Wirth a déclaré que cela fut un grand échec, notamment en raison de l'absence de structures de données en Fortran, ce qui a rendu la traduction très lourde. Toutefois, un second essai lui a réussi, où au lieu du Fortran, le langage Scallop a été utilisé. Notons que Wirth fut professeur-assistant à l'université de Stanford de 1963 à 1967, puis à l'université de Zurich. Il devient ensuite professeur d'informatique à l'EPFZ (École polytechnique fédérale de Zurich), avant de prendre sa retraite en avril 1999.

Pascal : un langage conçu pour être facile à enseigner

Wirth a déclaré que, comme son précurseur Algol 60, Pascal comportait une définition précise et quelques éléments de base lucides. Les instructions décrivaient les affectations de valeurs aux variables et les exécutions conditionnelles et répétées. En outre, il y avait des procédures, et elles étaient récursives. Selon l'auteur, les types et les structures de données constituaient une extension importante et ses types de données élémentaires étaient les nombres entiers et réels, les valeurs booléennes, les caractères et les énumérations (de constantes).



Les structures étaient des tableaux, des enregistrements, des fichiers (séquences) et des pointeurs. Les procédures comprenaient deux types de paramètres : les paramètres de valeur et les paramètres variables. Les procédures pouvaient être utilisées de manière récursive. Selon lui, le plus essentiel était le concept omniprésent de type de données. Chaque constante, variable ou fonction était de type fixe et statique. Les programmes comprenaient donc beaucoup de redondance qu'un compilateur pouvait utiliser pour vérifier la cohérence des types de données. Cela contribuait à la détection des erreurs, et ce avant l'exécution du programme.

Cependant, Wirth a déclaré qu'en voulant écrire Pascal, il a tenu compte du fait que les suppressions étaient tout aussi importantes que l'ajout de fonctions. Autrement dit, selon lui, un langage se caractérise non seulement par ce qu'il permet aux programmeurs de spécifier, mais plus encore par ce qu'il ne permet pas. Alors, dans Pascal, il a omis le paramètre de nom d'Algol. Il serait rarement utilisé, et causerait des complications considérables pour un compilateur. Il a également supprimé le concept propre d'Algol et la déclaration d'Algol a été radicalement simplifiée.

Wirth a déclaré que ce dernier point a permis d'éliminer les constructions complexes et difficiles à comprendre. Toutefois, les déclarations "while" et "repeat" ont été ajoutées pour des situations de répétition simples et transparentes. Néanmoins, la déclaration "goto" controversée est restée. « J'ai estimé qu'il était trop tôt pour que la communauté des programmeurs avale son absence. Cela aurait été trop préjudiciable pour une acceptation générale de Pascal », a-t-il déclaré par rapport à ce choix. En gros, il a conçu Pascal pour qu'il soit facile à enseigner, simple, clair et efficace. Au plan didactique, Pascal privilégie l'analyse.

En ce qui concerne la clarté, Pascal se caractérise par une syntaxe rigoureuse facilitant la structuration des programmes. Notons que la programmation structurée dérive de travaux de Wirth pour son Algol W. Enfin, Pascal se veut efficace, car il privilégie les mécanismes statiques. « Pascal se fit remarquer dans plusieurs universités, et l'intérêt pour son utilisation dans les classes augmenta », a déclaré Wirth.

Les successeurs de Pascal et les nouveaux langages

Dans son mémo, Wirth a déclaré qu'après la publication de Pascal, qu'il a trouvé convivial et très utile, le temps ne s'est pas arrêté pour autant. Les ordinateurs sont rapidement devenus plus rapides, et donc les demandes sur les applications ont augmenté, ainsi que celles sur les programmeurs. Un logiciel n'était plus développé par une seule personne, les programmes étaient maintenant écrits par des équipes. Une seule personne pourrait concevoir une partie d'un système, appelée module, mais pas tout le système.

Elle le fait relativement indépendamment des autres modules. Les modules seraient plus tard liés et chargés automatiquement. Selon Wirth, Fortran avait déjà offert cette fonctionnalité, mais désormais un éditeur de liens devrait également vérifier la cohérence des types de données. « Ce n'était pas une question simple », a-t-il déclaré. Par la suite, il a publié le premier successeur de Pascal appelé Modula, puis le second appelé Modula-2 en 1977. Ce dernier s'est concentré sur les modules permettant la vérification de la cohérence des types de données. Modula-2 a été créé à partir de Pascal, mais aussi de Mesa.

Mesa est un langage développé par PARC (Palo Alto Research Center), un centre de recherches en informatique situé à Palo Alto en Californie, pour la programmation système. Avec l'aide de Jürg Gutknecht, il créa ensuite le langage Oberon entre 1985 et 1987 et le publia en 1988. Wirth a déclaré qu'il a créé Oberon, car Modula-2 était devenu trop complexe et trop compliqué, en particulier pour l'enseignement de la programmation. Avec la sortie d'Oberon, plusieurs propriétés ont été éliminées, l'extension de type fut introduite et sa syntaxe ressemblait au Pascal original. Selon son auteur, même si Oberon est encore utilisé dans de nombreux systèmes au aujourd'hui, il n'a pas connu le même succès que Pascal.

Toutefois, il a ajouté que de nombreux langages apparus plus tard, comme Java (Sun Microsystems) et C# (Microsoft), ont été fortement influencés par Oberon ou Pascal. Enfin, en 1995, Wirth a développé le langage Lola pour la description synchrone des circuits numériques. Plus précisément, il a conçu le langage pour enseigner la conception numérique sur des réseaux de portes programmables (FPGA - Field-programmable gate) à des étudiants en informatique alors qu'il était professeur à l'ETH Zurich. Pascal a maintenant 50 ans et semble être désormais réservé uniquement aux systèmes hérités.

Il serait également encore présent dans certains systèmes éducatifs. Cependant, selon certains, Pascal conserve aujourd'hui une niche sur le marché à travers Delphi, un langage basé sur Pascal, Free Pascal, un compilateur pour le langage Pascal, et Lazarus, un EDI multiplateforme basé sur Free Pascal. Selon eux, de nombreux logiciels gratuits, partagés, open source et commerciaux à petite échelle sont encore écrits en Pascal/Delphi. Mais, malgré cela, les index, comme Tiobe, montrent que Delphi, ainsi qu'Object Pascal, un langage orienté objet dérivé du Pascal, sont en perte de vitesse.

Source : Niklaus Wirth

Et vous ?

Quel est votre avis sur le sujet ?
Le langage Pascal sera-t-il là encore pour longtemps ?
Pensez-vous que Pascal est mieux pour l'enseignement et devrait se consacrer uniquement à cela ?

Voir aussi

Le langage de programmation Cobol fête ses 60 ans. Peut-il encore tenir longtemps face à la concurrence des nouveaux langages ?

Classements TIOBE et PYPL : Python gagne en popularité, mais Java demeure le leader incontestable

Embarcadero annonce la sortie de Delphi, C++ Builder et RAD Studio 10.4.2, qui apportent des fonctionnalités permettant aux développeurs d'améliorer leurs activités courantes dans l'EDI

Python et C++ sont les langages qui ont connu la plus forte croissance de popularité sur l'année 2020, selon les statistiques de l'index TIOBE

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de emilie77
Membre éclairé https://www.developpez.com
Le 25/02/2021 à 14:33
Merci Niklaus Wirth!
6  0 
Avatar de gbegreg
Membre expert https://www.developpez.com
Le 25/02/2021 à 15:54
Alors, que vaut-il aujourd'hui face à une concurrence plus sûre et plus performante ?
Et bien côté performance, avec Delphi (ça serait certainement similaire avec Lazarus et FreePascal mais je ne les connais pas), on est pas mal : exemple récent de bench en raytracing : https://github.com/edin/raytracer. A noter que ce test a été fait avec Delphi en version XE6 datant de 2014...

Pour info, hier, une nouvelle version de Delphi est sortie.

Selon eux, de nombreux logiciels gratuits, partagés, open source et commerciaux à petite échelle sont encore écrits en Pascal/Delphi.
A l'occasion des 26 ans de la sortie de la toute première version de Delphi (c'était en 1995, la même année où sont sorties les premières versions de Java et de Javascript par exemple et la première version de Python est sortie en 1991), l'éditeur propose un showcase : https://blogs.embarcadero.com/category/showcase/

Ce que j'apprécie avec Delphi :
- on peut faire des applications de tous types (web, gestion, jeux, industriel, 3D...) quelques exemples divers : FL Studio, Rise of Legions (dont les sources sont maintenant publiques : https://github.com/BrokenGamesUG/rise-of-legions), StoneQuest, Wall-ye, KisKis, l'éclairage des chutes du Niagara, la plateforme Lumicademy, Expresii, AllPlayer, Beyond Compare, le panneau publicitaire 3D d'une célèbre marque de Soda sur Times quare, HeidiSQL (dont les sources sont disponibles ici) etc.);
- syntaxe claire et facilement maintenable;
- permet de compiler nativement pour Windows, MacOS, Linux, IOS et Android et pour les différents stores;
- la notion de composant présente depuis la version 1;
- l'éditeur d'interface graphique WYSIWYG.

Allez encore un petit exemple avec le succès de l’atterrissage de Perseverance sur Mars : https://twitter.com/daveake/status/1363889175808860162


Mais, malgré cela, les index, comme Tiobe, montrent que Delphi, ainsi qu'Object Pascal, un langage orienté objet dérivé du Pascal, sont en perte de vitesse.
Il est vrai que la communauté est moins importante que pour d'autres langages mais on trouve toujours des réponses à nos besoins. Delphi n'est jamais sorti du top 20 de l'indice TIOBE même si à titre perso je me méfie de tous ces indices (Pypl, Tiobe, Spectrum...). Ils analysent les requêtes sur certains moteurs de recherche (Tiobe par exemple ne prend pas en compte le moteur russe yandex, ou des moteurs asiatiques par exemple), sur des dépots de code opensource (malheureusement, par rapport à d'autres communautés, il y a moins de projets open source avec Delphi, requêtes sur des sites comme Stackoverflow (pour remonter des tutos ou des pb, avec Delphi, il y a un éditeur qui assure du support, on va donc plutôt remonter les bugs par ce biais)...
D'ailleurs, dans l'index Tiobe de ce mois ci, Delphi est 17ème, alors que Julia, Scala, Kotlin ou encore Dart ne sont même pas dans le top 20...
6  0 
Avatar de tourlourou
Modérateur https://www.developpez.com
Le 25/02/2021 à 14:10
Bonjour,

Alors, que vaut-il aujourd'hui face à une concurrence plus sûre et plus performante ?
Dit comme ça, il ne peut qu'être moins sûr et moins performant...
4  0 
Avatar de archqt
Membre expérimenté https://www.developpez.com
Le 25/02/2021 à 16:13
Hélas (ou pas) il est remplacé par Python dans l'enseignement.

Mais c'était un super langage.
2  0 
Avatar de sergio_is_back
Expert confirmé https://www.developpez.com
Le 26/02/2021 à 8:30
Très bon langage que je continue à utiliser au quotidien avec un grand plaisir !

Par rapport à d'autres, les évolutions apportées par Borland à l'époque (l'objet) n'ont pas dénaturé l'ensemble et même les évolutions plus récentes se coulent avec harmonie dans la syntaxe qui reste claire et compréhensible.

Ajout : Je voudrais préciser aussi que coté performances, pour peu que l'on s'en donne la peine, il n'a pas à rougir par rapport à des langages plus à la mode, sur certains benchmarks on est proche des perfs du C++
2  0 
Avatar de Guesset
Membre expérimenté https://www.developpez.com
Le 16/03/2021 à 11:32


Bonjour,

Le bout de code semble extrapoler la valeur d'un Yn+1 pour un Xn+1 donné à partir des n couples de valeurs précédentes.

Mais c'est surtout une source d'erreurs assez dense :
  • Le tableau est limité à 10 valeurs mais le nombre n qui doit être < 10 n'est jamais vérifié
  • La division lors du calcul de L peut allègrement diviser par 0 : re-
  • Le listage des points traite le point extrapolé n+1 alors que la boucle aurait pu s'arrêter à n+1.
  • Le end de la boucle en j devrait être remonté avant l'affichage des résultats.


That's all folks (mais il y a certainement des problèmes que je n'ai pas vu)

Le Pascal est un peu verbeux, begin vs { par exemple. Par rapport à un usage du C puis du C++ cela est évident et pourtant ces langages ne sont pas parfaits sur ce point : les breaks que l'on écrit systématiquement dans les switches par exemple.

L'avantage sont les rad Delphi et Lazarus. Même QT et visual studio paraissent en retrait sur ce plan.

Coté enseignement, le problème de Pascal est qu'il n'est pas aussi portable (la portabilité est utile pour un enseignant qui n'a pas à se soucier de la machine cible pour donner ces exercices) que des langages comme Java et les langages interprétés de tout poil. Ce qui est dommageable est que cette masse d'étudiants favorise l'usage de ces langages sous optimaux dans le monde professionnel (RH moins chère et déjà formée).

Salutations
2  0 
Avatar de marclebrun
Nouveau membre du Club https://www.developpez.com
Le 21/06/2021 à 14:31
Le Pascal fait partie de ma vie depuis que je fais de l'informatique (30 ans environ).
À part le Basic, le Pascal a été mon premier langage, et celui avec lequel j'ai réalisé le plus de choses.

Je suis passé par beaucoup d'autres langages (C/C++, dBase/Clipper, PHP, Python, Java, Javascript, etc...).
J'ai découvert Delphi 1.0 en 1995, ensuite j'ai été engagé dans la boîte où je suis encore depuis 1998, dans laquelle j'ai utilisé Delphi 3.0 pendant des années avant de passer à Lazarus (encore en beta à l'époque).
Tout notre ERP est développé en interne avec Lazarus. Mon autre collègue utilise WinDev et on arrive à cohabiter tant bien que mal.
Bon, c'est pas une boîte d'informatique, ce qui explique qu'on nous laisse tranquille de faire comme on veut, du moment que le résultat est là

Je ne considère pas le Pascal comme un langage du passé, car je l'utilise encore activement.
Néanmoins c'est un langage de vieux, ça c'est sûr. Je ne conseillerais pas à des jeunes de l'apprendre, ça ne leur servirait à rien.
Mais pour les nostalgiques comme moi et beaucoup d'autres, ça nous fait encore rêver et c'est finalement l'essentiel
2  0 
Avatar de Jipété
Expert éminent sénior https://www.developpez.com
Le 25/02/2021 à 18:59
Bonsoir,
Citation Envoyé par Bill Fassinou  Voir le message

pour ceux qui voudraient jouer avec l'exemple, j'ai tout saisi (puis optimisé) et j'ai ajouté un end; absent et ça donne ça :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var 
  //F, inutilisé 
  L: real; 
  i,j,n: integer; 
  x:array[1..10] of real; 
  y:array[1..10] of real; 
begin 
  write('n='); readln(n); 
  for i := 1 to n do 
  begin 
    write('x[',i,']='); readln(x[i]); 
    write('y[',i,']='); readln(y[i]); 
  end; 
  write('x[',n+1,']='); readln(x[n+1]); 
  y[n+1] := 0; 
  for j := 1 to n do begin 
    L := 1; 
    for i := 1 to n do 
      if i<>j then 
        L := L * (x[n+1]-x[i])/(x[j]-x[i]); 
    y[n+1] := y[n+1]+y[J]*L; 
    writeln('y[',n+1,']=',y[n+1]:1:0); 
    for i := 1 to n do 
      writeln('x[',i,']=',x[i]:10:10,' y[',i,']=',y[i]:10:10); 
    writeln('x[',n+1,']=',x[n+1]:10:10,' y[',n+1,']=',y[n+1]:10:10); 
    write('press enter'); readln; 
  end; 
end.
mais je n'ai pas compris à quoi ça sert...

J'ai aussi ajouté une ligne pour savoir quoi faire, tout en bas.
Testez avec n=2 pour commencer.
1  0 
Avatar de Gouyon
Membre expérimenté https://www.developpez.com
Le 30/03/2021 à 7:34
Personnellement j'ai commencé le pascal sur un Apple II et il fallait une carte mémoire spécifique de 128ko et l'affichage de l'écran passait de 40 à 80 colonnes.
Par rapport au basic c'était une énorme évolution. Depuis je l'utilise toujours. Seul regret à l'heure actuelle c'est qu'il manque de librairie permettant de faire des calculs et traitement haute performance. Sinon ça reste un très bon langage et les environnements de développement (Delphi Lazarus code Typhon...) sont très bien et permettent de développer rapidement des applications performantes.
1  0 
Avatar de Jiji66
Membre éprouvé https://www.developpez.com
Le 25/02/2021 à 20:52
Citation Envoyé par archqt Voir le message
Hélas (ou pas) il est remplacé par Python dans l'enseignement.

Mais c'était un super langage.
Pour moi il n'y a aucuns doutes : Hélas !
Comme il y a encore une communauté d'utilisateurs j'évite personellement d'en parler au passé.

Pour infos, la version 2.0.12 de Lazarus vient à peine d'etre publiée.
https://www.lazarus-ide.org/
0  0