Je suis d'accord. Et je plussoie, mais principalement parce que de toutes les personnes qui ont écrit dans ce journal, tu es la première personne à avoir correctement écrit « tort ». Tu m'as redonné confiance en la race humaine. +1 :-P
Ben écoute, oui ma banque pue sans doute, tout ça, mais en pratique, j'ai beau avoir un zouli certificat électronique obtenu depuis mon pc sous linux avec java & co, ben une fois ledit certificat obtenu, j'ai jamais réussi à virer de l'argent depuis mon compte français vers un autre compte car pour une raison qui m'est inconnue, le module java fonctionne mal dans ma version « officielle » de FF fournie par Ubuntu. Ledit certificat n'est délivré que pour cette machine précisément avec cet OS (et j'ai eu la joie de découvrir après que le site m'a dit « yabon » que linux n'était pas supporté), et pour faire révoquer le certificat depuis les USA, tout ça, c'est relou. Alors quand j'ai besoin de donner des sous depuis mon compte français à d'autres gens en France, je fais péter le chéquier et la poste US.
« Je ne suis pas convaincu que d'avoir porté la GPL devant un tribunal est desservi la cause du libre... bien au contraire ! »
Ben justement. Retirer le bouquin de son site et persister à dire « nan mais j'ai raison, et même pas peur d'abord ! » ça fait un peu faux cul tu penses pas ? Et surtout, s'il est si engagé que ça, il faudrait peut-être qu'il aille jusqu'au bout et soit prêt à aller au tribunal défendre ses idées/idéaux.
« C’est quoi la différence entre « imprévisible » (Java) et « ça dépend » (C++) ? La même qu’entre un bon et un mauvais chasseur ? »
Quelque soit le langage, si celui-ci autorise des accès concurrents non-protégés, le résultat est nécessairement aléatoire. Ce n'est pas obligatoirement un « mauvais » résultat (certains algorithmes en tirent même parti), mais généralement ce n'est pas ce qu'on recherche.
Ceci étant dit:
Le modèle mémoire de Java (JMM) spécifie que si tu codes sans passer par des outils de synchro (locks, utilisation de volatile, etc), alors le comportement à l'exécution est indéfini. Si tu utilises les mécanismes de synchro, alors tu auras une exception à l'exécution (ou peut-être même une tape sur la main à la compil si tu as des outils intelligents).
Dans le cas d'une utilisation correcte des méthodes de synchronisation, alors le JMM garantit une exécution suivant une politique appelée « sequential consistency » (SC). En gros, Du point de vue du thread qui s'exécute, l'ordre des instructions (au sens instruction load ou store dans la jvm) doit être celui spécifié dans le programme original, et toute écriture sur un des objets mémoire que le thread manipule (lecture ou écriture) doit lui apparaître selon l'ordre total de tous les threads qui s'exécutent en même temps.
Je parle ici de programmes dits « data race free » i.e. qui ont des accès synchronisés aux variables partagées.
Java a toujours eu un modèle mémoire concernant les accès concurrents, mais celui-ci est cassé/buggé. En 2004 une refonte du JMM a été commencée (et appliquée à partir de Java 1.5 si je me souviens bien).
Le cas de C++ diffère, dans le sens où les threads ne faisaient pas partie du langage initialement. La prochaine norme va les intégrer au langage, ce qui signifie que C++ doit prendre position sur la façon dont les opérations en mémoire doivent être perçues par le programmeur et à l'exécution.
C++MM suit plus ou moins le même modèle (SC pour les programmes sans accès concurrents aux données), avec quelques subtilités où ils précisent explicitement certains comportements indéfinis ou dépendants de l'implémentation (pour autoriser certaines optimisations impossibles dans le cas SC pur).
J'ai l'impression que ça change beaucoup en fonction du crime alors, parce que mes taupes (bon OK, ma taupe) au palais de justice de Paris ont tendance à dire que la reconnaissance de culpabilité peut même t'être plus préjudiciable (au moins en cas d'accusation de meurtre ...).
« La justice n'aime pas qu'on se foute de sa gueule, et condamne plus lourdement une personne qui ne reconnait pas les faits qu'une personne qui fait son mea-coulpa »
Aux USA peut-être avec le plaider coupable etc. En France, non.
« Le fait que le C soit un langage très très très casse-gueule pour les "noobs", c’est pas une nouveauté hein… »
Je ne dis pas ça non plus. Je répondais juste au monsieur en haut qui disait que même un noob sait qu'il existe size_t. Peut-être bien, mais il ne comprend pas forcément (en fait la plupart du temps c'est même certain) comment sont définis les types, sur quels intervalles, pourquoi size_t est utilisé, etc.
« [troll]
D’ailleurs, c’est pas ça le principe d’un noob fraîchement diplômé, de se charger du code des projets Java-bateau, pour que les personnes plus expérimentées puissent se concentrer sur de vrais projets ?
[/troll] »
Malheureusement si, et ça me désole. C'est pas comme si faire des trucs immondes en Java c'était si dur que ça (je le sais bien, j'ai pratiqué en tant que stagiaire). La seule différence c'est que Java c'est censé être « bloated » de toute manière, donc y'a qu'à rajouter de la RAM au serveur, alors que C c'est censé aller vite donc si ça va pas assez vite, c'est le programmeur qui est en cause.
... Alors qu'en pratique un bon dév Java (disons un « expert ») devrait finir par connaître plutôt bien la JVM qu'il utilise, et donc savoir comment son code se traduit en bytecode, etc... Et donc, avoir une connaissance pointue d'une machine virtuelle là où en C on a une machine « concrète ».
Le problème n'est pas lié à la possibilité d'allouer 2 Gio. Bien sûr que c'est faisable. Le problème vient du fait qu'allouer 2 Gio peut prendre un sacré bout de temps à l'exécution. Je te laisse le soin de le faire proprement:
#define TWO_GIGS 2UL * (1UL << 30)
int *array = malloc(TWO_GIGS);
for (size_t i = 0; i < TWO_GIGS; ++i)
array[i] = i; /* to force memory to be allocated */
foo(array);
Définis ensuite foo() quelque part dans une autre unité de compilation, pour être sûr que gcc ne va pas simplifier le code (ou compile avec -O0). Bref. Sur mon super core i7 au boulot, effectivement je risque d'aller très vite. Sur mon Core 2 de l'ancien boulot, ça va prendre un moment. Je le sais d'expérience.
Non. Les gros noobs ne savent même pas forcément ce qu'est size_t, parce que leur prof fait comme 90% des profs et leur fait faire
int i;
...
for (i = 0; i < n; i++)
...
J'ai enseigné le C système à des élèves de L3, et je crois bien que j'étais le premier à leur faire remarquer qu'il y avait d'autres types entiers (size_t, long, unsigned...) que le simple type int.
pBpG t'as déjà répondu sur le fait que lorsque tu as effectivement peu de mémoire vive sur ta machine (donc à l'époque des 286,386 etc), avoir un tableau qui permettait d'indexer l'intégralité de la mémoire pour un coût relativement peu important (malloc(640*1024) par ex) ça avait son sens.
malloc(INT_MAX) n'alloue pas toute la mémoire, juste un nombre maximal de cases qui peuvent stocker de l'information dans un tableau.
« Je ne pense pas que le comité qui s'occupe du C++ puisse s'assoir facilement sur GCC »
Tu veux rire j'espère ? Des compilateurs C++ y'en a tout un paquet (icc, les compilos de PGI, ceux de Sun, etc.). GCC a mis un sacré bout de temps de passer de « GNU C Compiler » à « GNU Compiler Collection ». Peut-être qu'il y a des dév de GCC dans le comité de standardisation de C++, mais qu'ils soient derrière GCC, ou un autre compilateur n'est absolument pas pertinent. Pas plus pertinent qu'être dev pour un autre compilateur en tout cas.
déposer un brevet, quelque part, c'est prétendre et affirmer qu'on a inventé quelque chose.
Euh, dans un autre domaine (disons au hasard, la recherche), on doit souvent introduire une section « travaux voisins » (related work) où l'on parle de ce qu'on fait les autres petits camarades chercheurs, et où l'on explique en quoi ce que l'on a fait est différent. Bon, ben dans ce genre d'article on a tendance à écrire des trucs du genre « nous avons cherché partout, mais à notre connaissance, personne n'a jamais réellement abordé le problème du trilili dans le schmoll » (quand effectivement on ne trouve rien concernant ledit problème dans la littérature). On fait confiance au chercheur pour avoir réellement cherché dans l'existant.
Tout ça pour dire quoi ? Ben que j'aime pas les brevets, certes, mais que pour le coup je suis d'accord avec pBpG, dans le sens où si le système existe, alors autant en faire qq chose d'efficace. Un bureau de validation des brevets est aussi censé être là pour vérifier que ceux-ci sont ... euh, valides. Quelque part, tu paies aussi pour ce service (pas juste l'enregistrement).
Une amie travaillais du côté de Saint-Denis, à la fac. Au début elle s'habillait comme d'habitude (ie : elle pouvait mettre des jupes, des bottes qui allaient avec, ou bien un ensemble, ou... bref, elle s'habillait de façon féminine</> -- la jupe n'étant qu'une façon de montrer sa féminité). Après moultes apostrophes, insultes en tous genres (dont des « pute » ou « salope » récurrents), elle a fini par faire comme toutes les autres filles là-bas : jeans, sweat-shirts, baskets. Trop peur de finir aggressée plus que par des mots.
Pourtant, elle est féministe, tout ça, tout ça. Sauf que le féminisme au quotidien dans un univers non-seulement machiste, mais réellement violent, à plusieurs niveaux, quand on se sent seul, ben... On l'oublie et on pense d'abord à passer la journée de façon à rentrer chez soi intact.
Mmmh, en effet il semble que « consistent » en Anglais se traduise par « cohérent » en Français, mais ça me gêne pas mal, parce qu'il y a une différence en Anglais entre « consistent » et « coherent ». Et d'ailleurs j'ai souvenir pendant mes études, lors d'un cours de prog parallèle, d'avoir eu une looongue explication de la différence entre « consistence » et cohérence (typiquement, je peux avoir une cohérence de mes caches dans un système multicœur/multiprocesseur, mais pas de consistence concernant la mémoire globale).
« Si l'admin du système décide de faire tourner ce nouveau benchmark (en plus de linpack), cela correspond à un budget qu'il doit justifier auprès de son chef. »
Justement, ce n'est pas le sysadmin qui décide de lancer le benchmark. Le plus souvent il s'agit du chef qui veut pouvoir crâner devant les petits camarades au top 500. Ensuite, la plupart des centres de calcul ne sont pas à louer. Ils sont achetés pour résoudre des problèmes de simulation liés à l'organisation qui a fait l'achat (en France on parlerait donc de Peugeot/Renault pour la simulation d'accidents sur leurs voitures, ou bien du CEA pour simuler tout un tas de machins liés au nucléaire, etc.).
Ça dépend ce que tu appelles un coût. Un supercalculateur en lui-même consomme ce qu'il a coûté en environ cinq ans de service. D'autre part, dans mes souvenirs, un nœud de calcul fait souvent dans les 500 cœurs, du coup ça consomme « 500 heures » de calcul, même si tu n'utilises pas tous les cœurs (ie on ne peut pas réserver en-dessous de 500 cœurs).
Ensuite, ce genre de benchmark ne « coûte » rien dans le sens où il est effectué par les propriétaires du cluster.
Je connais parfaitement les raisons de RMS pour dire GNU/Linux, merci bien. Maintenant, je rappelle que 1/ J'ai annoncé le troll :-), et 2/ On n'est pas obligé d'être d'accord avec lui, et être obligé d'utiliser SES termes parce que ça LUI fait plaisir, ça me gêne -- pour être clair, s'il y avait consensus, je grognerais dans mon coin mais je suivrai le mouvement (une fois une terminologie acceptée, autant faire avec). Mais le truc c'est qu'il n'y a PAS de consensus. :-)
Quant à Open Source Vs Logiciel Libre/Free Software, je disais justement que je comprenais qu'on puisse vouloir bien marquer la différence, avec moult détails.
Je te conseille de lire « Coders at Work », avec une des explications sur les origines d'Emacs. Apparemment, Emacs a d'abord été construit au-dessus de la ligne de commande disponible sur les machines de l'époque, ce qui explique la raison-même du format des raccourcis (ah, et on apprend que si oui, RMS a bien développé et maintenu Emacs très tôt et pendant un bon moment, ce n'est pas lui qui en est à l'origine).
[^] # Re: Je soutiens Florent Gallaire
Posté par lasher . En réponse au journal "J'ai raison, mais je ne ferai pas valider mon raisonnement". Évalué à 4.
[^] # Re: Je soutiens Florent Gallaire
Posté par lasher . En réponse au journal "J'ai raison, mais je ne ferai pas valider mon raisonnement". Évalué à 7.
(et vite vite ----> [ ])
[^] # Re: Quelles sont les plus par rapport au site de sa banque ?
Posté par lasher . En réponse au journal KissCount v0.1. Évalué à 2.
[^] # Re: Quelles sont les plus par rapport au site de sa banque ?
Posté par lasher . En réponse au journal KissCount v0.1. Évalué à 1.
[^] # Re: Je soutiens Florent Gallaire
Posté par lasher . En réponse au journal "J'ai raison, mais je ne ferai pas valider mon raisonnement". Évalué à 6.
Ben justement. Retirer le bouquin de son site et persister à dire « nan mais j'ai raison, et même pas peur d'abord ! » ça fait un peu faux cul tu penses pas ? Et surtout, s'il est si engagé que ça, il faudrait peut-être qu'il aille jusqu'au bout et soit prêt à aller au tribunal défendre ses idées/idéaux.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
Quelque soit le langage, si celui-ci autorise des accès concurrents non-protégés, le résultat est nécessairement aléatoire. Ce n'est pas obligatoirement un « mauvais » résultat (certains algorithmes en tirent même parti), mais généralement ce n'est pas ce qu'on recherche.
Ceci étant dit:
Le modèle mémoire de Java (JMM) spécifie que si tu codes sans passer par des outils de synchro (locks, utilisation de volatile, etc), alors le comportement à l'exécution est indéfini. Si tu utilises les mécanismes de synchro, alors tu auras une exception à l'exécution (ou peut-être même une tape sur la main à la compil si tu as des outils intelligents).
Dans le cas d'une utilisation correcte des méthodes de synchronisation, alors le JMM garantit une exécution suivant une politique appelée « sequential consistency » (SC). En gros, Du point de vue du thread qui s'exécute, l'ordre des instructions (au sens instruction load ou store dans la jvm) doit être celui spécifié dans le programme original, et toute écriture sur un des objets mémoire que le thread manipule (lecture ou écriture) doit lui apparaître selon l'ordre total de tous les threads qui s'exécutent en même temps.
Je parle ici de programmes dits « data race free » i.e. qui ont des accès synchronisés aux variables partagées.
Java a toujours eu un modèle mémoire concernant les accès concurrents, mais celui-ci est cassé/buggé. En 2004 une refonte du JMM a été commencée (et appliquée à partir de Java 1.5 si je me souviens bien).
Le cas de C++ diffère, dans le sens où les threads ne faisaient pas partie du langage initialement. La prochaine norme va les intégrer au langage, ce qui signifie que C++ doit prendre position sur la façon dont les opérations en mémoire doivent être perçues par le programmeur et à l'exécution.
C++MM suit plus ou moins le même modèle (SC pour les programmes sans accès concurrents aux données), avec quelques subtilités où ils précisent explicitement certains comportements indéfinis ou dépendants de l'implémentation (pour autoriser certaines optimisations impossibles dans le cas SC pur).
[^] # Re: Bien obligé non ?
Posté par lasher . En réponse au journal "J'ai raison, mais je ne ferai pas valider mon raisonnement". Évalué à 6.
[^] # Re: Bien obligé non ?
Posté par lasher . En réponse au journal "J'ai raison, mais je ne ferai pas valider mon raisonnement". Évalué à 1.
Aux USA peut-être avec le plaider coupable etc. En France, non.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
Je ne dis pas ça non plus. Je répondais juste au monsieur en haut qui disait que même un noob sait qu'il existe size_t. Peut-être bien, mais il ne comprend pas forcément (en fait la plupart du temps c'est même certain) comment sont définis les types, sur quels intervalles, pourquoi size_t est utilisé, etc.
« [troll]
D’ailleurs, c’est pas ça le principe d’un noob fraîchement diplômé, de se charger du code des projets Java-bateau, pour que les personnes plus expérimentées puissent se concentrer sur de vrais projets ?
[/troll] »
Malheureusement si, et ça me désole. C'est pas comme si faire des trucs immondes en Java c'était si dur que ça (je le sais bien, j'ai pratiqué en tant que stagiaire). La seule différence c'est que Java c'est censé être « bloated » de toute manière, donc y'a qu'à rajouter de la RAM au serveur, alors que C c'est censé aller vite donc si ça va pas assez vite, c'est le programmeur qui est en cause.
... Alors qu'en pratique un bon dév Java (disons un « expert ») devrait finir par connaître plutôt bien la JVM qu'il utilise, et donc savoir comment son code se traduit en bytecode, etc... Et donc, avoir une connaissance pointue d'une machine virtuelle là où en C on a une machine « concrète ».
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
#define TWO_GIGS 2UL * (1UL << 30)
int *array = malloc(TWO_GIGS);
for (size_t i = 0; i < TWO_GIGS; ++i)
array[i] = i; /* to force memory to be allocated */
foo(array);
Définis ensuite foo() quelque part dans une autre unité de compilation, pour être sûr que gcc ne va pas simplifier le code (ou compile avec -O0). Bref. Sur mon super core i7 au boulot, effectivement je risque d'aller très vite. Sur mon Core 2 de l'ancien boulot, ça va prendre un moment. Je le sais d'expérience.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
int i;
...
for (i = 0; i < n; i++)
...
J'ai enseigné le C système à des élèves de L3, et je crois bien que j'étais le premier à leur faire remarquer qu'il y avait d'autres types entiers (size_t, long, unsigned...) que le simple type int.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
malloc(INT_MAX) n'alloue pas toute la mémoire, juste un nombre maximal de cases qui peuvent stocker de l'information dans un tableau.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
Tu es sûr de toi ? Si je regarde la norme, je ne vois qu'une relation d'ordre entre les types, et c'est tout:
char <= short <= int <= long
sizeof(char) == 1 (même quand un char tient sur 16 bits)
Si ensuite tu rajoutes la norme POSIX (toujours dans mes souvenirs), alors
sizeof(long) == sizeof(mot mémoire) == sizeof(void *)
sizeof(int) >= 32 bits
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 5.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 4.
Tu veux rire j'espère ? Des compilateurs C++ y'en a tout un paquet (icc, les compilos de PGI, ceux de Sun, etc.). GCC a mis un sacré bout de temps de passer de « GNU C Compiler » à « GNU Compiler Collection ». Peut-être qu'il y a des dév de GCC dans le comité de standardisation de C++, mais qu'ils soient derrière GCC, ou un autre compilateur n'est absolument pas pertinent. Pas plus pertinent qu'être dev pour un autre compilateur en tout cas.
[^] # Re: Te bile pas
Posté par lasher . En réponse au journal Pourquoi réécrire LinuxFr.org ?. Évalué à 2.
Que pour ça LISP le fait déjà très bien ?
----> [ ]
(en plus j'aime bien ruby...)
[^] # Re: Et le choix de Ruby on Rails ?
Posté par lasher . En réponse au journal Pourquoi réécrire LinuxFr.org ?. Évalué à 2.
[^] # Re: EFF au secours !
Posté par lasher . En réponse au journal De la déchéance des brevets. Évalué à 2.
Euh, dans un autre domaine (disons au hasard, la recherche), on doit souvent introduire une section « travaux voisins » (related work) où l'on parle de ce qu'on fait les autres petits camarades chercheurs, et où l'on explique en quoi ce que l'on a fait est différent. Bon, ben dans ce genre d'article on a tendance à écrire des trucs du genre « nous avons cherché partout, mais à notre connaissance, personne n'a jamais réellement abordé le problème du trilili dans le schmoll » (quand effectivement on ne trouve rien concernant ledit problème dans la littérature). On fait confiance au chercheur pour avoir réellement cherché dans l'existant.
Tout ça pour dire quoi ? Ben que j'aime pas les brevets, certes, mais que pour le coup je suis d'accord avec pBpG, dans le sens où si le système existe, alors autant en faire qq chose d'efficace. Un bureau de validation des brevets est aussi censé être là pour vérifier que ceux-ci sont ... euh, valides. Quelque part, tu paies aussi pour ce service (pas juste l'enregistrement).
[^] # Re: Tu es joueur
Posté par lasher . En réponse au journal [HS] Journée de la Jupe. Évalué à 4.
Pourtant, elle est féministe, tout ça, tout ça. Sauf que le féminisme au quotidien dans un univers non-seulement machiste, mais réellement violent, à plusieurs niveaux, quand on se sent seul, ben... On l'oublie et on pense d'abord à passer la journée de façon à rentrer chez soi intact.
[^] # Re: si sony etait consistant cela se saurait
Posté par lasher . En réponse au journal Sony décide d'utiliser GNUstep pour… on ne sait pas trop quoi.. Évalué à 2.
[^] # Re: Réflexe de pilote de F1
Posté par lasher . En réponse au journal La nouvelle génération. Évalué à 4.
[^] # Re: Combien ça coute (en heures ou en argent)
Posté par lasher . En réponse à la dépêche Graph500: un nouveau classement pour les supercalculateurs. Évalué à 3.
Justement, ce n'est pas le sysadmin qui décide de lancer le benchmark. Le plus souvent il s'agit du chef qui veut pouvoir crâner devant les petits camarades au top 500. Ensuite, la plupart des centres de calcul ne sont pas à louer. Ils sont achetés pour résoudre des problèmes de simulation liés à l'organisation qui a fait l'achat (en France on parlerait donc de Peugeot/Renault pour la simulation d'accidents sur leurs voitures, ou bien du CEA pour simuler tout un tas de machins liés au nucléaire, etc.).
[^] # Re: Combien ça coute (en heures ou en argent)
Posté par lasher . En réponse à la dépêche Graph500: un nouveau classement pour les supercalculateurs. Évalué à 2.
Ensuite, ce genre de benchmark ne « coûte » rien dans le sens où il est effectué par les propriétaires du cluster.
[^] # Re: Mail reçu à propos de la conf au CRI
Posté par lasher . En réponse à la dépêche Richard Stallman: 2 conférences à Paris. Évalué à 2.
Quant à Open Source Vs Logiciel Libre/Free Software, je disais justement que je comprenais qu'on puisse vouloir bien marquer la différence, avec moult détails.
[^] # Re: Mail reçu à propos de la conf au CRI
Posté par lasher . En réponse à la dépêche Richard Stallman: 2 conférences à Paris. Évalué à 1.