Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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
JKB
Le Sat, 18 Jun 2011 18:02:52 +0200,
Aéris écrivait :

Le 18/06/2011 17:27, JKB a écrit :
Un code est bon ou n'est pas bon. Il n'est pas notablement bon.



Au final le code sera toujours bon quelque soit le langage et la qualité
du code.

Le « notable » était juste là pour indiquer que toute modification
introduit potentiellement des effets de bord.
Le but d'un code propre n'étant pas de minimiser la fréquence de ces
effets de bord (ce qui est difficilement faisable) mais de rendre leur
correction rapide et fiable.

D'autant que la gestion des erreurs par exception est une aberration
née dans le cerveau dément d'un analyste fou.



Certes, mal géré cela peut devenir dangereux.



C'est un euphémisme.

C'est le pire des
systèmes lorsqu'on veut récupérer une erreur efficacement et de
façon propre. Le principe à la C d'une fonction qui renvoie un code
d'erreur est bien mieux pensé car plus simple et en testant les
retours des fonctions, on laisse toujours le programme dans un état
cohérent.



Si tu as un mauvais développeur en C, il va oublier de checker le code
de retour, qui au final ne sert à rien métier-ement parlant.
En Java, au mieux le code ne compilera pas (l'exception n'étant pas
gérée), au pire en cas d'erreur au runtime (RuntimeException), le code
s'arrêtera plutôt que de continuer dans un état totalement pourri.
Dans les 2 cas, le comportement final est plus fiable que celui du code
en C…



Mon prérequis est qu'un développeur sait un minimum ce qu'il doit
faire avec les fonctions de base et comment on gère les erreurs.
Parce que des codes Java qui récupèrent les exceptions sauvagement,
j'en vois tous les jours ! Les codes Java où le dev rajoute une
gestion des exceptions sans savoir pourquoi parce que sans ça ne
compile pas, c'est aussi très courant.

En C++ ou en Java, on peut rapidement avoir des surprises
amusantes.



Et en C encore plus.
Parce que même en testant le code de retour, 99% des développeurs ne
savent de toute façon pas comment gérer l'erreur, et encore moins
proprement.



Tu te rends compte que tu rajoutes de l'eau à mon moulin ? Depuis
longtemps, je pense que Java est un truc permettant à des
programmeurs mauvais de pisser du code (jetable) et tu abondes dans
mon sens.

Au moins en Java, le langage en lui-même met un 1er garde-fou en
remontant l'erreur tout le long de la pile jusqu'à ce qu'elle soit
traitée,



C'est justement ce que je reproche à la gestion des erreurs par
exception. C'est parfaitement débile puisque cela revient à gérer
une exception bien après l'erreur alors qu'il est beaucoup plus
simple de restaurer un état cohérent dans la fonction qui lève
l'erreur ! La gestion par exception, c'est bien tant qu'on est en
mémoire statique ou qu'on se contente de sortir du programme. Dans
tous les autres cas, c'est pénible.

ou arrête le programme plutôt que de le laisser continuer dans
un état totalement incohérent si personne n'a daigné gérer cette erreur.



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
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 17:59, JKB a écrit :
— La même convention de nommage de classes et surtout de namespace



En C++, on s'en fiche, seules comptent les interfaces et l'espace de
nommage. L'arborescence des sources n'a aucune siginification.



On est bien en train de parler de propreté de code, non ?
Si à chaque fois que je change de projet j'ai tout à réapprendre, ce
n'est ni efficace ni propre.

— Le même cycle de vie de développement



Ça n'a rien à faire ici. On peut avoir n'importe quel cycle de
développement dans n'importe quel langage.



Toujours la même chose…
Si une méthode de dev est considérée comme « propre » et appliquée sur
l'ensemble des projets de ce langage, cette méthode sera toujours propre
que X méthodes « propres » sur Y projets.

— La même structure de site web



On parle de code source.



Non, de propreté de développement

— La même gestion de dépendance



Ce n'est pas à une application de gérer des dépendances, mais au
système, sauf à vouloir absolument foutre le bordel, mais c'est
ainsi.



On ne parle pas de l'application mais des méthodes pour gérer proprement
un projet.
La gestion des dépendances est un sinon le poste le plus critique pour
parvenir à un développement propre, avec la gestion de conf.

— La même manière d'intégrer leur travail dans ton propre travail


Hors sujet. Lorsque je parle d'intégrer un travail externe dans le
mien, je spécifie des interfaces. C'est indépendant du langage (et
java est justement très mauvais là-dedans).



Moi aussi je spécifie des interfaces.
Mais Maven spécifie aussi pour moi où et comment intégrer le .jar de la
dépendance dans mon projet, là où ton C se contentera de dire qu'il te
manque le .so…
C'est cool d'avoir un projet avec des interfaces, si tu n'es pas capable
de trouver comment installer le .so et ses dépendances ni comment
l'intégrer à la compilation, c'est d'une inutilité totale !

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

iQEcBAEBAgAGBQJN/M3gAAoJEK8zQvxDY4P9Q5kH/iauMLnVPLm0grkRGYEnKJb2
1ODZ+E/x6EKKYLe5nbDHp/ZIw3PzsDUPbkQbhT/dUDV2K8ReaeJzxzNa0iAmoow0
/W7Jsae/WvvIGROUaHftIhZQLQw/zwqHi0xnZT1EyKy/d/HQXT+ev2Ulyl61IQfW
xpe3+D9Rkvj/QkLEmUzixKV5CY4v5k7QP6ml/7itR4wJYvBKDpCYK3BieRJxzkrL
NAaNzEGUf5YOV77BlWrn/mBLLBRt0khE8YuYuuMXdKeexHAYT5RNbM7I9DjOq59g
AAxoIQmVzNrkmgUeQmQWe2nOzsuPKi1BiY5hMrCXOD8TFAcMU/cxrn/uAvLMYTw =g/ra
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 18:09, JKB a écrit :
C'est parfaitement débile puisque cela revient à gérer
une exception bien après l'erreur alors qu'il est beaucoup plus
simple de restaurer un état cohérent dans la fonction qui lève
l'erreur !



Ah ?
malloc me retourne -1, je fais quoi ? Je ne sais même pas pourquoi il a
planté !
Sûrement à cause d'un manque de mémoire, ce qui ne sera pas récupérable
(de fortes chances de se taper -1 aussi sur un 2nd appel).
Mais peut-être pour d'autres raisons inconnues (erreur d'io ou que
sait-je encore).

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

iQEcBAEBAgAGBQJN/M6TAAoJEK8zQvxDY4P9LDcIAJ1FyZpYE+4OxhcB9VLeIuuZ
id6w758wLKVMALc/lVcfiaKXkl/xvffLk5XlgwEin4LJrrlJauBQNDFS7AVly/if
VvsKuQHkWeGSNzHPwKoN+M52cPSYjFnUzfcwZsVRN40xinQskJiFVNgTiJvQXnpg
0deW2qAT3bM64gd5DmEILgLoqBH2yaSGGe32v+RVxVsm1Q7yVz0eJ6ih8IITvijr
BEUKRXcb+60BvZ3biTXoxn1v4U/mXNivbVnKhIExOZjufG4HVljyFin6YSTT430S
9dwWmY1xPtSk2l5CGLZ9MkusO6tWJdr4rY1nZVK3DBxzIWZ1K5qNZUPSXJiXapQ =y+2s
-----END PGP SIGNATURE-----
Avatar
*.-pipolin-.*
JKB a formulé la demande :
Le Sat, 18 Jun 2011 12:46:28 +0200,
Tonton Th écrivait :
On 06/17/2011 11:56 PM, Aéris wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 17/06/2011 23:49, Tonton Th a écrit :
Le problème est le même en Java ou en C++.



Mêmes causes, mêmes conséquences.



Ajoute C ou ASM si tu le souhaites, cela ne change rien.
C'est même encore pire, avec des tricks comme les variables globales ou
que tout est accessible à la simple connaissance du .h…



En quoi l'utilisation raisonnable des variables globales
est-elle un "tricks" ?

Et j'oublie aussi la croix et la bannière pour gérer proprement la
compilation sans passer par des abérations comme les autotools ou le
bordel sans nom des inclusions croisées de .h…



Les autotools n'ont rien à voir avec le langage. Et non, sur
un projet bien construit, les inclusions "croisées" de .h
ne posent pas de problèmes.



Le problème est d'avoir un projet _bien_ construit. Il y a longtemps
que je n'ai plus vu un petit jeune capable de construire
correctement un projet. Et les IDE pour cela ne sont pas une bonne
chose puisqu'elles masquent un tas de choses qui ne devraient pas
l'être.

JKB



c'est vrai, c'est bien connu, les jeunes, c'est des cons !!!

en attendant, le monde de merde et de médiocrité dans lequel on vie, il
est pas le fait des "jeunes" !!

vieux con !

--

http://www.zipiz.com/kronik1.htm
Toutes les fautes d'orthographes de ce message sont sous copyright et
sont la propriété exclusive de l'auteur de ce message, toutes
reproductions est interdite et donnerais lieu à des poursuites.
© pipolin
Avatar
JKB
Le Sat, 18 Jun 2011 18:10:09 +0200,
Aéris écrivait :
Moi aussi je spécifie des interfaces.
Mais Maven spécifie aussi pour moi où et comment intégrer le .jar de la
dépendance dans mon projet, là où ton C se contentera de dire qu'il te
manque le .so…



Non, c'est au makefile de te le dire, pas à l'éditeur de liens.

C'est cool d'avoir un projet avec des interfaces, si tu n'es pas capable
de trouver comment installer le .so et ses dépendances ni comment
l'intégrer à la compilation, c'est d'une inutilité totale !



Va regarder pkgsrc.

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
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 18:09, JKB a écrit :
Parce que même en testant le code de retour, 99% des développeurs ne
> savent de toute façon pas comment gérer l'erreur, et encore moins
> proprement.


Tu te rends compte que tu rajoutes de l'eau à mon moulin ? Depuis
longtemps, je pense que Java est un truc permettant à des
programmeurs mauvais de pisser du code (jetable) et tu abondes dans
mon sens.




Qu'on soit en C ou en Java, un mauvais développeur fera autant d'erreur.
Sauf qu'en C le résultat sera rapidement catastrophique, alors qu'en
Java pas mal de gardes-fous existent.

Et si on a à faire à un bon développeur, il prendra plus son pied avec
des bonnes pratiques très haut niveau type Maven, IoC ou n-tiers qu'à se
taper le coquillon avec du Makefile.

La question qui tue quand on doit intégrer un nouveau développeur : «
Patron, je monte comment ma nouvelle plate-forme pour attaquer le
développement ».
Réponse en Java : « mvn install »
Réponse en C/C⁺⁺ et tout le reste pratiquement : « euh… »

Et comme la réponse en Java sera toujours la même pour tous ses projets,
il finira par ne même plus poser la question !

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

iQEcBAEBAgAGBQJN/NDcAAoJEK8zQvxDY4P90FsIAJZzMAlB10lwFR3PIpr9Xz+N
B8VS27mMu/dfdJqQ9Ov2uLuR19IbR1KbyVkElNcjf8EzojvlOEisziot7bhwXCnE
yxW24RxJXN1+xsMZQiJx526MCWtMMaFEz89fFtFiJOU/azXG+fH3b6hstVLP1RnJ
Ra/nDTDgtEwNDAPC40jQAYkVCQyPbOjUJ39FOf6hDzMUIy3d7kM7M6vcrsPWUoKZ
48yEaQcAOxZfLiXlu883Xic9l2Zjql+wjORW4cZea1JZDwNBdiuYG7XLxdO68HdB
eJCMRkBChQpArOAvTbZkudse1grsPIO8QtqESkyr2jVFAxxXDrcjBUY8hOtEHXQ VuS
-----END PGP SIGNATURE-----
Avatar
JKB
Le Sat, 18 Jun 2011 18:13:08 +0200,
Aéris écrivait :

Le 18/06/2011 18:09, JKB a écrit :
C'est parfaitement débile puisque cela revient à gérer
une exception bien après l'erreur alors qu'il est beaucoup plus
simple de restaurer un état cohérent dans la fonction qui lève
l'erreur !



Ah ?
malloc me retourne -1, je fais quoi ? Je ne sais même pas pourquoi il a
planté !



Si, tu le sais parfaitement. Les fonctions de la libc (et de la
plupart des bibliothèques) te renvoient une erreur et un code
d'erreur dans errno. Tu sais donc parfaitement pourquoi ça a planté
lorsque tu peux avoir une ambiguité. On n'a vraiment pas dû
apprendre le C au même endroit...

Sûrement à cause d'un manque de mémoire, ce qui ne sera pas récupérable
(de fortes chances de se taper -1 aussi sur un 2nd appel).



Et alors ? La récupération peut être aussi bête que ne pas faire
planter le programme sur une erreur de segmentation.

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
JKB
Le Sat, 18 Jun 2011 18:22:52 +0200,
Aéris écrivait :

Le 18/06/2011 18:09, JKB a écrit :
Parce que même en testant le code de retour, 99% des développeurs ne
> savent de toute façon pas comment gérer l'erreur, et encore moins
> proprement.


Tu te rends compte que tu rajoutes de l'eau à mon moulin ? Depuis
longtemps, je pense que Java est un truc permettant à des
programmeurs mauvais de pisser du code (jetable) et tu abondes dans
mon sens.




Qu'on soit en C ou en Java, un mauvais développeur fera autant d'erreur.
Sauf qu'en C le résultat sera rapidement catastrophique, alors qu'en
Java pas mal de gardes-fous existent.



Donc qu'un mauvais programmeur arrive à faire des trucs qui ne
plantent pas trop. Merci de ton soutien. C'est justement contre ces
trucs que je m'insurge.

Et si on a à faire à un bon développeur, il prendra plus son pied avec
des bonnes pratiques très haut niveau type Maven, IoC ou n-tiers qu'à se
taper le coquillon avec du Makefile.



Ça n'engage que toi.

La question qui tue quand on doit intégrer un nouveau développeur : «
Patron, je monte comment ma nouvelle plate-forme pour attaquer le
développement ».
Réponse en Java : « mvn install »
Réponse en C/C⁺⁺ et tout le reste pratiquement : « euh… »



Sans commentaire. Ça prouve ta profonde méconnaissance du paradigme
C/C++.

Et comme la réponse en Java sera toujours la même pour tous ses projets,
il finira par ne même plus poser la question !



Et donc, merci d'apporter encore un peu plus d'eau, cela revient
même à utiliser une hérésie comme Java à des endroit où d'autres
outils seraient largement plus efficaces (style calcul scientifique
avec Fortran). Merci de ton soutien.

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 <4dfccde1$0$27562$, a
écrit :
On est bien en train de parler de propreté de code, non ?
Si à chaque fois que je change de projet j'ai tout à réapprendre, ce
n'est ni efficace ni propre.



Tous les projets n'ont pas les mêmes spécificités, c'est normal d'avoir des
pratiques différentes.

C'est bien l'esprit java que tu défends : on a un trou carré, et on fait à
toute force entrer tous les projets dans ce trou carré, même s'ils sont
naturellement ronds ou en forme d'étoile.
Avatar
Nicolas George
Aéris , dans le message <4dfccc2d$0$27972$, a
écrit :
En Java, au mieux le code ne compilera pas



... et le mauvais programmeur rajoutera un catch-all autour, en masquant non
seulement la condition d'erreur qu'il était censé traiter mais aussi les
autres conditions d'erreur qui peuvent survenir.