Deutsch   English   Français   Italiano  
<ssas7a$jpj$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: "J-P. Rosen" <rosen@adalog.fr>
Newsgroups: fr.comp.lang.ada
Subject: Re: changer de sous-type au surnommage
Date: Thu, 20 Jan 2022 06:33:31 +0100
Organization: Adalog
Lines: 76
Message-ID: <ssas7a$jpj$1@dont-email.me>
References: <602be3f8$0$3273$426a74cc@news.free.fr>
 <s0lbg8$1f1p$1@gioia.aioe.org> <603a3027$0$27427$426a74cc@news.free.fr>
 <s1fruf$6ev$1@gioia.aioe.org> <6041f98b$0$6480$426a74cc@news.free.fr>
 <s1t0j0$8ri$1@dont-email.me> <604209cf$0$21604$426a34cc@news.free.fr>
 <s1td2r$v0p$1@dont-email.me> <60425637$0$21598$426a34cc@news.free.fr>
 <s1tqu2$66q$1@dont-email.me> <60427563$0$12713$426a34cc@news.free.fr>
 <s1v4t6$job$1@dont-email.me> <6043a011$0$19484$426a74cc@news.free.fr>
 <s20cs5$89b$1@dont-email.me>
 <fantome.forums.tDeContes-3A6738.04231419012022@news.free.fr>
 <ss8bkv$hsu$1@dont-email.me>
 <fantome.forums.tDeContes-6D7E27.22241519012022@news.free.fr>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 20 Jan 2022 05:33:30 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="7fe9a62ae724cbc920e5c4fc3bb31a7c";
	logging-data="20275"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/OD1KslcKQuxeMWkEOi8+b"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Thunderbird/91.5.0
Cancel-Lock: sha1:hmMUo+0uwJs+VT/klQPuzpX5+qA=
In-Reply-To: <fantome.forums.tDeContes-6D7E27.22241519012022@news.free.fr>
Content-Language: fr
Bytes: 5033

Le 19/01/2022 à 22:24, Thomas a écrit :
> en Ada 83 un sous-type pouvait déjà être dynamique ?
oui bien sûr, le principe a toujours été:
type => statique
Sous-type => dynamique

>> et une règle de compilation ne peut pas
>> dépendre de quelque chose qui n'est connu qu'à l'exécution.
> 
> je ne comprend pas ce que tu dis, puisque le comportement attendu est de
> lever Constraint_Error à l'exécution.
??? Je ne sais pas où tu as vu ça... D'ailleurs, en 8.5.1 il n'y a même 
pas de paragraphe "dynamic semantic".

Ce qui est important, c'est 8.5.1(6/2) qui dit clairement que tout ce 
qu'on peut mettre dans la déclaration de surnom est ignoré, ce qui 
compte c'est ce qui est dit dans la déclaration de l'objet d'origine.

>> A partir d'Ada 95, on a introduit la notion de "statically matching
>> subtypes", mais il a été estimé que cela compliquerait trop les choses
>> de l'appliquer aux rename,
> 
> (peut-être que je comprendrai avec les questions précédentes)
> 
>> et de toute façon ça ne pouvait pas marcher
>> dans tous les cas sans casser la compatibilité.
Ce que je veux dire, c'est que l'idéal aurait été que les définitions de 
sous-type de la déclaration et de l'objet renommé correspondent, sous 
peine d'erreur à la compilation. Mais en Ada83 ce n'était pas possible 
puisqu'il n'y avait jamais de correspondance statique entre des 
sous-types. Ada95 a introduit la notion de "statically matching 
subtypes", mais l'utiliser pour un rename aurait conduit à interdire 
tous les renames d'un objet dont le sous-type était dynamique => trop 
incompatible.


>>> de même que l'interdiction du mot "constant", qui ne devrait pas
>>> forcément vérifier si l'objet pointé en est une, mais au moins que toute
>>> utilisation du surnom respecte ça.
Effectivement, on aurait pu imaginer un rename avec le mot "constant" 
qui fournirait une vue constante d'une variable (comme un paramètre 
"in"). Ca n'a pas été fait, et honnètement je ne sais pas ce qu'Ichbiah 
avait en tête comme cas d'utilisation du rename. Mais je peux te dire 
que ça complique énormément les outils d'analyse de code ;-)

[...]

> ce dont je parlais c'était plutôt ça :
> 
>      V : Integer := 0;
>      C : constant Integer renames V;
> 
> d'après mon expérience, c'est totalement interdit d'écrire ça,
> et d'après ce que j'ai compris du langage, c'est autorisé mais sans
> aucune conséquence (c'est pire).
Non, ce n'est pas dans la syntaxe du rename.
> 
> en fait, ce qui me paraitrait logique, c'est que :
> - le surnom doive obligatoirement être marqué "constant" si l'objet
> pointé l'est, mais pas réciproquement,
C'est logique, mais on ne peut plus le rajouter maintenant, vu qu'on a 
des rename de constantes qui n'utilisent pas le mot "constant"

> - l'usage autorisé du surnom dépende du marquage du surnom, pas de
> l'objet pointé.
> 
Ca pourrait être rajouté au langage. On (l'ARG) est en train de mettre 
en route un système pour centraliser les demandes des utilisateurs. Tu 
pourras toujours le proposer quand ce sera annoncé...

-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52
https://www.adalog.fr