Path: ...!news.mixmin.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: "J-P. Rosen" 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: References: <602be3f8$0$3273$426a74cc@news.free.fr> <603a3027$0$27427$426a74cc@news.free.fr> <6041f98b$0$6480$426a74cc@news.free.fr> <604209cf$0$21604$426a34cc@news.free.fr> <60425637$0$21598$426a34cc@news.free.fr> <60427563$0$12713$426a34cc@news.free.fr> <6043a011$0$19484$426a74cc@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: 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