OVH Cloud OVH Cloud

Windows sur le mainframe

150 réponses
Avatar
debug this fifo
http://tinyurl.com/nykd6r

"""
L'étude, qui porte sur plus de 100 entreprises réalisant un chiffre
d'affaires de plus de 2 Md$, indique que 70% des clients mainframe
dépenseront plus pour l'usage de Linux sur grands systèmes dans les deux
ans à venir qu'aujourd'hui.

On savait déjà qu'IBM poussait ses clients à l'usage de Linux sur
mainframe. Mais il semble que les clients de Big Blue adhèrent au
message du constructeur. Selon une étude réalisée pour le compte de CA
par The InfoPro, deux tiers des utilisateurs de grands systèmes z-series
prévoient une hausse de leurs capacités linux supérieure à 40% d'ici
deux ans.
"""

ah ben zut ça parle pas de windows ? wa pas de windows pour les
mainframes ? mais faut vite y compiler CE7 !!!

10 réponses

Avatar
JKB
Le 17-07-2009, ? propos de
Re: 32 vs. 64 bits [était Re: Windows sur le mainframe],
pehache-tolai ?crivait dans fr.comp.os.linux.debats :
On 17 juil, 16:57, totof2000 wrote:

> Un compilo qui ne sait pas aligner tout seul les données dans une structure,
> quitte à laisser des trous, c'est pas très sérieux.

Tout dépend du compilo  et de ce que tu fais avec ....

Quand tu fais du dev bas niveau avec des accès hard, tu n'as pas
toujours envie que le compilo réorganise tes structures sans te
prévenir .....



Quand on veut faire du dev bas niveau avec des accès hard, on ne le
fait pas en Fortran, tout simplement. Il y a des langages plus
adaptés, plutôt que de faire des contorsions qui n'est pas fait pour à
la base.



On s'en contrefiche. Le fait d'avoir des types de longueurs
différentes, même si ça te semble inutile, est quelque chose
d'intéressant (et parfois d'indispensable comme lorsque tu dois
interfacer des bouts de C avec du Fortran). Il n'y a pas qu'en faisant
du bas niveau que tu dois savoir exactement ce que tu fais.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
pehache-tolai
On 17 juil, 17:12, JKB wrote:

        Même sans ça. Tu peux très bien faire des hypothè ses sur le
placement en mémoire de tes objets pour optimiser certains codes.



Et en général faire un code non portable.


>> > Les déclarations X*Y proviennent des extensions VAX et le Y est le
>> > nombre d'octets de la variable. J'aimerais que tu nous donnes ici un
>> > seul compilo fortran qui pour logical*1 positionne autre chose d'un
>> > drapeau sur un octet

>> Fais ton choix :

>>http://www.idris.fr/su/Vectoriel/brodie/options_fortran.html



Pas de commentaire là-dessus ?


>> Voilà : ça n'a *jamais* été normalisé. Et de fait écrire u n code en
>> supposant par exemple que REAL*8 va occuper la même place qu'un DOUB LE
>> PRECISION est casse-gueule du point de vue portabilité (cas vécu).

        Si, en extension du Fortran-77, justement. J'ai un draft IEEE
là-dessus. C'est même pour cela que les extension VAX/VMS sont portab les
d'un compilo à l'autre. Même le compilo Fortran 5.x de Microsoft les
comprenait, c'est dire !



Un draft ça veut dire ce que ça veut dire : as-tu un document final
adopté ?

Et même en admettant que ça ait pu être normalisé en tant qu'extens ion
de F77, ça n'a pas été reconduit en F90 et au-delà. Et F77 étant une
norme obsolète, les extensions Y*n sont de fait obsolètes aussi.


>> > Au passage, LOGICAL*1 et LOGICAL(1), ce n'est pas la même chose. J e
>> > te laisse chercher un peu.

>> Exact

        Tu as pourtant écrit juste un peu plus haut LOGICAL(n) alors que je
te parle de LOGICAL*n, ce qui est _différent_.



Oui. J'ai fait un abus de notation.


>> > Il y a longtemps que tu n'as pas vu un code Fortran, toi !

>> J'en fais juste tous les jours, ou presque.

        Un type qui est infoutu de faire la différence entre LO GICAL(kind=n)
et LOGICAL*n devrait commencer par changer de métier.



J'ai juste écrit trop vite.

Mais celui qui affirme qu'un LOGICAL*1 occupe *toujours* 1 octet, il
devrait faire quoi ?


>> Et je maintiens : en comparaison du C, la norme Fortran se soucie tr ès peu
>> de la façon dont sont représentées les données en mémoire, e t ça s'est
>> accentué depuis le Fortran 90 (tableaux qui ne sont plus forcément contigus
>> en mémoire, etc...).

        Gnîii ? Là, tu mélanges allègrement deux notions, mais venant de
toi, je m'attends vraiment à tout !...



Explique-moi plutôt quelles notions je mélange selon toi.


>> La seule contrainte de ce genre en Fortran est qu'un
>> REAL ou un LOGICAL doivent occuper exactement la place d'un INTEGER (s ans
>> que ce soit forcément un mot machine) et qu'un COMPLEX ou un DOUBLE
>> PRECISION doivent occuper la place de deux REAL. Tout le reste est à la
>> libre appréciation du compilo.

        Faux. J'ai la flemme de chercher dans la doc, mais j'ai a u moins un
contre-exemple. INTEGER et LOGICAL (de base) sont de même longueur.
Quant à REAL, rien n'est dit.



Ben voyons :
http://www.fortran.com/F77_std/rjcnf0001-sh-4.html#sh-4

4.3 Integer Type
... An integer datum has one numeric storage unit in a storage
sequence.

4.4 Real Type
... A real datum has one numeric storage unit in a storage sequence.

4.5 Double Precision Type
... A double precision datum has two consecutive numeric storage units
in a storage sequence.

4.6 Complex Type
... A complex datum has two consecutive numeric storage units in a
storage sequence;

4.7 Logical Type
A logical datum has one numeric storage unit in a storage sequence.


J'ai plusieurs compilo pour lesquels la
longueur du REAL est supérieure à celle de l'INTEGER.



Un conseil : jette-les. Ou bien arrête de picoler.

Tu t'avances aussi beaucoup en disant qu'un DOUBLE PRECISION est deux
fois plus long qu'un REAL. Enfin, c'est à toi de voir.



Voir ci-dessus. Ces histoires de place occupée par les différents
types, c'est quand même des notions de base en Fortran. Je suis plus
qu'étonné que tu ne les connaisses pas.

>> D'ailleurs je note que les extensions Y*n n'ont jamais été normali sées alors
>> qu'elles étaient très courantes. A la place ce sont les Y(KIND=m ) qui l'ont
>> été, qui sont très différents des Y*n comme tu l'as rappelé, et qui
>> notamment ne disent *rien* sur la place occupée en mémoire.

        Ça, c'est parce que tu codes comme un pied. Il y a un m écanisme qui
te permet de trouver le type à balancer dans le KIND en fonction de ta
plage. Je te laisse là encore chercher.



Tu t'enfonces allègrement dans ta méconnaissance du Fortran.

Le mécanisme en question ne fait aucune référence à la place
disponible pour le type, mais à la précision et à l'étendue numér ique
désirées.

SELECTED_INT_KIND(RANGE=r) retourne un KIND qui permet de représenter
des entiers au moins entre -10^r et 10^r

SELECTED_REAL_KIND(PRECISION=p,RANGE=r) retourne un KIND qui permet de
représenter des flottants au moins entre -10^r et 10^r, avec une
mantisse d'au moins p chiffres décimaux significatifs.

*Aucune* notion de place mémoire là-dedans. Tu racontes vraiment
n'importe quoi.

--
pehache
Avatar
pehache-tolai
On 17 juil, 17:27, JKB wrote:

> Quand on veut faire du dev bas niveau avec des accès hard, on ne le
> fait pas en Fortran, tout simplement. Il y a des langages plus
> adaptés, plutôt que de faire des contorsions qui n'est pas fait pou r à
> la base.

        On s'en contrefiche. Le fait d'avoir des types de longueu rs
différentes, même si ça te semble inutile, est quelque chose
d'intéressant



Ce n'est pas que ça me semble inutile par essence, c'est que ça ne
cadre pas avec ce qu'est le Fortran, et que ça ne peut que conduire à
faire du code avec des problèmes potentiels de portabilité.

Et pour en revenir aux questions d'alignements, en Fortran c'est au
compilateur de gérer ça, je ne vois pas l'intérêt de chercher à
aligner soi-même les données.

(et parfois d'indispensable comme lorsque tu dois
interfacer des bouts de C avec du Fortran).



En F2003 l'interfaçage C/Fortran est normalisé.

Mais effectivement jusqu'à F95 il fallait pouvoir spécifier la taille
mémoire des types pour pouvoir s'interfacer avec du C...

--
pehache
Avatar
JKB
Le 17-07-2009, ? propos de
Re: 32 vs. 64 bits [était Re: Windows sur le mainframe],
pehache-tolai ?crivait dans fr.comp.os.linux.debats :
On 17 juil, 17:12, JKB wrote:

        Même sans ça. Tu peux très bien faire des hypothèses sur le
placement en mémoire de tes objets pour optimiser certains codes.



Et en général faire un code non portable.



Par forcément. J'ai des tas de situations comme celle-là avec du
code _parfaitement_ portable (et qui est un mélange entre du C, du F77
et du F9x). Ce n'est pas parce que tu ne sais pas faire que ça n'est pas
possible.

>> > Les déclarations X*Y proviennent des extensions VAX et le Y est le
>> > nombre d'octets de la variable. J'aimerais que tu nous donnes ici un
>> > seul compilo fortran qui pour logical*1 positionne autre chose d'un
>> > drapeau sur un octet

>> Fais ton choix :

>>http://www.idris.fr/su/Vectoriel/brodie/options_fortran.html



Pas de commentaire là-dessus ?



Et que veux tu que je te dise ? Que sur ce compilo un real*8 vaut un
real(kind=8) ? Dans le cas général, c'est faux. C'est juste vrai sur
cette implantation.

>> Voilà : ça n'a *jamais* été normalisé. Et de fait écrire un code en
>> supposant par exemple que REAL*8 va occuper la même place qu'un DOUBLE
>> PRECISION est casse-gueule du point de vue portabilité (cas vécu).

        Si, en extension du Fortran-77, justement. J'ai un draft IEEE
là-dessus. C'est même pour cela que les extension VAX/VMS sont portables
d'un compilo à l'autre. Même le compilo Fortran 5.x de Microsoft les
comprenait, c'est dire !



Un draft ça veut dire ce que ça veut dire : as-tu un document final
adopté ?



J'ai dit un draft. Ce qui veut dire qu'assez de monde a bosser sur
ce point pour qu'il soit adopté, mais pas normalisé effectivement (sinon
on parlerait de _norme_ et non d'_extension_) car les specs Fortran 88
qui sont devenues Fortran 90 étaient en route.

Et même en admettant que ça ait pu être normalisé en tant qu'extension
de F77, ça n'a pas été reconduit en F90 et au-delà. Et F77 étant une
norme obsolète, les extensions Y*n sont de fait obsolètes aussi.



Les extensions Y*X sont encore marquées comme extensions _valides_
et non _obsolètes_ dans la référence Fortran2003 que j'ai sous les yeux.
Et amha, ce n'est pas demain la veille que ça va changer parce que ce
truc a un sens lorsqu'il est implanté.

>> > Au passage, LOGICAL*1 et LOGICAL(1), ce n'est pas la même chose. Je
>> > te laisse chercher un peu.

>> Exact

        Tu as pourtant écrit juste un peu plus haut LOGICAL(n) alors que je
te parle de LOGICAL*n, ce qui est _différent_.



Oui. J'ai fait un abus de notation.



Non, ce n'était pas un abus de notation, puisque tu m'as justifié
par du texte.

>> > Il y a longtemps que tu n'as pas vu un code Fortran, toi !

>> J'en fais juste tous les jours, ou presque.

        Un type qui est infoutu de faire la différence entre LOGICAL(kind=n)
et LOGICAL*n devrait commencer par changer de métier.



J'ai juste écrit trop vite.

Mais celui qui affirme qu'un LOGICAL*1 occupe *toujours* 1 octet, il
devrait faire quoi ?



Exprime-toi clairement.

>> Et je maintiens : en comparaison du C, la norme Fortran se soucie très peu
>> de la façon dont sont représentées les données en mémoire, et ça s'est
>> accentué depuis le Fortran 90 (tableaux qui ne sont plus forcément contigus
>> en mémoire, etc...).

        Gnîii ? Là, tu mélanges allègrement deux notions, mais venant de
toi, je m'attends vraiment à tout !...



Explique-moi plutôt quelles notions je mélange selon toi.



Non, à toi l'honneur. Tu prétends qu'un tableau n'est pas forcément
contigu. Je t'attends, parce qu'il y a une subtilité qui semble
d'échapper.

>> La seule contrainte de ce genre en Fortran est qu'un
>> REAL ou un LOGICAL doivent occuper exactement la place d'un INTEGER (sans
>> que ce soit forcément un mot machine) et qu'un COMPLEX ou un DOUBLE
>> PRECISION doivent occuper la place de deux REAL. Tout le reste est à la
>> libre appréciation du compilo.

        Faux. J'ai la flemme de chercher dans la doc, mais j'ai au moins un
contre-exemple. INTEGER et LOGICAL (de base) sont de même longueur.
Quant à REAL, rien n'est dit.



Ben voyons :
http://www.fortran.com/F77_std/rjcnf0001-sh-4.html#sh-4

4.3 Integer Type
... An integer datum has one numeric storage unit in a storage
sequence.

4.4 Real Type
... A real datum has one numeric storage unit in a storage sequence.

4.5 Double Precision Type
... A double precision datum has two consecutive numeric storage units
in a storage sequence.

4.6 Complex Type
... A complex datum has two consecutive numeric storage units in a
storage sequence;

4.7 Logical Type
A logical datum has one numeric storage unit in a storage sequence.


J'ai plusieurs compilo pour lesquels la
longueur du REAL est supérieure à celle de l'INTEGER.



Un conseil : jette-les. Ou bien arrête de picoler.



Non, c'est toi qui mélange 'numeric storage' entier et flottant.
Ce n'est pas parce que dans l'immense majorité des cas, on peut
assimiler les deux que c'est _toujours_ le cas. Je te répète que j'ai
des compilos _certifiés_ F77 puisque c'est de ça qu'on parle qui ne se
comportent pas de la même façon (pour diverses raisons que je
n'expliciterai pas ici) :

integer -> 16 bits
real -> 32 bits
double precision -> 64 bits
logical -> 16 bits

J'ai en particulier ça sur un compilo TSC pour microcontrôleur dédié
à des systèmes embarqués. Sur le compilo digital de VMS, tu risques
aussi d'avoir des surprises.

Tu t'avances aussi beaucoup en disant qu'un DOUBLE PRECISION est deux
fois plus long qu'un REAL. Enfin, c'est à toi de voir.



Voir ci-dessus. Ces histoires de place occupée par les différents
types, c'est quand même des notions de base en Fortran. Je suis plus
qu'étonné que tu ne les connaisses pas.



Je les connais parfaitement. Il existe des architectures tordues et
non orientées octet dans lesquelles ton double precision n'est pas deux
fois plus long que le real. Voire, sur certaines architectures, tu est
_obligé_ de rajouter un option/ieee_quelquechose pour que ton assertion
soit vraie.

>> D'ailleurs je note que les extensions Y*n n'ont jamais été normalisées alors
>> qu'elles étaient très courantes. A la place ce sont les Y(KIND=m) qui l'ont
>> été, qui sont très différents des Y*n comme tu l'as rappelé, et qui
>> notamment ne disent *rien* sur la place occupée en mémoire.

        Ça, c'est parce que tu codes comme un pied. Il y a un mécanisme qui
te permet de trouver le type à balancer dans le KIND en fonction de ta
plage. Je te laisse là encore chercher.



Tu t'enfonces allègrement dans ta méconnaissance du Fortran.

Le mécanisme en question ne fait aucune référence à la place
disponible pour le type, mais à la précision et à l'étendue numérique
désirées.

SELECTED_INT_KIND(RANGE=r) retourne un KIND qui permet de représenter
des entiers au moins entre -10^r et 10^r

SELECTED_REAL_KIND(PRECISION=p,RANGE=r) retourne un KIND qui permet de
représenter des flottants au moins entre -10^r et 10^r, avec une
mantisse d'au moins p chiffres décimaux significatifs.



C'est exactement ce que je te disais (mais à force de couper les
réponses comme un goret, on ne s'y retrouve plus).

*Aucune* notion de place mémoire là-dedans. Tu racontes vraiment
n'importe quoi.



Relis-moi _attentivement_ (et aussi un bon bouquin sur le Fortran,
ça ne te ferait pas de mal).

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
JKB
Le 17-07-2009, ? propos de
Re: 32 vs. 64 bits [était Re: Windows sur le mainframe],
pehache-tolai ?crivait dans fr.comp.os.linux.debats :
On 17 juil, 17:27, JKB wrote:

> Quand on veut faire du dev bas niveau avec des accès hard, on ne le
> fait pas en Fortran, tout simplement. Il y a des langages plus
> adaptés, plutôt que de faire des contorsions qui n'est pas fait pour à
> la base.

        On s'en contrefiche. Le fait d'avoir des types de longueurs
différentes, même si ça te semble inutile, est quelque chose
d'intéressant



Ce n'est pas que ça me semble inutile par essence, c'est que ça ne
cadre pas avec ce qu'est le Fortran, et que ça ne peut que conduire à
faire du code avec des problèmes potentiels de portabilité.

Et pour en revenir aux questions d'alignements, en Fortran c'est au
compilateur de gérer ça, je ne vois pas l'intérêt de chercher à
aligner soi-même les données.



C'est pour cela qu'il y a un truc extrèmement casse-gueule qui
s'appelle EQUIVALENCE. Arrête, tu t'enfonces !

(et parfois d'indispensable comme lorsque tu dois
interfacer des bouts de C avec du Fortran).



En F2003 l'interfaçage C/Fortran est normalisé.



Pour les types simples. Comment fais-tu avec des structures (ou des
types derivés si on cause Fortran) ? L'alignement des types dérivés du
Fortran n'a aucune raison d'être celui des structures du C.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Stéphane CARPENTIER
pehache-tolai wrote:

J'ai prétendu une seule chose : que Gimp ne pouvait pas rendre les
mêmes services que Photoshop. C'est une réalité



En dehors de certains aspects très particuliers, c'est une réalité qui
n'est constatée que par ceux qui ne maîtrisent pas Gimp.

En d'autres termes, ce n'est pas parce qu'une personne ne sait pas faire
quelque chose avec Gimp que Gimp n'est pas capable de le faire.

et il n'y a pas besoin
de les utiliser *régulièrement* pour le constater.



Ben si, justement, c'est en maîtrisant les outils que tu peux parler de
leurs limitations.
Avatar
pehache-tolai
"JKB" a écrit dans le message de news:


Ce n'est pas que ça me semble inutile par essence, c'est que ça ne
cadre pas avec ce qu'est le Fortran, et que ça ne peut que conduire à
faire du code avec des problèmes potentiels de portabilité.

Et pour en revenir aux questions d'alignements, en Fortran c'est au
compilateur de gérer ça, je ne vois pas l'intérêt de chercher à
aligner soi-même les données.



C'est pour cela qu'il y a un truc extrèmement casse-gueule qui
s'appelle EQUIVALENCE. Arrête, tu t'enfonces !



La seule raison d'être d'EQUIVALENCE au départ est d'économiser la mémoire,
en utilisant les mêmes emplacements pour stocker alternativement dans les
mêmes emplacements mémoire des types différents quand c'est possible. Là non
plus rien à voir avec des questions d'alignement.


(et parfois d'indispensable comme lorsque tu dois
interfacer des bouts de C avec du Fortran).



En F2003 l'interfaçage C/Fortran est normalisé.



Pour les types simples. Comment fais-tu avec des structures (ou des
types derivés si on cause Fortran) ? L'alignement des types dérivés du
Fortran n'a aucune raison d'être celui des structures du C.



Effectivement. Et le seul truc raisonnable à faire est de se contenter de
passer des types simples entre C et Fortran.

--
pehache
http://pehache.free.fr/public.html
Avatar
Doug713705
Le Fri, 17 Jul 2009 10:19:46 +0200, Patrice Karatchentzeff a gâché de la
bande passante pour nous écrire :

En meme temps, Titanic est un des pires navets de la production
americaine.



C'est vrai : on ne voit même pas Hulk dans le film...



Bah si, mais il n'était pas encore colorié et il nageait tranquillement
dans le coin quand un espèce de bateau a tenté un accouplement sauvage.

Après, il s'est énervé¹ et on connaît le résultat.

¹ La scène a été coupée au montage car les effets 3D produits sous Linux
étaient "de merde".

--
@+
Doug - Linux user #307925 - Slamd64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Avatar
pehache-tolai
"JKB" a écrit dans le message de news:

Le 17-07-2009, ? propos de
Re: 32 vs. 64 bits [était Re: Windows sur le mainframe],
pehache-tolai ?crivait dans fr.comp.os.linux.debats :
On 17 juil, 17:12, JKB wrote:

Même sans ça. Tu peux très bien faire des hypothèses sur le
placement en mémoire de tes objets pour optimiser certains codes.



Et en général faire un code non portable.



Par forcément. J'ai des tas de situations comme celle-là avec du
code _parfaitement_ portable (et qui est un mélange entre du C, du F77
et du F9x).



C'est toi qui le dit, et je ne sais pas pourquoi mais je garde quelques
doutes.

Ce n'est pas parce que tu ne sais pas faire que ça n'est
pas possible.



Accidentellement un tel code peut être portable, ça dépend ce qu'on fait
avec les Y*n exactement.

Mais tant que tu n'auras pas montré le code en question, ou en tous cas
posté un exemple synthétique illustrant le genre d'optimisations que tu fais
avec les Y*n, on ne pourra pas confirmer ou pas que ce code est portable.


Fais ton choix :





http://www.idris.fr/su/Vectoriel/brodie/options_fortran.html







Pas de commentaire là-dessus ?



Et que veux tu que je te dise ? Que sur ce compilo un real*8 vaut un
real(kind=8) ? Dans le cas général, c'est faux. C'est juste vrai sur
cette implantation.



C'est pas ça. Le premier tableau montre un cas où un LOGICAL*1 occupe 4
octets. Ce qui est légèrement contradictoire avec tes affirmations qu'un
type Y*n va toujours occuper n octets.



Voilà : ça n'a *jamais* été normalisé. Et de fait écrire un code
en supposant par exemple que REAL*8 va occuper la même place
qu'un DOUBLE PRECISION est casse-gueule du point de vue
portabilité (cas vécu).





Si, en extension du Fortran-77, justement. J'ai un draft IEEE
là-dessus. C'est même pour cela que les extension VAX/VMS sont
portables d'un compilo à l'autre. Même le compilo Fortran 5.x de
Microsoft les comprenait, c'est dire !



Un draft ça veut dire ce que ça veut dire : as-tu un document final
adopté ?



J'ai dit un draft. Ce qui veut dire qu'assez de monde a bosser sur
ce point pour qu'il soit adopté,



Non : pour faire un draft. Ca ne dit si il a été adopté ou pas.

mais pas normalisé effectivement
(sinon on parlerait de _norme_ et non d'_extension_)



Une extension peut très bien normalisée (d'ailleurs il y en a). La seule
différence avec le texte principal du standard est que son implémentation
n'est pas requise pour qu'un compilo puisse se dire "conforme à la norme".


Et même en admettant que ça ait pu être normalisé en tant
qu'extension de F77, ça n'a pas été reconduit en F90 et au-delà. Et
F77 étant une norme obsolète, les extensions Y*n sont de fait
obsolètes aussi.



Les extensions Y*X sont encore marquées comme extensions _valides_
et non _obsolètes_ dans la référence Fortran2003 que j'ai sous les
yeux.



J'en doute fortement. Mais je ne trouve pas l'info pour le moment. Je me
renseigne.


Il y a longtemps que tu n'as pas vu un code Fortran, toi !







J'en fais juste tous les jours, ou presque.





Un type qui est infoutu de faire la différence entre LOGICAL(kind=n)
et LOGICAL*n devrait commencer par changer de métier.



J'ai juste écrit trop vite.

Mais celui qui affirme qu'un LOGICAL*1 occupe *toujours* 1 octet, il
devrait faire quoi ?



Exprime-toi clairement.



En clair tu es une buse.


Explique-moi plutôt quelles notions je mélange selon toi.



Non, à toi l'honneur. Tu prétends qu'un tableau n'est pas forcément
contigu.



En effet il ne l'est pas forcément depuis F90.

Je t'attends,



Pour ?

parce qu'il y a une subtilité qui semble
d'échapper.



Elle doit t'échapper aussi, sinon tu l'aurais déjà clairement explicitée.



Faux. J'ai la flemme de chercher dans la doc, mais j'ai au moins un
contre-exemple. INTEGER et LOGICAL (de base) sont de même longueur.
Quant à REAL, rien n'est dit.



Ben voyons :
http://www.fortran.com/F77_std/rjcnf0001-sh-4.html#sh-4

4.3 Integer Type
... An integer datum has one numeric storage unit in a storage
sequence.

4.4 Real Type
... A real datum has one numeric storage unit in a storage sequence.

4.5 Double Precision Type
... A double precision datum has two consecutive numeric storage
units in a storage sequence.

4.6 Complex Type
... A complex datum has two consecutive numeric storage units in a
storage sequence;

4.7 Logical Type
A logical datum has one numeric storage unit in a storage sequence.


J'ai plusieurs compilo pour lesquels la
longueur du REAL est supérieure à celle de l'INTEGER.



Un conseil : jette-les. Ou bien arrête de picoler.



Non, c'est toi qui mélange 'numeric storage' entier et flottant.



Le texte ne parle de "integer storage unit" ou de "real storage unit", mais
de "numeric storage unit", unité qui s'applique à tous les types. Je sais
que c'est de l'anglais, mais je pense que tu sais lire l'anglais.

Ce n'est pas parce que dans l'immense majorité des cas, on peut
assimiler les deux que c'est _toujours_ le cas.



Ce n'est pas une question de majorité des cas, c'est le texte du standard
Fortran.

Je te répète que j'ai
des compilos _certifiés_ F77 puisque c'est de ça qu'on parle qui ne se
comportent pas de la même façon (pour diverses raisons que je
n'expliciterai pas ici) :

integer -> 16 bits
real -> 32 bits
double precision -> 64 bits
logical -> 16 bits



La norme parle des emplacements mémoire, pas de la précision des types. Les
calculs sur entiers peuvent parfaitement être fait en 16 bits (parce que le
processeur travaille sur des entiers de 16 bits probablement), mais avec un
stockage mémoire sur 32 bits (les 16 bits supplémentaires n'étant pas
utilisés).

Maintenant si réellement ton compilo stocke les entiers sur 16 bits et les
réels sur 32 bits, et bien il n'est pas conforme à la norme tout simplement.
Ou alors il dispose de switchs de compilation pour avoir plusieurs modes, et
un de ces modes est conforme à la norme.


Tu t'avances aussi beaucoup en disant qu'un DOUBLE PRECISION est
deux fois plus long qu'un REAL. Enfin, c'est à toi de voir.



Voir ci-dessus. Ces histoires de place occupée par les différents
types, c'est quand même des notions de base en Fortran. Je suis plus
qu'étonné que tu ne les connaisses pas.



Je les connais parfaitement.



Oui, et tu viens de le prouver. Mouhahahaha....

Il existe des architectures tordues et
non orientées octet dans lesquelles ton double precision n'est pas
deux fois plus long que le real.



Si c'est le cas, c'est non conforme à la norme, c'est tout.

Mais même si l'unité de base n'est pas un octet, je ne vois pas ce qui
empêche d'avoir un type exactement deux fois plus long qu'un autre.


D'ailleurs je note que les extensions Y*n n'ont jamais été
normalisées alors qu'elles étaient très courantes. A la place ce
sont les Y(KIND=m) qui l'ont été, qui sont très différents des
Y*n comme tu l'as rappelé, et qui notamment ne disent *rien* sur
la place occupée en mémoire.





Ça, c'est parce que tu codes comme un pied. Il y a un mécanisme qui
te permet de trouver le type à balancer dans le KIND en fonction de
ta plage. Je te laisse là encore chercher.



Tu t'enfonces allègrement dans ta méconnaissance du Fortran.

Le mécanisme en question ne fait aucune référence à la place
disponible pour le type, mais à la précision et à l'étendue numérique
désirées.

SELECTED_INT_KIND(RANGE=r) retourne un KIND qui permet de représenter
des entiers au moins entre -10^r et 10^r

SELECTED_REAL_KIND(PRECISION=p,RANGE=r) retourne un KIND qui permet
de représenter des flottants au moins entre -10^r et 10^r, avec une
mantisse d'au moins p chiffres décimaux significatifs.



C'est exactement ce que je te disais



Non. Tu disais que dans les fonctionnalités des KIND, il y avait quelque
part la notion de place occupée en mémoire. Or pas du tout.

J'ai dit : " A la place ce sont les Y(KIND=m) qui l'ont été [...] qui
notamment ne disent *rien* sur la place occupée en mémoire."

Et tu as répondu : "Ça, c'est parce que tu codes comme un pied."

Donc toi qui ne code pas un pied, dis-moi où intervient la place occupée en
mémoire dans le mécanisme des KIND. J'attends avec impatience.

--
pehache
http://pehache.free.fr/public.html
Avatar
pehache-tolai
"Stéphane CARPENTIER" a écrit dans
le message de news: 4a60b641$0$309$
pehache-tolai wrote:

J'ai prétendu une seule chose : que Gimp ne pouvait pas rendre les
mêmes services que Photoshop. C'est une réalité



En dehors de certains aspects très particuliers,



Qui peuvent être très importants pour certains professionnels.

Que ce soit bien clair : pour le particulier lambda, même si il est amateur
très averti en retouche photo, Photoshop ne s'impose absolument pas.

c'est une réalité qui
n'est constatée que par ceux qui ne maîtrisent pas Gimp.

En d'autres termes, ce n'est pas parce qu'une personne ne sait pas
faire quelque chose avec Gimp que Gimp n'est pas capable de le faire.

et il n'y a pas besoin
de les utiliser *régulièrement* pour le constater.



Ben si, justement, c'est en maîtrisant les outils que tu peux parler
de leurs limitations.



Il n'y a pas que la liste des fonctionnalités à prendre en considération, il
y aussi l'efficacité globale de l'outil dans un flux de production.

Après il y a aussi des fonctionnalités que l'on peut reproduire dans
d'autres outils, mais au prix de manipulations plus nombreuses. Par exemple
le filtre "ton clairs tons foncés", que Gimp n'avait pas à une époque (je ne
sais pas si les versions actuelles l'ont, c'est juste pour illustrer) : avec
quelques calques de base on peut reproduire ce filtre, mais c'est beaucoup
plus simple et rapide de l'avoir tout-en-un.

--
pehache
http://pehache.free.fr/public.html