OVH Cloud OVH Cloud

"A free version of a not-very-useful program is still a not-very-useful program"

231 réponses
Avatar
P4nd1-P4nd4
"Une version gratos d'un programme pas très utile reste un programme
inutile"



Voilà un utilisateur qui explique très bien pourquoi il shooté Open
Office et acheté Office 2010

LOL

http://itmanagement.earthweb.com/osrc/article.php/3903621/Goodbye-OpenOffice-Nice-Knowing-You.htm

10 réponses

Avatar
remy
JKB a écrit :
Le Thu, 23 Sep 2010 21:35:24 +0200,
sap écrivait :
Le 23/09/2010 21:20, JKB a écrit :
Le Thu, 23 Sep 2010 20:49:06 +0200,
sap écrivait :
Le 23/09/2010 20:28, JKB a écrit :
Le Thu, 23 Sep 2010 20:20:15 +0200,
Stephane CARPENTIER écrivait :
JKB a écrit:
Est-ce que tu vois la subtile différence entre un tri à la
shell-Metzner et une division ? Lorsque tu parles division à un
ingénieur, il sait de quoi tu parles. Lorsque tu cause tri
shell-Metzner à un ingénieur, il te regarde avec des gr ands yeux
vides. Il n'a _jamais_ entendu parlé


Ça m'étonne un peu. Que certain ingénieurs n'en aie nt jamais entendus parler
ne m'étonne pas. Mais que la majorité des formations n'e n parle plus, me
surprend.


As-tu eu des ingénieurs frais émoulus dans les pattes rà ©cemment ?



Pour faire les généralités que vous avancez je su ppose que vous avez
eu entre les pattes un échantillon représentatif d'ingé nieurs de chaque
écoles de France et de Navarre ... à moins qu'on vous refi le les
derniers de la classe ,de l'école du coin .


J'enseigne dans plusieurs écoles dont Centrale et l'ENST. Ç a va comme
échantillon ? J'ai aussi des stagiaires de plusieurs école s assez
représentatives. Les meilleurs, on les trouve au CNAM.

JKB



ok après être passé entre tes mains ces aspirants ing énieurs sont
déclarés nuls . ça fait peur !



Je n'enseigne qu'_une_ matière.



ne me dis pas que c'est l'informatique stp


--
http://remyaumeunier.chez-alice.fr/
Avatar
remy
Toxico Nimbus a écrit :
Le 23/09/2010 22:58, PP a écrit :

L'optimisation DOIT rester dans l'esprit des développeurs pour un tas
d'autres choses encore. Au niveau software certes, mais au niveau
hardware encore plus ! Ce qui semble encore mal barré.



Plus personne n'optimise plus et les clients achètent quand mê me.




l'optimisation réside dans la modularité du code

en gros ,
l'obj est une manière élégante de rendre modulaire
un traitement et les design pattern permettent d'agencer de manière
élégante les interactions de ses différents traitements

mais ses notions ne servent pas à effectuer un traitement
(par exemple un tri) le traitement lui il est codé une seule fois et
certainement plus optimisé qu'un machin bidule écrit à l'a rrache par un
prétendu auto proclamé expert, qui en plus se plante une fois s ur 3

le traitement lui il est optimisé, les pouillemes perdus ne sont pas
liés au traitement mais à la notion d'abstraction induite par l'obj
et que cela vous plaise ou pas il s'agit bien de pouillemes


remy


--
http://remyaumeunier.chez-alice.fr/
Avatar
JKB
Le Fri, 24 Sep 2010 09:28:30 +0200,
remy écrivait :
JKB a écrit :
Le Thu, 23 Sep 2010 21:35:24 +0200,
sap écrivait :
Le 23/09/2010 21:20, JKB a écrit :
Le Thu, 23 Sep 2010 20:49:06 +0200,
sap écrivait :
Le 23/09/2010 20:28, JKB a écrit :
Le Thu, 23 Sep 2010 20:20:15 +0200,
Stephane CARPENTIER écrivait :
JKB a écrit:
Est-ce que tu vois la subtile différence entre un tri à la
shell-Metzner et une division ? Lorsque tu parles division à un
ingénieur, il sait de quoi tu parles. Lorsque tu cause tri
shell-Metzner à un ingénieur, il te regarde avec des grands yeux
vides. Il n'a _jamais_ entendu parlé


Ça m'étonne un peu. Que certain ingénieurs n'en aient jamais entendus parler
ne m'étonne pas. Mais que la majorité des formations n'en parle plus, me
surprend.


As-tu eu des ingénieurs frais émoulus dans les pattes récemment ?



Pour faire les généralités que vous avancez je suppose que vous avez
eu entre les pattes un échantillon représentatif d'ingénieurs de chaque
écoles de France et de Navarre ... à moins qu'on vous refile les
derniers de la classe ,de l'école du coin .


J'enseigne dans plusieurs écoles dont Centrale et l'ENST. Ça va comme
échantillon ? J'ai aussi des stagiaires de plusieurs écoles assez
représentatives. Les meilleurs, on les trouve au CNAM.

JKB



ok après être passé entre tes mains ces aspirants ingénieurs sont
déclarés nuls . ça fait peur !



Je n'enseigne qu'_une_ matière.



ne me dis pas que c'est l'informatique stp



Non, ce n'est pas de l'informatique. C'est juste une matière où on a
besoin de savoir programmer un peu. Ce qui est navrant, c'est juste
que les étudiants d'il y a quinze ans étaient capables de faire un
projet quelconque avec une VaxStation 4000 qui tournait à 60 MHz et
possédait 32 Mo de mémoire et qu'aujourd'hui, le même projet
traitant les mêmes données n'arrive pas à tourner sur des machines
IA64 fonctionnant à 1,5 GHz et munies de 16 Go de mémoire !

La seule différence, c'est qu'on a fait entrer dans leurs crânes
qu'il ne faut pas réinventer la roue. Ils ont juste oublié de
retenir la fin de la phrase. On ne réinvente pas la roue si on est
déjà capable de l'_inventer_. Résultat, on voit des algorithmes de
traitement du signal en Java ou en C++, des corrélateurs avec des
tris qui sont notoirement mauvais parce que le premier téléphone
portable fait mieux, des synchronisations en temps et en fréquence
particulièrement foireuses (style 45 minutes pour synchroniser 10 ms
de signal sur une alpha ev67 alors qu'en aveugle, on arrive à
synchroniser une trame en quelques secondes !) et j'en passe !

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
Damien Wyart
> Peut être que si tu appelais ça "shell sort" comme tout le monde,
> les gens ouvriraient les yeux moins grands. Personnellement je
> n'avais jamais entendu parler de Metzner dans cette affaire, et,
> selon Wikipedia, Metzner n'a jamais contribué à cet algorithme.



* JKB in fr.comp.os.linux.debats:
Tous mes bouquins appellent ça Shell-Metzner. De toute façon, c'est du
détail, appelle ça Shell-sort si tu veux, le raisonnement reste
valable.



Plus de détails sur cette question ici ("Historical Note") :
http://www.itl.nist.gov/div897/sqg/dads/HTML/shellsort.html

--
DW
Avatar
JKB
Le Fri, 24 Sep 2010 09:33:35 +0200,
remy écrivait :
Toxico Nimbus a écrit :
Le 23/09/2010 22:58, PP a écrit :

L'optimisation DOIT rester dans l'esprit des développeurs pour un tas
d'autres choses encore. Au niveau software certes, mais au niveau
hardware encore plus ! Ce qui semble encore mal barré.



Plus personne n'optimise plus et les clients achètent quand même.




l'optimisation réside dans la modularité du code



Non (et déjà, il faut définir la modularité, je t'attends).

en gros ,
l'obj est une manière élégante de rendre modulaire
un traitement et les design pattern permettent d'agencer de manière
élégante les interactions de ses différents traitements



Non. La programmation objet est orthogonale à la programmtion
fonctionnelle. La programmation objet (abjecte ?) n'est là que pour
masquer le contenu des objets que tu dois expliciter en C ou en
Fortran et créer des boîtes noires. Il n'y a aucune raison de ne pas
avoir du code élégant écrit dans des langages fonctionnels purs.

mais ses notions ne servent pas à effectuer un traitement
(par exemple un tri) le traitement lui il est codé une seule fois et
certainement plus optimisé qu'un machin bidule écrit à l'arrache par un
prétendu auto proclamé expert, qui en plus se plante une fois sur 3



Non, mais tu es incapable de comprendre pourquoi.

le traitement lui il est optimisé, les pouillemes perdus ne sont pas
liés au traitement mais à la notion d'abstraction induite par l'obj
et que cela vous plaise ou pas il s'agit bien de pouillemes



Non, triple buse ! Ce ne sont pas des pouillèmes. Je reprends mon
exemple de BOOST et d'un calcul de trajet optimal dans un graphe.
J'y tiens parce que c'est un grand classique. Mais pour les tris, le
même raisonnement s'applique.

Pour calculer un trajet dans un graphe, tu as besoin d'une structure
point qui ressemble à ça (si le graphe est orienté) :

integer sommet_1;
integer sommet_2;
integer arete;
double precision cout_direct;
double precision cout_inverse;

structure qui a sur mon calculateur sparc64 une taille de 40 octets.
La taille de la cartographie (10E6 points) est de 400 Mo.

Si maintenant, tu prends ta fonction optimisée. Tu as une structure
de graphe générique qui n'a rien à voir. Je te conseille d'aller
faire un tour dans /usr/include/boost/graph. Cette structure fait
dans les 650 octets par sommet (!) et comporte tout un tas
d'information dont tu n'as que faire parce que cette structure est
générique et que d'autres fonctions travaillant sur les graphes les
utilisent.

Résultat des courses, tes données occupent 6,5 Go de mémoire là où
400 Mo suffisent. Il y a juste 6,1 Go d'information inutiles. J'aime
bien ta notion du pouillème. Au passage, c'est exactement pour cela
que pour faire un bête Hello, world ! en Java, il faut déjà beaucoup
de ressources.

Sur une machine munie de 8 Go, tu commences assez vite à swapper
parce que généralement, elle ne fait pas que ça. Et là, ça devient
marrant. Défauts de pages dans tous les sens, mémoire qui se
fragmente et deux façons de faire :
- allocateur best fit : ça rame, les accès disques te font tomber
les perfs d'une manière alarmante mais ça tourne encore;
- allocateur first fit : l'OS alloue la mémoire dans les pages qui
sont déjà en mémoire centrale et la taille de ton processus gonfle
jusqu'à exploser.

Si là, tu n'as pas encore compris pourquoi on n'utilise pas
d'algorithmes génériques quand on veut faire des choses sérieuses
et qu'on ne parle pas de pouillèmes, je ne peux rien pour toi.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
talon
Toxico Nimbus wrote:
purement malhonnête. Maintenant, il y a des optimisations qu'il vaut
mieux penser dès le début ; par exemple quand on voit le coût de
l'interfaçage du Java et du C, on réfléchit à deux fois avant de traiter
un gros volume de données en Java.
--
Toxico Nimbus



Je ne suis pas du tout un utilisateur de Java, mais je crois que les
performances sont globalement équivalentes à celles du C (idem pour le
Lisp d'ailleurs) donc je ne vois pas ce qui peut te faire dire ça.
D'ailleurs il y a énormément de serveurs très sollicités qui tournent
via Java. Maintenant s'il s'agit de calcul scientifique, comme ce que
fait JKB, alors évidemment c'est Fortran ou C.
Je ne dirais pas la même chose pour des langages qui tournent via un
interpréteur, comme perl, python, etc. Là ça peut passer s'il y a peu de
traîtement et beaucoup d'entrées sorties, ce qui est un cas assez
général, autrement il faut au moins que les parties critiques soient
codées de façon compilée (par exemple pyrex pour python).
Il ne faut pas oublier que Java se débrouille pour fabriquer du code
machine optimisé à l'exécution (HotSpot) tandis que Common Lisp
compile tout et optimise. Donc on ne perd pas grand chose par rapport à
du C compilé. En plus avec Common Lisp on bénéficie d'un langage tout
aussi dynamique que python, pas de déclarations de variables (par
contre s'il y a des déclarations elles permettent d'améliorer la
compilation). C'est pourquoi il existe des gros serveurs commerciaux qui
ont été conçus sous Lisp (http://www.paulgraham.com/avg.html).



--

Michel TALON
Avatar
remy
JKB a écrit :
Le Fri, 24 Sep 2010 09:33:35 +0200,
remy écrivait :
Toxico Nimbus a écrit :
Le 23/09/2010 22:58, PP a écrit :

L'optimisation DOIT rester dans l'esprit des développeurs pour un tas
d'autres choses encore. Au niveau software certes, mais au niveau
hardware encore plus ! Ce qui semble encore mal barré.


Plus personne n'optimise plus et les clients achètent quand mà ªme.



l'optimisation réside dans la modularité du code



Non (et déjà, il faut définir la modularité, je t' attends).

en gros ,
l'obj est une manière élégante de rendre modulaire
un traitement et les design pattern permettent d'agencer de maniè re
élégante les interactions de ses différents traitements



Non. La programmation objet est orthogonale à la programmtion
fonctionnelle. La programmation objet (abjecte ?) n'est là que po ur
masquer le contenu des objets que tu dois expliciter en C ou en
Fortran et créer des boîtes noires. Il n'y a aucune raison d e ne pas
avoir du code élégant écrit dans des langages fonctionn els purs.

mais ses notions ne servent pas à effectuer un traitement
(par exemple un tri) le traitement lui il est codé une seule fois et
certainement plus optimisé qu'un machin bidule écrit à l'arrache par un
prétendu auto proclamé expert, qui en plus se plante une foi s sur 3



Non, mais tu es incapable de comprendre pourquoi.

le traitement lui il est optimisé, les pouillemes perdus ne sont pas
liés au traitement mais à la notion d'abstraction induite p ar l'obj
et que cela vous plaise ou pas il s'agit bien de pouillemes



Non, triple buse ! Ce ne sont pas des pouillèmes. Je reprends mon
exemple de BOOST et d'un calcul de trajet optimal dans un graphe.
J'y tiens parce que c'est un grand classique. Mais pour les tris, le
même raisonnement s'applique.

Pour calculer un trajet dans un graphe, tu as besoin d'une structure
point qui ressemble à ça (si le graphe est orienté) :

integer sommet_1;
integer sommet_2;
integer arete;
double precision cout_direct;
double precision cout_inverse;

structure qui a sur mon calculateur sparc64 une taille de 40 octets.
La taille de la cartographie (10E6 points) est de 400 Mo.

Si maintenant, tu prends ta fonction optimisée. Tu as une structu re
de graphe générique qui n'a rien à voir. Je te conseill e d'aller
faire un tour dans /usr/include/boost/graph. Cette structure fait
dans les 650 octets par sommet (!) et comporte tout un tas
d'information dont tu n'as que faire parce que cette structure est
générique et que d'autres fonctions travaillant sur les grap hes les
utilisent.

Résultat des courses, tes données occupent 6,5 Go de mé moire là où
400 Mo suffisent. Il y a juste 6,1 Go d'information inutiles. J'aime
bien ta notion du pouillème. Au passage, c'est exactement pour ce la
que pour faire un bête Hello, world ! en Java, il faut déjà   beaucoup
de ressources.

Sur une machine munie de 8 Go, tu commences assez vite à swapper
parce que généralement, elle ne fait pas que ça. Et là  , ça devient
marrant. Défauts de pages dans tous les sens, mémoire qui se
fragmente et deux façons de faire :
- allocateur best fit : ça rame, les accès disques te font t omber
les perfs d'une manière alarmante mais ça tourne encore;
- allocateur first fit : l'OS alloue la mémoire dans les pages qu i
sont déjà en mémoire centrale et la taille de ton pro cessus gonfle
jusqu'à exploser.

Si là, tu n'as pas encore compris pourquoi on n'utilise pas
d'algorithmes génériques quand on veut faire des choses sà ©rieuses
et qu'on ne parle pas de pouillèmes, je ne peux rien pour toi.





mais tu es bouché, la généricité n'est pas dans l'alg o qui traite les
données ,mais dans le conteneur qui encapsule la donnée


l'algo est le même ,je répète

je trie un entier
ou je trie un conteneur qui contient un entier
point barre ,la différence s'arrête là

la méthode de tri est la même ,c'est la même ,c'est la m ême,c'est la
même,après si le mec est assez con pour mettre dans ton contene ur non
pas un entier mais 100k de données


c'est un autre problème, bon d'un autre côté la plupart du temps cela ne
se voit pas ,mais pour des cas limites on peut faire semblant de
réfléchir

remy


--
http://remyaumeunier.chez-alice.fr/
Avatar
JKB
Le Fri, 24 Sep 2010 08:13:48 +0000 (UTC),
Michel Talon écrivait :
Toxico Nimbus wrote:
purement malhonnête. Maintenant, il y a des optimisations qu'il vaut
mieux penser dès le début ; par exemple quand on voit le coût de
l'interfaçage du Java et du C, on réfléchit à deux fois avant de traiter
un gros volume de données en Java.
--
Toxico Nimbus



Je ne suis pas du tout un utilisateur de Java, mais je crois que les
performances sont globalement équivalentes à celles du C (idem pour le
Lisp d'ailleurs) donc je ne vois pas ce qui peut te faire dire ça.
D'ailleurs il y a énormément de serveurs très sollicités qui tournent
via Java. Maintenant s'il s'agit de calcul scientifique, comme ce que
fait JKB, alors évidemment c'est Fortran ou C.
Je ne dirais pas la même chose pour des langages qui tournent via un
interpréteur, comme perl, python, etc. Là ça peut passer s'il y a peu de
traîtement et beaucoup d'entrées sorties, ce qui est un cas assez
général, autrement il faut au moins que les parties critiques soient
codées de façon compilée (par exemple pyrex pour python).
Il ne faut pas oublier que Java se débrouille pour fabriquer du code
machine optimisé à l'exécution (HotSpot)



Je n'utilise pas Java, mais je dois administrer des serveurs
faisant tourner des applications Java.

Le problème de java n'est pas tant le code interprété ou compilé que
l'utilisation énorme de ressources mémoire. Qu'on arrive peu ou prou
aux mêmes performances qu'un programme natif n'est pas étonnant en
soit (même s'il faut rajouter l'étape de compilation). C'est la gestion
de cette mémoire qui grève les performances (à moins d'avoir une
foultitude de Go dès qu'on fait tourner un truc sérieux). Regarde un
peu les différentes specs des allocateurs de Solaris et l'influence sur
la rapidité d'exécution d'un programme Java. C'est assez effarant.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
remy
JKB a écrit :


une métaphore que tu devrais comprendre

l'obj et les design pattern sont à l'informatique se que sont les
patates (théorie des ensembles) aux maths

c'est puissant mais cela ne te dit pas si a entier est premier
pour le savoir tu as besoin d'un traitement




remy




--
http://remyaumeunier.chez-alice.fr/
Avatar
JKB
Le Fri, 24 Sep 2010 10:19:15 +0200,
remy écrivait :
JKB a écrit :
mais tu es bouché, la généricité n'est pas dans l'algo qui traite les
données ,mais dans le conteneur qui encapsule la donnée



C'est toi qui es bouché, c'est exactement ce que je te dis.

l'algo est le même ,je répète



S'il est générique, oui, mais pour des données particulières, ton
assertion n'a _aucune_ raison d'être vraie. Regarde un peu Lapack.
Tu verras qu'à un problème simple qu'est l'inversion de matrice, il
y a des tas de solutions en fonction de tes données.

je trie un entier
ou je trie un conteneur qui contient un entier
point barre ,la différence s'arrête là



Non. On ne trie pas que des entiers dans la vie. On peut trier des
chaînes de caractères, des distances dans un graphe, et surtout, on
peut avoir besoin d'un algorithme thread safe, donc soit coller un
mutex sur le tout, soit copier les données. C'est _beaucoup_ plus
compliqué que tu ne le penses et les différences de performances ne
sont pas dans le trait du crayon. Par ailleurs, tu ne réponds pas
sur les problèmes de défauts de pages introduits par la consommation
de ressources induite par la programmation objet générique.

la méthode de tri est la même ,c'est la même ,c'est la même,c'est la
même,après si le mec est assez con pour mettre dans ton conteneur non
pas un entier mais 100k de données



Je dois encore pouvoir les trier. De toute façon, répond à ce que
j'ai écrit sur les calculs d'itinéraires.

c'est un autre problème, bon d'un autre côté la plupart du temps cela ne
se voit pas ,mais pour des cas limites on peut faire semblant de
réfléchir



Les cas limites ne sont pas aussi limite que tu le crois. Que ce
problème soit loin de tes préoccupations est un fait, mais ce n'est
pas un problème marginal.

Aujourd'hui, je vais te donner un scoop, l'alimentation dans les
datacenters style Equinix, c'est 2 A par quart de baie. C'est très
peu. J'ai des machines qui consomment peu et je suis déjà à 4 A avec
des sparc T1. On essaye donc de grater tout ce qu'on peu parce que la
programmation objet, c'est de la consommation de ressources en plus
(mémoire, temps CPU, disques...) qu'on ne peut plus se permettre
comme il y a encore cinq ans où on avait 32 A par baie.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr