OVH Cloud OVH Cloud

Microsoft et Java

295 réponses
Avatar
Wykaaa
Microsoft semble reconnaître que Java permet de développer plus
rapidement que C# et qu'il y a moins de failles de sécurité dans Java
que dans .net :
http://dsi.silicon.fr/nouveautes/microsoft-java-forever%E2%80%A6-1366

10 réponses

Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 19:58, Nicolas George a écrit :
Pour commencer, sans compilation conditionnelle, tu n'iras pas très loin
pour certaines formes de dépendances conditionnelles.



Je ne vois vraiment pas d'exemple justifiable de ce type de chose?
Si tu peux éclairer ma lanterne, je suis preneur =)

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/Og2AAoJEK8zQvxDY4P9qQ8H/RWIlnECOO38mR8g5ukZ7aB0
V4poiiL4nuKFVP6r++hiWx7GBn2HAvGJT9piJVzDT6o9rsIrT7HCarpP3JsD3iL6
ev7BWk+x7wWbVgds2L0n+8SR5brmGH2Gd2Wj6QxeZ3iz5brZv0dwD3ne3cewxgBm
EJ48xngkm5H5PkW4NEhBuDWWgGGd/dJseqZyIMblh+/EUoXxdZPsE6gGXgcFcnbq
TIy4ZgD3aL8ZANcJGqh/L0ht/XTXMAdsWCo+MEv0WipYY6gatpQsIhlTkI+CiY9o
QZByhQVAOn7CKNuVW63QpoHGvUZno4bpB80cZgAwUtcYmMM12J1+GuiDMd8n8ig =yg87
-----END PGP SIGNATURE-----
Avatar
JKB
Le Sat, 18 Jun 2011 19:59:47 +0200,
Aéris écrivait :

Le 18/06/2011 19:50, JKB a écrit :
Pas exactement. Mais si tu ne vois pas la différence, tant pis.



J'ai très bien compris.
Rien ne t'empèche de traiter localement ta libération de mémoire puis de
remonter l'erreur pour faire la reprise.

void doBordel() {
int[INT_MAX] grosDawa = …
try {
trucQuiPlante();
} finally {
free(grosDawa);
}
}

propre, net, précis et sans bavure.



Non. Va jusqu'au bout de ton raisonnement. Cela implique de
récupérer le code d'erreur localement, puis de traiter ce qu'il faut
localement, puis de remonter l'erreur (soit avec un code d'erreur,
soit avec une exception et un magnifique throw) à la fonction appelante,
et ainsi récursivement jusqu'à un point où tu peux prendre ta décision
sur le traitement à apporter. Je n'ai _jamais_ vu un code Java (ou C++
d'ailleurs) fonctionner comme ça. Je ne dis pas que ça n'existe pas,
simplement que je n'en ai jamais vu. La plupart du temps, tu as un
try/catch avec un gros machin pas net dedans qui récupère toutes les
exceptions qui passent, se contrefichant éperdument de tout ce qu'il
faudrait récupérer correctement.

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
Nicolas George
Aéris , dans le message <4dfce7df$0$20025$, a
écrit :
Mais mes outils Java me permettent de détecter ce genre de conneries
très rapidement.



J'incrois. Le fait de savoir si c'est effectivement une connerie ou pas
demande la compréhension du code, aucun outil ne peut le faire à la place
d'un programmeur compétent.
Avatar
Nicolas George
Aéris , dans le message <4dfce836$0$20025$, a
écrit :
Je ne vois vraiment pas d'exemple justifiable de ce type de chose?
Si tu peux éclairer ma lanterne, je suis preneur =)



typedef struct AVOutputStream {
<snip>
FILE *logfile;
#if CONFIG_AVFILTER
AVFilterContext *output_video_filter;
AVFilterContext *input_video_filter;
AVFilterBufferRef *picref;
char *avfilter;
AVFilterGraph *graph;
#endif
int sws_flags;
} AVOutputStream;

Tu fais comment, sans compilation conditionnelle ?
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 20:42, Nicolas George a écrit :
Le fait de savoir si c'est effectivement une connerie ou pas
demande la compréhension du code, aucun outil ne peut le faire à la place
d'un programmeur compétent.



Oui mais un catch-all est rarement une bonne idée et même sans
compréhension du code, 99% de chance que le code doit être corrigé !

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/PZQAAoJEK8zQvxDY4P9C6gIAKarCAw6ZRwP2l8f99AEe3Tz
wGrRF39/0K34qtp/exSNDC+5SPs6Qc7ld7bix1ChQqFqgc/RHEdT0MzmrVuhY7xg
okb022poMotGQ3wE55wNOL3PZv1Si5F0OORJk4nevQVVd7dDdfbAH5VCDmKzH6J+
sWpkC1cNJNGskVTq9CBW9b3zuR0HVPda0b+fKUTPT7e3BFh+bgvyY7HwoEpjMhwn
tER+lNGqPpu4SlVEy+5qjQPQHtN2Enwvg+/zMfgm8oOYOXyF+bW8CFjDzsdUjyiY
6Zck60A4cDqLp2f2F/8OMFfWSIcqrTn4yF8sU3fzasGbeUgdHMf3/f7KBkdfRdc =hims
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfcf658$0$3962$, a
écrit :
Oui mais un catch-all est rarement une bonne idée et même sans



Rarement != toujours.

compréhension du code, 99% de chance que le code doit être corrigé !



Et 99,7% des statistiques de ce genre sont fantaisistes.
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 20:47, Nicolas George a écrit :
typedef struct AVOutputStream {
<snip>
FILE *logfile;
#if CONFIG_AVFILTER
AVFilterContext *output_video_filter;
AVFilterContext *input_video_filter;
AVFilterBufferRef *picref;
char *avfilter;
AVFilterGraph *graph;
#endif
int sws_flags;
} AVOutputStream;

Tu fais comment, sans compilation conditionnelle ?



Euh…
Là comme ça, je considère ça comme du code de goret.
Ça va t'obliger à trainer des if CONF_AVFILTER partout dans le code…
2 types d'objet avec héritage aurait été hautement plus propre et
modulable !


C'est l'exemple même de code qui va te générer des tonnes d'effets de
bords à la con à la moindre modif.

Du genre le « logfile » qui se pointe dans le « if » suite à une
évolution fonctionnelle et qui va se mettre à péter dans TOUT le reste
du code qui continue à y accéder car y reste en dehors du « if ».

Ou encore l'ajout d'une nouvelle alternative à CONFIG_AVFILTER du genre
#if CONFIG_AVFILTER
#if CONFIG_FOO
int bar;
#endif
#endif
qui rend le code de plus en plus complexe et nécessite à chaque fois de
reprendre TOUTES les méthodes manipulant ce type, et donc
potentiellement à injecter des régressions dans du code qui était 100%
fonctionnel. TOUT le plan de test est à repasser, y compris sur les
fonctionnalitées V-1

Alors qu'avec de la POO et de l'héritage, le nouveau type se contente
d'appeler du code déjà testé + la nouveauté.

class Bar : Foo {
int bar;

doIt() {
super.doIt(); // garanti correct et déjà testé
doBar(bar); // seule partie à tester
}
}

Seules les fonctionnalitée V+1 sont à tester et les V-1 n'ont absolument
aucun risque d'être impactées.


Et je ne vois pas le rapport avec la gestion de dépendance…

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/PkKAAoJEK8zQvxDY4P9+eIIAIgn3T6ewWrGtW19xG0nE4zi
m8lm7SqLkpPw4kCeSysuC5qWMThilGKLBsI8PTT74vpZbZ9FOhPX5KR341uZqS9J
58tqs3WWSpB2Xyzs7NGIiXtfqL2HHBiet8ZdYD1xk4xtqfe853JGc6ffVwsCfAPf
70DJWDb1mvp2tdYDD7MxWJLVR5GriFFj6V6CoqITA+5X0c7WBrVJ5n+HmbZhBCjL
hPeheBjMTBN3ybR1iExWtUL0XPQeq82yqlnV9ISbjr+1DIZ1NFqGrAeuHxI3Rb6X
jrlJhZO/OMb5nrEIQ2n1WoeEyYSgASfH81x1aP6V8uGrwpJ1ZjJSV6pszoNnU5U =9siM
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 21:08, Nicolas George a écrit :
compréhension du code, 99% de chance que le code doit être corrigé !


Et 99,7% des statistiques de ce genre sont fantaisistes.



Si tu préfères, sans même aller voir ce que cela fait réellement,
j'imposerai que ce code soit dégagé !
La probabilité qu'il soit réellement utile (sachant en plus qu'on peut
faire autrement) est trop faible pour que tu en ais réellement l'utilité
dans toute ta carrière.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/PmnAAoJEK8zQvxDY4P9v6AIAKgtw+wtFjfvz6yQKfQE363j
LRuf6jwsn9QNu3+qw7IQuMW7VHQ0/VQhYk7I55iiySzWREc7VDbcj9rmwUEibVFk
cxk4RLRUFWW5LlLYmG6wq8A4dYPmw4IZr0dbuay83lXUkXaltAwpyuzWwrC5jlge
K8ruc30OfEMZRxs5rMG1ludAts4yN1ic6Pyq+2aTJeKAnHx80OinhSfsz3ZwdP9i
dr5X24EkaKkNlW/uUrXVsG5flqzTeos1gdcLnWjOUGv/4FisLd/ETFLFfgc6fBa7
jL2Fm2wXphODZRqe0Z6GIX2LHMDwtQwKzEmEo6sRyazH9rRoNnxR6vzBD6K1ky8 =m8xN
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfcf9a7$0$18558$, a
écrit :
Si tu préfères, sans même aller voir ce que cela fait réellement,
j'imposerai que ce code soit dégagé !
La probabilité qu'il soit réellement utile (sachant en plus qu'on peut
faire autrement) est trop faible pour que tu en ais réellement l'utilité
dans toute ta carrière.



Tu ne connais pas la situation, mais tu as déjà une certitude sur la
réponse...
Avatar
Nicolas George
Aéris , dans le message <4dfcf90f$0$18558$, a
écrit :
Alors qu'avec de la POO et de l'héritage, le nouveau type se contente
d'appeler du code déjà testé + la nouveauté.



Montre-nous tout le code nécessaire, en particulier celui où on définit les
objets et celui où on les instancie, sans compilation conditionnelle.