Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Les bouquins, les scans, les pdf ou les liens qui vont bien... ici c'est la bibliothèque.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Mokona
Messages : 1043
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Mokona »

Rust un langage non typé, on est sûr de ça ? Je demande la vidéo !

Attention, ce n'est pas parce qu'on ne spécifie pas manuellement le type dans certains cas qu'il n'y en a pas.

Rust est typé. Fortement. Et statiquement.
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par hlide »

Neotenien a écrit : 11 févr. 2023 19:49 Cependant Rust (langage récent) qui est un langage non typé est aussi performant parce qu'il gère en majorité des constante !
Et ben non ! Rust est fortement et statiquement typé. Certes, il offre une inférence (déduction) de typage très efficace. On retrouve ça aussi dans le C++ à partir du C++11 avec le mot réservé "auto".
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

C'est clair quand le type n'est pas bon, alors Rust.. tique ! :lol:

Et pour régler cela, on ne peut pas compter sur des Rust..ines :mrgreen:

Ok je :arrow: []

PS: plus sérieusement, il ne faut pas confondre des constantes, avec des variables immuables. Dans ces variables on ne peut écrire qu'une fois, mais à la différence des constantes, ce qu'on y écrit s'évalue au runtime et pas à la compilation.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Neotenien »

Je ne connais pas Rust, j'ai juste cherché vite fait ce que c'était... Et je vous fait TRust pour le coup LOL

Quant au 2 octets du type Booléan en Java, c'est même plutôt 4... J'ai juste vu ça ici. Peut-être que ce blog raconte des anneries j'en sais rien...

Oui Samuel, dans le cadre d'une machine virtuelle. Alors si Java compilait les programme ça en ferait sans doute des performances très proche du C.

Bon on s'éloigne du sujet initial... Quoique pas forcément. J'ai quand même l'impression que le Pascal est un peu boudé dans ce fil de discussion (on ne débat pas trop là dessus). C'est pas évident de trouver ce qu'était la norme Pascal 1983 ou même 1990... Alors je suppose que les 2 standards de Pascal de l'époque années 80 (Turbo Pascal version 5 et Watcom Pascal) en sont relativement proche... C'est pas évident de faire du code qui soit fully compatible tout compilo Pascal... Alors je me base sur ce que peux faire Alice Pascal et HiSpeed Pascal (les 2 sur Atari ST), dont le type pointer universel ou les types pointés et les variants sur Record.

J'ai mis en ligne hier, cette page (pour les tableaux dynamiques). qui n'est encore qu'un brouillon puisque je dois voir les correspondances d'avec Free Pascal/Delphi.
Ya également cette vidéo où je montre un tout premier essai (c'est vraiment un brouillonn) de ce qui est possible de faire en animation rien qu'avec Turbo Pascal 5/Pure Pascal sur Hatari mais en mode 68000/8Mhz. Démarrer à partir de 2'30" pour voir la petite démo (le reste c'est du blabla)

Dernière modification par Neotenien le 13 févr. 2023 12:21, modifié 2 fois.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

Quant au 2 octets du type Booléan en Java, c'est même plutôt 4... J'ai juste vu ça ici. Peut-être que ce blog raconte des anneries j'en sais rien...
Oui c'est des conneries. Le W3C indique:
Capture.PNG
Capture.PNG (69.22 Kio) Consulté 1990 fois
En fait, la spec officielle ne donne pas (plus) de taille pour le boolean.
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
Plus précisément la spec java ne donne pas (plus) de taille pour les types de données mais des ranges.
Capture.PNG
Capture.PNG (35.06 Kio) Consulté 1990 fois
Peu importe comment c'est représenté en mémoire. Ce qu'il faut c'est que le range soit couvert.

En fait, c'est que, de nos jours, il est très compliqué de définir ou connaitre la "bonne" taille des données à cause des contraintes d'alignements entre les machine (et même sur une même machine): cela dépend de la VM: 32 ou 64 bits, de sa config, cela dépend aussi de la façon dont le processeur veut que les data soient alignées (à cause des optimisation SIMP en particulier), etc.

Bref: les histoires de sizeof() sont un concept du passé qui n'a plus de sens dans l'informatique moderne.

En effet: on accède plus aux champs des objets "nus" dans les langages de haut niveau, mais via des méthodes dites "accesseurs" ou des structures de données abstraites. Un boolean peut être implémenté de plein de façon qui se toutes équivalentes au niveau fonctionnel mais qui peuvent occuper plus ou moins de mémoire. Je connais des technologies où les données sont en fait stockées et mémoire et hors mémoire, dans une base de données annexe. Les objets sont automatiquement chargés ou purgés de la mémoire (renvoyés totalement ou partiellement dans la base de données), suivant les besoins. Le sizeof() en mémoire n'a plus aucun sens dans ce contexte.

Dernier point: tu sais que tu peux faire démarrer une vidéo à un instant donné en ajoutant "?start=<temps en secondes>" après l'ID. Ainsi en utilisant

Code : Tout sélectionner

[youtube]1u5EkquTSbw?start=150[/youtube]
Obn obtient ca: (2mins30 = 150secs)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Neotenien »

Ok Samuel pour le Java et pour le démarrage de la vidéo youtube (dans le code j'avais mis un ?t=..m..s mais ça ne marchait pas pour le forum alors que ça marche pour Youtube). Je modifie mon commentaire précédent en consquence.

Pour SizeOf, j'en ai besoin pour réserver la mémoire dynamique dans le cadre de pointeurs sur tableau dynamique, c'est incontournable (et en plus, ça permet de sadapter aux différents copilateurs si jamais la taille d'un real n'est pas la même par exemple). Bon jai changé un peu la procédure pour créer un tableau dynamique en Turbo Pascal 5/High Speed Pascal/Pure Pascal... Mais ma procédure permet de changer le type de données de ce tableau dynamique s'il existe déjà. Enfin je pense... Je n'ai pas encore testé ce truc...

Code : Tout sélectionner

procedure SetLength (var tab : Darray; TypeData : DarrayType; Nb : MargeId);
var
    taille : byte;
    i: word;
begin
    if tab.Valid = true then do
        FreeMem(tab.Tcoef, SizeOf(tab.Tcoef));
    else
        tab.Valid := true;
    tab.ArrType := TypeData;
    case TypeData of
        TypeBoolean : taille := SizeOf(boolean);
        TypeShortInt : taille := SizeOf(ShortInt);
        TypeInteger : taille := SizeOf(Integer);
        TypeLongint : taille := SizeOf(LongInt);
        TypeSingle : taille := SizeOf(Single);
        TypeDouble : taille := SizeOf(Double);
        TypeReal : taille := SizeOf(Real);
    end;
    GetMem(tab.TCoef,Nb*taille);
    for i:=0 to Nb-1 do
        tab.Tcoef[i]^ :=0;
    end;
end;
Je ne suis pas sûr qu'en faisant ainsi, le type record variant change à chaque fois qu'on modifie le champ "balise", mais si ça le fait, ça serait énorme. C'est à dire qu'on aurait ici, une sorte de généricité... Cette procédure resemble très fortement à la même procédure en Free Pascal sauf qu'on peut aussi changer le type des éléments du tableau... Si suelement j'avais un moyen de retourner directement la taille d'un élément du tableau sans passer par "sizeof" (je ne suis pas sûr que le compilateur puisse retourner directement la taille d'une variable tableau pointé qui n'a pas encore été initialisée...)
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

Je me pose une question: Comment est déclaré la fonction SizeOf(type) en Pascal ? Je veux dire par là que son argument Real, Boolean, etc doit bien avoir un "Type" qui représente un Type Pascal.

Tu pourrais utiliser le "type" de l'argument de SizeOf() pour être hyper générique et réduire les lignes de code (donc les bugs). D'après la doc de freepascal il semble que ce soit TAnyType. Pourquoi n'utilises-tu pas ce type prédéfini. Ca serait si pratique.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Neotenien »

En fait je ne sais même pas si ce que j'ai écrit là est valable en Pascal. SizeOf est sensé être pour une variable mais il semble qu'en pascal on puisse aussi faire des choses directement en mettant les mot clés de type (par exemple, pour les variants sur record, on peut remplacer, aparemment, un nom de variable par un type pour la variable "balise". Tanytype n'existe pas en temps que tel, comme tu le vois dans les exemples de free pascal, tu dois soit mettre un type (et donc ça répond à mon interrogation), soit une variable déclarée. Et Boolean, Real etc SONT des types en effet.

C'est très large en Pascal sur le nommage! Il existe un type CONST typé (et pas constipé LOL) qui permet d'avoir un truc du genre "Bidul : array [0..2] of real = (1.2,3.5,5.1)" par exemple.... Je ne sais pas si la constante ici l'est vraiment, si c'est une variable ou je ne sais quoi. Je dois approfondir le sujet.

Je dois expérimenter un tas de trucs (à commencer sur les pointeurs)... Et pour ce qui est de Free Pascal... Un des buts de ce sites web est de MAJ Turbo Pascal 7 (voire 5) vers les quelques + de FreePascal. Le type tableau dynamique fait pârtie de ces rares petits trucs en plus (issu du Delphi), mais pour le reste, si je regarde Free Pascal, ya pas grand chose de vraiment nouveau au niveau de la structure du langage.. Bcp d'Unités en plus mais c'est pas rédibitoire comparé même à Turbo Pascal 5 voire même Pascal Watcom/Alice Pascal. A part un nouveau type de Char de 16 bits (Unicode..) et même le tytpe Pchar de TP7+ et Pure Pascal 1.1 n'est pas tellement mis en avant.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

Bah TP5, TP7, FreePascal c'est du Pascal tout ça, ou est-ce qu'on regroupe sous un même nom des tas de langages différents. Un tel pascal sera capable de capturer le "type d'un type", un tel autre ne le pourra pas mais acceptera les caractères unicodes, etc etc. Ca fait au final autant de Pascal qu'il y a de compilateurs et en te taquinant un peu, autant de pascal que d'utilisateurs de Pascal.

Au final, c'est quoi "le" Pascal standard qui passe partout ?

C'est celui-là qu'il faut prendre en référence je pense pour faire une bonne bibliothèque portable (la portabilité est le point clef depuis 20+ ans en informatique).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
farvardin
Messages : 436
Inscription : 27 déc. 2014 16:07
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par farvardin »

merci pour le lien vers le tuto youtube de smalltalk. Ce langage, ainsi que ses dérivés Squeak, Pharo, m'a toujours interpellé, et je trouve ça plus compliqué que du Pascal :)
J'ai été voir du côté de la doc de cuis-smalltalk qui semble assez didactique...
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

Ca dépends si tu es familier avec la notion d'envoi de message à un objet. En gros: on dit à "untel (objet) de faire ceci (message) avec cela (paramètre)". C'est un truc en principe à la portée des "novices" qui n'ont jamais programmés. Moi j'ai très vite accroché. La syntaxe est simple. Cela se lit comme du langage naturel.

Par contre si on a trop fait de procédural, où il n'y a pas la notion d'objet auquel on demande de faire un truc, mais dans lequel on dit juste "fait un truc (méthode), avec ca, ca et ca (les params)" sans qu'on sache parmi les "ca" lequel fait quoi ou pas, c'est sans doute moins évident de se mettre à l'envoi de messages.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Zebulon
Messages : 2806
Inscription : 02 nov. 2020 14:03

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Zebulon »

Que de souvenirs, j'avais fait du Smalltalk sur cette version pendant mes études. :D
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Neotenien »

__sam__ a écrit : 13 févr. 2023 21:03 Au final, c'est quoi "le" Pascal standard qui passe partout ?

C'est celui-là qu'il faut prendre en référence je pense pour faire une bonne bibliothèque portable (la portabilité est le point clef depuis 20+ ans en informatique).
Eh oui, pas forcément simple... Parce que justement si je prends les 3 compilo Pascal sur Atari ST, l'un est compatible Turbo Pascal 7+ (Pure Pascal), un autre, compatible Turbo Pascal 5 (HiSpeed Pascal), et un autre, Alice Pascal compatible WatCom Pascal (qui est à la norme Pascal 1983).
Donc un programme écrit pour HS Pascal tournera sur Pure Pascal mais l'inverse n'est pas forcément vrai, notamment en intérant de l'objet, la clause CONST dans le passage de paramètres ou les constantes typées.
Alice Pascal permet d'écrire des chaines soit avec guillements simples soit avec double guillemets (voir le lien fourni) : on voit qu'ici, le double guillement ne rendra pas le programme portable.

Donc ajouter des "particularités" n'est pas forcément bon... Le faire à travers des unités en sus là oui (comme c'est le cas avec HighSpeed Pascal qui a une unité dédiée au tracé de figure en format 3D fil de fer animé!! là c'est intéressant). Pour Pure Pascal 1.1 et Turbo Pascal 6, il y a l'implémentation d'objets, mais appelés "Object" ici et pas "Class" comme c'est le cas dans le successeur "Delphi". Mais bon, suffit d'ajouter une constante (CONST) "Class = Object;" pour résoudre le problème (Delphi=>TP6) par exemple.
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par Neotenien »

hlide a écrit : 06 févr. 2023 22:56 Oh ! Ah ! ah bon ? printf et scanf ne peuvent pas avoir une liste d'arguments variables ? les fonctions dont tu parles (Read, ReadLn) ne sont pas des fonctions pures Pascal. Eclaire moi sur comment déclarer une fonction variadique en Pascal ?
Bonjour

Je réponds à nouveau à ce message à propos des fonctions variadique (si j'ai bien compris, c'est par passage de paramètres à un programme, donc par ligne de commande ?)

J'ai revu la doc Pure Pascal et la plupart des compilateurs Pascal traitent le passage de paramètres en ligne de commandes par 2 fonctions systèmes : ParamCount et ParamStr

Et donc, en vérité, le mot clé program ne sert à RIEN et ne sert que pour la déco... Le compilateur Pascal crée une structure capable de traiter les paramètres passés directement.

Est ce que ça répond à la question ?
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau site web dédié au langage Pascal (2021), basé sur Pure Pascal

Message par __sam__ »

Non il parle d'une méthode/fonction avec un nombre variable d'arguments aux types mélangés comme les read() et write() du Pascal dont il se demande comment on les déclare en pascal.

A mon avis: on peut pas.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre