Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5056 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  8681  8682  8683  ..  26991  26992  26993  26994  26995  26996
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°1190323
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-09-2005 à 12:01:49  profilanswer
 

Reprise du message précédent :
par contre, si y'en a un qui se sent d'expliquer les complexités de std::vector<>.sort(), qu'il ne se gène surtout pas [:pingouino]

mood
Publicité
Posté le 02-09-2005 à 12:01:49  profilanswer
 

n°1190324
chrisbk
-
Posté le 02-09-2005 à 12:02:31  profilanswer
 

Harkonnen a écrit :

oué mais je suis loin d'avoir le niveau du Taz ou du bk par exemple [:joce]


 
bah le C++ j'ai des zones d'ombre. je connais bien les rouages interne vu que le code generé par mon compilo devait s'integrer dynamiquement avec celui de VS, donc vala, j'ai regarder le code generé par VS et copier sa facon de faire, j'ai appris plein de truc comme ca

n°1190326
nraynaud
lol
Posté le 02-09-2005 à 12:04:39  profilanswer
 

chrisbk a écrit :

Bin c'est surtout que t'as pas le choix
 
imagine :
 

Code :
  1. class A {
  2.   int a;
  3.   virtual void truc(){};
  4. }


 
representation mémoire  
 
[V-TABLE | a]
 
 
la V-table de A : [truc]
 
maintenant, la meme chose en B :
 
 

Code :
  1. class B {
  2.   int b;
  3.   virtual void truc2(){};
  4. }


 
representation mémoire  
 
[V-TABLE | b]
la V-table de B : [truc2]
 
bien

Code :
  1. class C : public A {
  2. int c;
  3. virtual void truc3();
  4. }


 
representation mémoire  
 
[V-TABLE | a | c]
la V-table de C : [truc | truc 3]
 
donc si on regarde que le debut de C on a bien A (y compris en regardant que le debut de la vtable)
 
maintenant si on fait :
 

Code :
  1. class C : public A, B{
  2. int c;
  3. virtual void truc3();
  4. }


 
faut bien qu'on retrouve dans notre representation mémoire a la fois A et a la fois B, vu que C est un A et C est un B
 
donc :
 
[V-TABLE1 | a | V-TABLE2 | b | c]
 
la V-table1 de C : [truc | truc 3]
la V-table2 de C : [truc2]
 
donc quand tu feras :  
 
C *c = new C();
B *b = (B *)c;
 
le compilot au niveau du cast fera :
 

Code :
  1. if (c!=NULL)
  2.   b = c + 8;
  3. else
  4. b = NULL;


 
lorsque tu feras  
 
c.truc2();
 
le compilo fera :

Code :
  1. mov ecx, c + 8; //patate le this 'C' dans ecx, decale de 8 pour retomber sur 'B'
  2. mov eax, [ecx]; //charge la v-table
  3. call [eax]; //appelle truc2


 
bon des fois ca mene a des delires complets
 
imaginons :

Code :
  1. class A {
  2. virtual void truc()=0;
  3. }
  4. class B {
  5. virtual void truc()=0;
  6. }
  7. class C : public A, B {
  8. virtual void truc() { .. };
  9. }


 
donc representation mémoire :
 
 
[V-TABLE1 | V-TABLE2]
 
la V-table1 de C : [truc]
la V-table2 de C : [truc]
 
zou.  

Code :
  1. C * c = new C();
  2. A *a = c; //cast avec decalage de 0
  3. b *b = c; //cast avec decale de 4
  4. a.truc();
  5. b.truc();


dans les deux cas on va appeler la meme fonction (C::truc) mais dans le deuxieme on l'appelera avec un this qui a été décalé de 4. D'ou memerde.
 
conclu : on fout un bouchon au niveau de C::B::truc
 
la V-table2 de C : [bouchon_pour_truc]
 
bouchon_pour_truc :


sub ecx,4;
jmp C::truc


 
vala


oui, c'est ce que j'avais en tête.
Mais il est possible d'avoir des représentation plus compactes (ce qui veut dire des casts plus lourds aussi), j'imagine qu'elles ne sont pas utilisées pour des raisons de perfs ?


---------------
trainoo.com, c'est fini
n°1190327
0x90
Posté le 02-09-2005 à 12:04:57  profilanswer
 

Harkonnen a écrit :

par contre, si y'en a un qui se sent d'expliquer les complexités de std::vector<>.sort(), qu'il ne se gène surtout pas [:pingouino]


 
On peut trouver ou le code de cette chose ? ( tout est bon quand on à du bordel à ranger :o )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1190328
Lam's
Profil: bas.
Posté le 02-09-2005 à 12:04:57  profilanswer
 

masklinn a écrit :

(PS: Chris >  :jap: hésite pas à poster des trucs pareils plus souvent :jap: )


Oui, enfin, c'est le B.A.BA ça. Il n'a abordé ni le dynamic_cast, ni le type_info. :o
 

n°1190329
chrisbk
-
Posté le 02-09-2005 à 12:04:58  profilanswer
 

masklinn a écrit :

Non, c'est la spec java qui dit ça
 
(PS: Chris >  :jap: hésite pas à poster des trucs pareils plus souvent :jap: )


 
exercice [:dawa]
 
ecrivez la representation mémoire de  
 

Code :
  1. class D : public C {
  2. int e;
  3. virtual void truc();
  4. virtual void prout();
  5. }


 
[:dawa]
 
 

n°1190332
boulax
Inserer phrase hype en anglais
Posté le 02-09-2005 à 12:05:09  profilanswer
 

Ah les experts se congratulent maintenant :)


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1190333
Lam's
Profil: bas.
Posté le 02-09-2005 à 12:05:46  profilanswer
 

Harkonnen a écrit :

par contre, si y'en a un qui se sent d'expliquer les complexités de std::vector<>.sort(), qu'il ne se gène surtout pas [:pingouino]


Bah c'est entre n.log(n) et 2n.log(n), donc mieux qu'un quicksort. Par contre, je sais plus quel est le tri utilisé généralement.
edit: c'est ça: http://www.nist.gov/dads/HTML/introspectiveSort.html


Message édité par Lam's le 02-09-2005 à 12:07:56
n°1190335
boulax
Inserer phrase hype en anglais
Posté le 02-09-2005 à 12:06:56  profilanswer
 

Note: au moins c'est pas ici que le programmeur moyen viendra chopper la grosse tête [:dawa]
 
 
Vite Stiffler, revient [:pingouino]


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1190336
chrisbk
-
Posté le 02-09-2005 à 12:07:54  profilanswer
 

Lam's a écrit :

Oui, enfin, c'est le B.A.BA ça. Il n'a abordé ni le dynamic_cast, ni le type_info. :o


 
bah le dynamic cast, non j'ai pas pu aller voir [:god] dans mon compilo j'avais une variable membre dans la classe de base 'Object' qui decrivait le type. Donc mon dynamic cast allait regarder cette variable, le type de destination, et faisait le calcul pour le deplacement (ou lancait une exception si c'etait pas possible)
 
type_info, pareil
 
nraynaud > bah si y'a plus compact, bin je sais pas [:spamafote]

mood
Publicité
Posté le 02-09-2005 à 12:07:54  profilanswer
 

n°1190337
Raistlin M​ajere
i bouh at you !
Posté le 02-09-2005 à 12:09:13  profilanswer
 

uriel a écrit :

ca c'est du spam de qualitaÿ:
 

Citation :


Hello,
 
We are USA electronics company.
We need cooperation with you.
 
You can earn some cash for the small help in one matter.
 
Please contact us only by this URL for more details: http://finance-corporation.com/
 
Thanks,
Alex Butheman
Manager.

 
 [:god]


g eu le même mail [:pingouino]


---------------
Слава Україні  Feedback
n°1190338
nraynaud
lol
Posté le 02-09-2005 à 12:09:41  profilanswer
 

chrisbk a écrit :

notez que je suppose que java/c# font la meme chose pour l'heritage avec interface multiple


non, pas du tout, puisqu'il sont *obligés* d'hériter (ou d'avoir) des implémentations concrètes des méthodes.
 
Il n'existe donc qu'un seul pointeur dans l'entête de l'objet, il pointe vers une vtable unique.
 
quant aux champs, ils sont simplement accolés comme en C++ par ordre d'arrivée de la hiérarchie (plus vieux en tête), l'index du champs dans la méthode est donc toujours juste même quand tu hérites (puis que quand tu hérites, tu rajoutes aprsè).


---------------
trainoo.com, c'est fini
n°1190340
Lam's
Profil: bas.
Posté le 02-09-2005 à 12:09:59  profilanswer
 

chrisbk a écrit :

bah le dynamic cast, non j'ai pas pu aller voir [:god] dans mon compilo j'avais une variable membre dans la classe de base 'Object' qui decrivait le type. Donc mon dynamic cast allait regarder cette variable, le type de destination, et faisait le calcul pour le deplacement (ou lancait une exception si c'etait pas possible)


Pareil. J'ai réimplémenté un système de Métaclasses (comme les CRuntimeClass de MFC).
J'ai fait divers essais (donc la création d'une matrice statique pour transformer un IsTypeOf() en simple table-lookup, et c'était pas plus efficace que de regarder le chaînage des RuntimeClasses. J'étais déçu, ça avait représenté 2 jours de boulot pour rien. :/

n°1190341
chrisbk
-
Posté le 02-09-2005 à 12:11:11  profilanswer
 

nraynaud a écrit :

non, pas du tout, puisqu'il sont *obligés* d'hériter (ou d'avoir) des implémentations concrètes des méthodes.
 
Il n'existe donc qu'un seul pointeur dans l'entête de l'objet, il pointe vers une vtable unique.


 
Ca me parait fort peu credible
 

n°1190342
nraynaud
lol
Posté le 02-09-2005 à 12:12:22  profilanswer
 

chrisbk a écrit :

Ca me parait fort peu credible


[:pingouino] et pourtant ...


---------------
trainoo.com, c'est fini
n°1190345
0x90
Posté le 02-09-2005 à 12:14:05  profilanswer
 

Lam's a écrit :

Bah c'est entre n.log(n) et 2n.log(n), donc mieux qu'un quicksort. Par contre, je sais plus quel est le tri utilisé généralement.
edit: c'est ça: http://www.nist.gov/dads/HTML/introspectiveSort.html


 
Euh, question de débutant, mais dans les calculs de complexités on est pas censé viré les termes multiplicatifs constants, et dans ce cas la n.log(n) == 2n.log(n) ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1190346
stiffler
Lâche mon profil putain ! :o
Posté le 02-09-2005 à 12:16:20  profilanswer
 

boulax a écrit :

Note: au moins c'est pas ici que le programmeur moyen viendra chopper la grosse tête [:dawa]
 
 
Vite Stiffler, revient [:pingouino]


Prout ! [:dawa]
 
Moi j'ai fait un top.close() en JS ! [:dawa]

n°1190347
skeye
Posté le 02-09-2005 à 12:17:18  profilanswer
 

stiffler a écrit :

Moi j'ai fait un top.close() en JS ! [:dawa]


 
et moi je me fais chier à faire de la mise en page de formulaires...heureusement qu'il y a le web pour faire redescendre le niveau au ras des paquerettes...[:pingouino]


---------------
Can't buy what I want because it's free -
n°1190349
stiffler
Lâche mon profil putain ! :o
Posté le 02-09-2005 à 12:18:59  profilanswer
 

skeye a écrit :

et moi je me fais chier à faire de la mise en page de formulaires...heureusement qu'il y a le web pour faire redescendre le niveau au ras des paquerettes...[:pingouino]


ouai ! [:dawa]
 
Avec ça et l'action script, on est sauvé ! [:zytrafumay]

n°1190350
fabien
Vive la super 5 !
Posté le 02-09-2005 à 12:19:17  profilanswer
 

salut tout le monde :hello:
 
est ce qu'il y a un francais ici qui s'y connais en entreprise individuelle ? :)
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1190351
Lam's
Profil: bas.
Posté le 02-09-2005 à 12:19:27  profilanswer
 

0x90 a écrit :

Euh, question de débutant, mais dans les calculs de complexités on est pas censé viré les termes multiplicatifs constants, et dans ce cas la n.log(n) == 2n.log(n) ?


En général, oui.  
 
Mais ici, c'est pour indiquer que tu as juste un facteur de 1 à 2 entre le plus rapide et le plus lent (surtout que en général, on s'attend à du [n.log(n); n²]  
Le facteur constante k étant connu, autant le donner.

n°1190352
chrisbk
-
Posté le 02-09-2005 à 12:21:39  profilanswer
 

nraynaud a écrit :

[:pingouino] et pourtant ...


 
bin si t'as ca :

Code :
  1. interface I1 {
  2. void machin();
  3. }
  4. interface I2 {
  5. void machin2();
  6. }
  7. class A  implements I1, I2 {
  8. void machin() {..}
  9. void machin2() {..}
  10. }
  11. A a = new A();
  12. I2 i2 = (I2) a;


 
tu representes comment en mémoire A, et comment le cast est fait pour i2 :??:
 
t'as un offset pour decaler la v-table qqpart ?


Message édité par chrisbk le 02-09-2005 à 12:23:34
n°1190353
Lam's
Profil: bas.
Posté le 02-09-2005 à 12:21:51  profilanswer
 

M'enfin, tout ça pour dire que pour une fois, c'est une annonce sans prétention qui se révèle assez alléchante (je vous en dirait plus lorsque j'en saurais plus).  
 
Alors que la semaine dernière, j'ai répondu à une annonce où je connaissais 14 buzzwords sur les 17 demandés, et au final, c'est rien d'autre que faire de la config et du pseudo-code de mes couilles de merde (même du VB serait plus intéressant).

n°1190356
0x90
Posté le 02-09-2005 à 12:26:02  profilanswer
 

Lam's a écrit :

En général, oui.  
 
Mais ici, c'est pour indiquer que tu as juste un facteur de 1 à 2 entre le plus rapide et le plus lent (surtout que en général, on s'attend à du [n.log(n); n²]  
Le facteur constante k étant connu, autant le donner.


 
Aok :jap:


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1190357
masklinn
í dag viðrar vel til loftárása
Posté le 02-09-2005 à 12:26:09  profilanswer
 

skeye a écrit :

et moi je me fais chier à faire de la mise en page de formulaires...heureusement qu'il y a le web pour faire redescendre le niveau au ras des paquerettes...[:pingouino]


En même temps, la mise en page de formulaires en tableless et compatible avec >99% des internautes ça fait partie des arcanes :o
 
edit:

Harkonnen a écrit :

pour info, on appelle ça un langage touring complete.
bon sinon, je te dis mon propre bilan : topicalacon, fermeture


[:petrus75]
 
Toureingue complite tu veux dire [:petrus dei]
 
Sinon j'ai une 407 Touring, ça marche [:petrus dei]
http://www.ulrclassic.com.au/graphics/Showroom/407_tou/407_Touring_front_quarter.jpg
Elle est vachement complète comme bagnole [:petrus75]


Message édité par masklinn le 02-09-2005 à 12:35:33

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1190361
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-09-2005 à 12:40:23  profilanswer
 

fabien a écrit :

salut tout le monde :hello:
 
est ce qu'il y a un francais ici qui s'y connais en entreprise individuelle ? :)


tu veux savoir quoi ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1190363
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-09-2005 à 12:43:52  profilanswer
 

masklinn a écrit :


Toureingue complite tu veux dire [:petrus dei]
 


quoi ? [:heink]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1190366
lorill
Posté le 02-09-2005 à 12:47:28  profilanswer
 


bah Turing, pas touring :o

n°1190367
R3g
fonctionnaire certifié ITIL
Posté le 02-09-2005 à 12:47:30  profilanswer
 


je pense qu'il se gausse de ton ignorance quant à l'orthographe de "Turing"


---------------
Au royaume des sourds, les borgnes sont sourds.
n°1190369
0x90
Posté le 02-09-2005 à 12:50:02  profilanswer
 

J'ai appris récemment que les machins ou on simule de la vie ( les ptits programmes avec des carrés rouge et bleu qui bougent tout seuls selon une règle simpl ) étaient Turing complete d'ailleurs, le code est peu dense, mais c'est amusant.
 
</blog>


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1190370
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-09-2005 à 12:51:42  profilanswer
 

lorill a écrit :

bah Turing, pas touring :o


 

R3g a écrit :

je pense qu'il se gausse de ton ignorance quant à l'orthographe de "Turing"


 
ah oui j'ai pas fait gaffe [:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1190371
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-09-2005 à 12:54:29  profilanswer
 

0x90 a écrit :

J'ai appris récemment que les machins ou on simule de la vie ( les ptits programmes avec des carrés rouge et bleu qui bougent tout seuls selon une règle simpl ) étaient Turing complete d'ailleurs, le code est peu dense, mais c'est amusant.
 
</blog>


quand tu vois que le brainfuck est sensé être un langage Turing-Complete, plus rien ne m'étonne [:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1190373
fabien
Vive la super 5 !
Posté le 02-09-2005 à 12:57:36  profilanswer
 

Harkonnen a écrit :

tu veux savoir quoi ?


repondu en mp :o
 
s'il y en a d'autre qui s'y connaissent en entreprise individuelle, dite moi le :jap:


---------------
Découvre le HFRcoin ✈ - smilies
n°1190382
the real m​oins moins
Posté le 02-09-2005 à 13:20:32  profilanswer
 

chrisbk, tu me fais peur.
 
belges > je risque quoi pour un jour de retard pour la remise de mes machins d'impots contributions trucs, là ?

n°1190383
WhatDe
Posté le 02-09-2005 à 13:20:45  profilanswer
 

Cookie !
 
http://img73.imageshack.us/img73/4720/nicoharkouncensoredfull4wm.jpg


---------------
[:whatde]
n°1190384
Djode
Et hop !
Posté le 02-09-2005 à 13:24:35  profilanswer
 

salut :hello:
 
rentrée c'est le bad :/


Message édité par Djode le 02-09-2005 à 13:24:43
n°1190386
masklinn
í dag viðrar vel til loftárása
Posté le 02-09-2005 à 13:26:44  profilanswer
 

Harkonnen a écrit :

quand tu vois que le brainfuck est sensé être un langage Turing-Complete, plus rien ne m'étonne [:petrus75]


moo et whitespace aussi sont turing-complete [:spamafote]  
 
Si je me plante pas, même XSL est turing complete, donc bon voila quoi [:pingouino]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1190388
WhatDe
Posté le 02-09-2005 à 13:26:54  profilanswer
 

Si je comprend bien je suis le seul à être encore en vacances [:kbchris]


---------------
[:whatde]
n°1190389
fabien
Vive la super 5 !
Posté le 02-09-2005 à 13:27:23  profilanswer
 

prkoi tout le monde dis ca dans ce topic? j'ai raté un truc ? [:dawa]


Message édité par fabien le 02-09-2005 à 13:27:36

---------------
Découvre le HFRcoin ✈ - smilies
n°1190400
nraynaud
lol
Posté le 02-09-2005 à 13:52:55  profilanswer
 

0x90 a écrit :

Euh, question de débutant, mais dans les calculs de complexités on est pas censé viré les termes multiplicatifs constants, et dans ce cas la n.log(n) == 2n.log(n) ?


en grand O, si, mais pas en petit o.
 
et puis des fois on les garde, dans les comparaisons, notamment.


---------------
trainoo.com, c'est fini
n°1190403
nraynaud
lol
Posté le 02-09-2005 à 13:57:07  profilanswer
 

chrisbk a écrit :

bin si t'as ca :

Code :
  1. interface I1 {
  2. void machin();
  3. }
  4. interface I2 {
  5. void machin2();
  6. }
  7. class A  implements I1, I2 {
  8. void machin() {..}
  9. void machin2() {..}
  10. }
  11. A a = new A();
  12. I2 i2 = (I2) a;


 
tu representes comment en mémoire A, et comment le cast est fait pour i2 :??:
 
t'as un offset pour decaler la v-table qqpart ?


tu as une Map interface->méthode (concrètement ptr sur l'interface, numéro de méthode) dans chaque type concret.
 
mais avec la spécialisation monomorphe, on élimine 70% des cas d'utilisation de cette table.
on réajuste jamais this dans ces langages, c'est tout l'enjeu d'avoir viré l'héritage multiple.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  8681  8682  8683  ..  26991  26992  26993  26994  26995  26996

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)