Précédent   Forum du club des développeurs et IT Pro > Java > Communauté Java > Débats

Débats Les débats et sondages sur le langage et les technologies Java

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Etes vous pour ou contre cette proposition ?
Pour 280 76,09%
Contre 88 23,91%
Votants: 368. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse Actualité déjà publiée
 
Outils de la discussion
Vieux 14/02/2008, 22h37   #61
jakkk
Invité régulier
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 7
Points : 8
Points : 8
dans l'exemple qui est donné je ne suis pas tellement gêné par la répétition, c'est plus l'absence de désignation de ce générique qui est problématique!

à la place de

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

Je préférai:

generic <String, List<String>> AnagramItem;
...
Map<AnagramItem> anagrams = new HashMap<AnagramItem>();

ce qui permettrait de facilement remplacer un type générique partout,

de faire de l'introspection sur les types génériques ...
jakkk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 23h45   #62
bouye
Modérateur
 
Avatar de bouye
 
Homme Fabrice Bouyé
Développeur Java
Inscription : août 2005
Messages : 4 078
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Bouyé
Âge : 36
Localisation : Nouvelle-Calédonie

Informations professionnelles :
Activité : Développeur Java
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2005
Messages : 4 078
Points : 8 546
Points : 8 546
Pas vraiment non car pouvoir faire de la reflection suppose que le bytecode stocke quelque part une information sur le type utilise ce qui n'est actuellement pas le cas (dans leur implementation actuelle, les generics ne sont que du sucre syntaxique pre-compilation pour eviter les casts manuels) sans que le programmeur ne s'en charge lui-meme.

Par contre, un typedef ou equivalent n'etait-il pas en discussion pour cette release ou une suivante ???
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

suivez mon blog sur Développez.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
bouye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 09h12   #63
kisame
Membre régulier
 
Inscription : mars 2005
Messages : 143
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 143
Points : 99
Points : 99
Je ne vois qu'un seul mauvais point mais il suffit de rendre les 2 écritures possibles pour assurer la compatibilté ...

Perso,
Code :
List<String>list = new Arraylist<String>();
me choque moins que
Code :
List<String> list = new ArrayList();
C'est pas un gros plus mais il n'y a pas d'inconvénient.

donc pour
kisame est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 10h40   #64
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Si si, c'est un grand plus:

Code :
1
2
3
4
 
private GenericCache<GenericTripleKey<Long, Long, Long>, DateVals<List<Data>>> fillCache =
 new GenericCache<GenericTripleKey<Long, Long, Long>, DateVals<List<Data>>>(
			100, 0);
Un extrait de code dans l'application sur laquelle je travaille
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 11h00   #65
dingoth
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 298
Points : 1 298
Ce qui me choque moi, ce cas de figure (extrême, je l'admets, mais tout de même) :

Code Java :
1
2
3
4
5
List<String> chaines = new ArrayList();
chaines.add(...);
chaines.add(...);
...
Set<Date> dates = new TreeSet(new HashSet(new LinkedHashList(new LinkedList(chaines))));

Qu'en penser ? La vérification se fait sur le TreeSet attribué à dates et non en amont, tandis qu'avec la déclaration explicite c'est bien plus compréhensible au premier coup d'œil et le compilateur pointe très précisément du doigt l'erreur.
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2008, 06h40   #66
gouessej
Membre confirmé
 
Avatar de gouessej
 
Homme
Inscription : juin 2006
Messages : 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Seine Saint Denis (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 255
Points : 244
Points : 244
Par défaut arrêtez de compliquer le langage!

Bonjour

Je ne veux pas que l'on rajoute des choses dans la syntaxe de Java. Ca va devenir aussi difficile à lire que du C++ tout ça pour faire plaisir à ceux qui voudraient que Java ressemble à C#. Que Java reste Java, je demande à Sun de corriger les bugs, et de les corriger même sous Linux! Je voudrais tout simplement que Java 1.7 soit plus stable et plus rapide encore. Un des principaux avantages de Java est la syntaxe simple. Tout ce que je vois là ne fait que compliquer la lecture pour un gain minime voire nul alors arrêtez ce massacre!
gouessej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2008, 11h08   #67
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Bonjour,

Citation:
Envoyé par gouessej Voir le message
Bonjour

Je ne veux pas que l'on rajoute des choses dans la syntaxe de Java. Ca va devenir aussi difficile à lire que du C++ tout ça pour faire plaisir à ceux qui voudraient que Java ressemble à C#. Que Java reste Java, je demande à Sun de corriger les bugs, et de les corriger même sous Linux! Je voudrais tout simplement que Java 1.7 soit plus stable et plus rapide encore. Un des principaux avantages de Java est la syntaxe simple. Tout ce que je vois là ne fait que compliquer la lecture pour un gain minime voire nul alors arrêtez ce massacre!

Humm ... par ce que tu trouves que ça:
Citation:
Envoyé par vbrabant Voir le message
Aujourd'hui :
Code :
1
2
3
Map<String, List<String>> 
  anagrams = new HashMap<String, List<String>>();
Demain :
Code :
1
2
Map<String, List<String>> 
  anagrams = new HashMap<>();

ça complique le langage
J'aurais pu comprendre parfaitement ton point de vue lors de l'introduction des Generics en Java (surtout les Wildcards), mais là, il s'agit de simplifier ça, à moins que tu ne te trompes de post
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 09h50   #68
mathieug92
Invité de passage
 
Inscription : février 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 4
Points : 4
Points : 4
Pour, la verbosité parfois excessive étant à mon avis l'un des handicaps de java la suppression de syntaxe redondante me semble un pas dans la bonne direction.
mathieug92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 11h11   #69
deltree
Membre confirmé
 
Inscription : mai 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 242
Points : 269
Points : 269
Par défaut Pour, autre syntaxe possible.

Mais j'ai hésité entre l'avantage de simplifier la lisibilité, et de complexifier la compréhension de la grammaire Java (de moins en moins accessible)

Citation:
Envoyé par pseudocode Voir le message
1. Par principe, je suis pour la séparation du type de la variable et du type de l'instance. J'irai meme jusqu'a imposer que le type d'une variable soit toujours une interface.

2. Si le but c'est la lisibilité alors le gain est vraiment minime. Autant carrément supprimer le mot clé new et faire des allocations facon "C":

Code java :
1
2
 
HashMap<String, List<String>> anagrams;
Dans l'idée de déclarer et instancier en une seule instruction j'avais aussi pensé à la syntaxe VB/LotusScript, qui a cependant ton inconvénient N°1: de ne pas utiliser d'interface:
Code :
1
2
3
4
5
6
 
// pseudo VB de LotusScript
dim session as new Session()
 
//transposé en Java Generics
new HashMap<String,Person>(10) annuaire;
De toutes façon, je trouve que c'est une peu du "sucre" syntaxique,
est-ce qu'on ne pourrait pas carrément avoir un précompilateur comme en C, avec des des %Define et des typedefs, pour alléger les types trops longs à écrire?
ça remplirait finalement la même fonction.
deltree est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2008, 19h12   #70
LeGritche
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 11
Points : 11
Humm . Je suis contre cette évol du langage. L'intérêt est vraiment mineur et ça complexifie le langage (code plus lisible mais langage plus complexe).

Pour moi, seules les évolutions vraiment utiles doivent être intégrées.
LeGritche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 21h08   #71
TPReal
Membre à l'essai
 
Inscription : novembre 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2007
Messages : 17
Points : 20
Points : 20
Je suis d'acord avec LeGritche, l'interet est mineur, alors ne compliquons pas.
TPReal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 11h35   #72
fisico
Membre du Club
 
Avatar de fisico
 
Inscription : septembre 2003
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 98
Points : 64
Points : 64
contre, l'apport de l'innovation ne change pas grand chose, même rien du tout. on a pris l'habitude de travailler ainsi.
__________________
SCJP - SCWCD - SCBCD
fisico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 11h59   #73
emile.coue
Invité régulier
 
Inscription : février 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 10
Points : 5
Points : 5
Je suis contre, tant qu'il y a la mécanique d'autocomplétion dans la majorité des IDEs, cette forme d'instantiation ne va ajouter que de difficultés au niveau de la lisibilité du code et le rendre moins compréhensible sur tout quand elle est loin de la déclaration de la référence.
emile.coue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 12h20   #74
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 435
Points : 22 435
Citation:
Envoyé par emile.coue Voir le message
cette forme d'instantiation ne va ajouter que de difficultés au niveau de la lisibilité du code et le rendre moins compréhensible sur tout quand elle est loin de la déclaration de la référence.
De la manière dont je l'ai compris, ce ne serait possible que dans le cas d'une instantiation en ligne... un peut comme pour les tableaux :

Code :
1
2
3
4
	int[] values = { 1, 2, 3, 4 }; // OK
 
	values = { 1, 2, 3, 4 }; // ERREUR
	values = new int[] { 1, 2, 3, 4 }; // OK
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 12h28   #75
emile.coue
Invité régulier
 
Inscription : février 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 10
Points : 5
Points : 5
Bonjour adiGuba,

Citation:
De la manière dont je l'ai compris, ce ne serait possible que dans le cas d'une instantiation en ligne... un peut comme pour les tableaux :
Dans ce cas, je vote pour. et ça sera pratique, et le code sera moins lourd, au niveau LECTURE.

POUR
emile.coue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2008, 11h36   #76
fridobox
Membre à l'essai
 
Inscription : mars 2008
Messages : 20
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 20
Points : 22
Points : 22
Par défaut Contre trop d'implicite

Je m'explique :
L'instanciation ne suit la déclaration que dans des cas simples.
S'ils sont séparés :
Code :
1
2
3
4
 
        List<String> lst;
        (... code ...)
        lst = new ArrayList<>();
on est obligé de retrouver la déclaration pour connaître le type de la liste (sauf avec un puissant IDE).
Si quelqu'un doit se plonger dans du code qu'il n'a pas écrit, l'interprétation doit être sans ambiguïté.

Il faut de toute façon conserver la syntaxe actuelle lorsque le type de l'instanciation est différent du type de la déclaration :
Code :
1
2
 
        List<? extends MaSuperClass> lst = new ArrayList<MaClass>();
fridobox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2008, 11h50   #77
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 435
Points : 22 435
Citation:
Envoyé par fridobox Voir le message
Je m'explique :
L'instanciation ne suit la déclaration que dans des cas simples.
S'ils sont séparés :
Code :
1
2
3
4
 
        List<String> lst;
        (... code ...)
        lst = new ArrayList<>();
Dans ce cas là la syntaxe ne serait sûrement pas possible.

C'est un peu comme la syntaxe raccourci des tableaux, où l'on peut omettre le type du tableau :
Code :
1
2
3
String[] array = { "a", "b", "c" };
// A la place de :
String[] array = new String[]{ "a", "b", "c" };
Mais ce n'est possible que sur la déclaration. Si on affecte le tableau plus loin dans le code on est obligé d'utilité la syntaxe complète. Ainsi ceci ne compile pas :
Code :
1
2
3
String[] array;
// ...
array  = { "a", "b", "c" };
L'intérêt étant d'éviter de dupliquer l'information lorsque c'est possible (lorsqu'il y a affectation en ligne), tout en évitant les ambiguités...

a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2008, 09h50   #78
fridobox
Membre à l'essai
 
Inscription : mars 2008
Messages : 20
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 20
Points : 22
Points : 22
Par défaut ah

Avec cette contrainte effectivement ça devient acceptable.

Thanks
fridobox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2009, 19h29   #79
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 435
Points : 22 435
C'est fait : cette proposition a été intégré dans Java 7 sous le nom de "diamond syntax".

Pour la petit histoire il s'agit de la première modification du langage de Java 7


Pour plus d'info : Première modification du langage : Diamond syntax

a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web