Re: function ... return <objet li mité>;

Thomas De Contes <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Le 2 nov. 07 à 19:55, Jean-Pierre Rosen a écrit :

> Thomas De Contes a écrit :
>>> Effectivement. Le problème est qu'en Ada 95, on était obligé de  
>>> faire des acrobaties pas possibles: normalement une fonction  
>>> renvoie une *valeur*, or on ne peut pas copier une valeur limitée.
>> des acrobaties, tu veux dire au niveau du compilateur ?
> Et aussi au niveau de la définition formelle du langage.
>
>> (c'était que pour les types limités ? c'était pas aussi pour des  
>> choses comme les gros record ?)
> Un compilateur a toujours le droit de choisir son mode de passage  
> de paramètres, mais pour ce cas là, c'était des règles spéciales au  
> niveau du langage.

ah ?
ça me surprend un peu, parce qu'au niveau du langage tout me  
paraissait logique


>> En fait, j'aurais tendance à dire "tant pis si ça donne du travail  
>> au compilateur, il est là pour ça", son but c'est de simplifier la  
>> tache du programmeur en vérifiant tout ce qui est droit de  
>> modifier, droit d'affectation, etc ...
> Ada a été très loin dans cette voie, les rares cas où on a eu un  
> peu pitié de ceux qui font les compilateurs, c'est quand il y avait  
> vraiment un GROS problème - ou une inefficacité cachée: on préfère  
> que l'utilisateur soit au courant de ce qui se passe plutôt que de  
> lui faire croire qu'il dispose d'une fonctionnalité dont  
> l'implémentation est catastrophique.

bon ben, si tu dis qu'il y avait vraiment de GROS problèmes, je te  
crois :-)
et je me met donc "au travail" pour comprendre "les nouvelles  
manières de faire qui en découlent" ...



>> Je me suis donné comme règle de programmation de ne jamais  
>> utiliser de pointeurs dans la partie publique des paquetages
> Oui, mais il ne faut pas confondre pointeur et référence. C'est en  
> celà qu'un accès anonyme est différent d'un type accès explicite.

donc
type machin is access truc;
ça fait un type pointeur, cad que toutes les variables de type machin  
sont des pointeurs,

alors que si on voit "access truc" en paramètre d'une procédure, sans  
que le type machin soit cité,
c'est une référence,

c'est bien ça ?


> En particulier, il n'implique pas d'allocation dynamique.
> Et les règles (obscures il est vrai) sur les niveaux d'accessibilité
(j'ai cru comprendre que si les variables globales n'existaient pas,  
ça simplifierait bcp de choses à ce niveau là, c'est vrai ?)
> empêchent de créer un accès sur une variable locale qui aurait  
> disparu.

ça veut dire que je peux utiliser "access truc" autant que je veux  
dans la partie publique des paquetages,

tant que je ne déclare pas de type machin (dans le code utilisateur  
non plus, bien entendu),
je peux utiliser le paquetage comme je veux sans faire attention,
il n'y a pas de risque de se retrouver dans un état absurde  
(référence qui pointe sur rien) ?

super, je vais pouvoir programmer (un peu) différemment :-))


tu parlais de "généralisation des accès anonymes en Ada2005",
ça veut dire que maintenant on peut mettre "access truc" à des  
endroits où on pouvait pas avant ?

par exemple, comme type renvoyé par une fonction ?


-- 
j'agis contre l'assistanat, je travaille dans une SCOP !


_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.