Discussion:
Paquetage enfant dans une procédure.
(trop ancien pour répondre)
Blady
2019-09-22 19:49:19 UTC
Permalink
Bonjour,

Les paquetages enfants ne peuvent pas être déclarés dans une procédure.
Y a-t-il une raison ?

Merci Pascal.
J-P. Rosen
2019-09-22 21:27:30 UTC
Permalink
Post by Blady
Les paquetages enfants ne peuvent pas être déclarés dans une procédure.
Y a-t-il une raison ?
Oui.

Un paquetage enfant fait logiquement partie de la spécification de son
parent.
Une spécification de procédure ne peut pas contenir de déclaration de
paquetage.
CQFD.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Blady
2019-09-28 08:47:49 UTC
Permalink
Post by J-P. Rosen
Post by Blady
Les paquetages enfants ne peuvent pas être déclarés dans une procédure.
Y a-t-il une raison ?
Oui.
Un paquetage enfant fait logiquement partie de la spécification de son
parent.
Une spécification de procédure ne peut pas contenir de déclaration de
paquetage.
CQFD.
En fait, je pensais plutôt à:

procedure Proc is

package Pac is end;

package Pac.Fils is end; -- illégal

begin
null;
end;

Est-ce différent ?

Merci, Pascal.
J-P. Rosen
2019-09-29 05:26:00 UTC
Permalink
Post by Blady
procedure Proc is
  package Pac is end;
  package Pac.Fils is end; -- illégal
begin
null;
end;
Est-ce différent ?
Oui, ce n'est pas spécialement dans une procédure, c'est dans n'importe
quoi...

La notion d'enfant est définie pour des /unités de compilation/, donc
pas pour des unités imbriquées dans une autre unité de compilation. Le
but des unités enfant était de réduire les temps de compilation, de
permettre d'incorporer ou non des parties d'un composant logiciel, de
permettre de rajouter des fonctionnalités sans tout recompiler... Bref,
des use cas liés à la notion de compilation.

Honnètement, je ne vois pas trop le use case d'un paquetage enfant à
l'intérieur d'une autre unité. On peut avoir le même effet en mettant
Fils à l'intérieur de Pac.
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Blady
2019-09-29 08:00:52 UTC
Permalink
Post by J-P. Rosen
Post by Blady
procedure Proc is
  package Pac is end;
  package Pac.Fils is end; -- illégal
begin
null;
end;
Est-ce différent ?
Oui, ce n'est pas spécialement dans une procédure, c'est dans n'importe
quoi...
La notion d'enfant est définie pour des /unités de compilation/, donc
pas pour des unités imbriquées dans une autre unité de compilation. Le
but des unités enfant était de réduire les temps de compilation, de
permettre d'incorporer ou non des parties d'un composant logiciel, de
permettre de rajouter des fonctionnalités sans tout recompiler... Bref,
des use cas liés à la notion de compilation.
Honnètement, je ne vois pas trop le use case d'un paquetage enfant à
l'intérieur d'une autre unité. On peut avoir le même effet en mettant
Fils à l'intérieur de Pac.
Bin, je comprends bien les raisons justifiant la création des unités
enfants.
Mon utilisation réside dans la création de petits programmes d'essais ou
d'exemples ne tenant que dans un seul fichier source pour une
communication plus simple, par exemple:

procedure Ex_Paquetages_Enfants is
-- Une fois déclaré un paquetage Parent :
package Parent is
-- ...
end;
-- Le paquetage enfant est déclaré comme suis :
package Parent.Fils1 is
-- ...
end;
...

Pour les unités de compilation GNAT requière un fichier distinct par
unité que je pourrais mettre dans une archive zip ou alors l’utilisation
de gnatchop. Ce qui reste moins accessible ou immédiat pour un
utilisateur débutant.

D'autre part, ne serait pas possible de lever cette interdiction pour
une meilleure orthogonalité du langage ?

Merci, Pascal.
J-P. Rosen
2019-09-29 10:28:32 UTC
Permalink
Post by Blady
Mon utilisation réside dans la création de petits programmes d'essais ou
d'exemples ne tenant que dans un seul fichier source pour une
communication plus simple
C'est vrai. Ada est optimisé pour les grosses applications
industrielles, pas pour les petits exemples. (Je reconnais que ça rend
l'évangélisme plus difficile...)
Post by Blady
D'autre part, ne serait pas possible de lever cette interdiction pour
une meilleure orthogonalité du langage ?
Il n'y a pas d'interdiction, c'est la définition même de la notion
d'enfant qui est liée à la notion d'unité de compilation (c'est dans
10.1.1). Donc changer ça, c'est réécrire une bonne partie de la norme...

Tu peux toujours soumettre l'idée à l'ARG, mais tu as intérêt à avoir
des use case en béton si tu veux avoir une chance que ça passe!
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Loading...