Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1079 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Les pointeurs en Java

n°1323745
Profil sup​primé
Posté le 12-03-2006 à 17:02:34  answer
 

Reprise du message précédent :
C'est toujours plus hype de faire du pointeur  :o  
Le passage aux pointeurs est souvent un moment délicat dans l'apprentissage du noob. C'est un peu comme un rituel d'intégration  :o  
 
"Passe ton Ada et ton C++ d'abord !   :D "
 
 

mood
Publicité
Posté le 12-03-2006 à 17:02:34  profilanswer
 

n°1323753
powel42
Posté le 12-03-2006 à 17:23:32  profilanswer
 


 
Je comprends bien que quand on a ses petites habitudes (ex: manipulation de pointeurs) c'est dur d'en changer  ;)  mais ce n'est pas parce qu'on ne manipule pas de pointeurs en Java, que ça devient plus compliqué ... au contraire !  

n°1323763
sircam
I Like Trains
Posté le 12-03-2006 à 17:53:43  profilanswer
 

Citation :

Mouais ... Le fait que java ne te permette pas de faire joujou avec les pointeurs ... moi je dis que c'est pas plus mal ..


Citation :

mais qu'est ce qu'on en a à faire des pointeurs enfin !


Citation :

Tu peux expliquer pourquoi tu regrettes que tout soit passé par référence dans la majorité des langages modernes


Citation :

<bk> les pointeurs proviennent de l'esprit tortueux du malin, qui a décidé que la programmation n'était pas assez compliquée et qu'il fallait un truc en plus pour faire chier le pauvre pisseur de code programmeur </bk>


 
==> Les pointeurs, cai malle, admettons. Mais pour reprendre une source citée plus haut:
 

Citation :

Java has pointers


 
Le problème, c'est qu'à moins d'avoir des notions relativement poussées (ea sur la théorie des compilateurs, et certainement en C/C++), il est difficile de comprendre ces pass-by-value qui ressemblent à des pass-by-ref.
 
Toujours selon la même source, vous m'expliquerez quel noob n'ayant pas "nos" connaissances en C/C++/Java (bienheureux sont ceux d'entre nous qui ont été élevé à l'ancienne) pourra comprendre ce genre d'assertions:
 

Citation :

Objects are not passed by reference. A correct statement would be Object references are passed by value.


 
Ja n'ai aucun problème avec ça; la plupart d'entre vous non plus je suppose, mais ça sent tout de même le Malin et le soufre, et ça en dit long sur la complexité sous-jacente.
 

Code :
  1. public void foo(Dog d) {
  2.     d = new Dog("Fifi" );
  3.   }
  4.   Dog aDog = new Dog("Max" );
  5.   foo(aDog);


 
Je suis certain que pas mal de développeurs, même expérimentés, trébucheront sur ce piège inhérent à Java. Si on avait dès le départ Dog *d; je suis convaincu qu'on éviterait bien des ambiguïtés.
 

Citation :

The use of the word "reference" in Java was an incredibly poor choice (in my not-so-humble opinion...) Java has pointers, plain and simple.


 
Il me plaît bien, cet article. Je me demande si je ne devrais pas organiser un quizz là-dessus.[:petrus75]
 
Finalement, je préfère un langage où on fait joujou avec des pointeurs, avec tous les risques que cela comprend et les affres que cela suppose, mais où on doit réflechir à ce qu'on fait, plutôt qu'un langage qui tente d'occulter à grand mal de bien sinistres réalités pour nous protéger, mais à quel prix ?
 
Alors OK pour virer les pointeurs, mais à condition d'être complètement isolé des contingences sous-jacentes. Pas comme dans l'exemple du chien...
 

Citation :

non mais ça c'est une connerie monumentale de Java d'avoir laissé des types primitifs


 
Un peu de Evil Inside ne nuit pas. [:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1323788
nraynaud
lol
Posté le 12-03-2006 à 19:32:39  profilanswer
 

sircam -> avec des rectangles et des flèche, comme on a toujours fait depuis Lisp

n°1323824
benou
Posté le 12-03-2006 à 20:31:36  profilanswer
 

Citation :


Je suis certain que pas mal de développeurs, même expérimentés, trébucheront sur ce piège inhérent à Java. Si on avait dès le départ Dog *d; je suis convaincu qu'on éviterait bien des ambiguïtés.


Il est où le piège ?
 
Mon avis c'est que y a que les mecs qui ont fait du C++ pour sont gênés par le passage de paramètre en java. A moi ca me parait une évidence ...
Ce serait plutôt la façon de faire du C++ qui me poserait des problèmes (si j'en faisais) avec ses duplications d'objets lors du passage en paramètre ...

Message cité 1 fois
Message édité par benou le 12-03-2006 à 20:33:00

---------------
ma vie, mon oeuvre - HomePlayer
n°1323831
esox_ch
Posté le 12-03-2006 à 20:41:57  profilanswer
 

Perso la 1ere fois que j'ai fait du C++ (il y a environ 6 mois) j'ai eu un peu de peine a comprendre ce qu'était un pointeur ... Et encore maintenant ça me fous dedans des fois quand j'oublie qu'un tableau est de toutes façons passé par ref alors que le reste non. Tout ça pour dire que je suis pas convaincu que le manque de pointeur pose d'enormes problemes pour apprendre ... mais c'est surtout de faire de devoir "desapprendre" à utiliser les pointeurs qui doit etre penible ... Mais bon c'est les joies de passer d'un langage a un autre non?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1323839
sircam
I Like Trains
Posté le 12-03-2006 à 20:51:25  profilanswer
 

benou a écrit :

Il est où le piège ?


Lis la page en question and find out. Je suis certain que pas mal de gens tomberont dans le panneau. Si tu a donné la bonne réponse, c'est que t'es dans le bon. Mais l'explication fait appel à des notions relativement eu égard par rapport à la soi-disant simplicité annoncée du langage.
 
A essayer au bureau, avec les collègues. [:dawa]
 
C'est pas l'absence de pointeurs qui nuit... C'est plutôt ces histoires de "références" pour ne pas parler de pointeurs et pour évacuer à la va-vite les questions de passage par valeur / par ref. A ce tarif, je préfère que les choses soient clairement annoncées dès le départ.
 
Encore une fois, "à un certain niveau", ça ne pose pas de problème, mais les routards qui trainent ici ont combien d'années d'expérience et de kilomètres au compteur en Java, C ou C++ ?  [:airforceone]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1323854
nraynaud
lol
Posté le 12-03-2006 à 21:09:54  profilanswer
 

sircam a écrit :

Lis la page en question and find out. Je suis certain que pas mal de gens tomberont dans le panneau. Si tu a donné la bonne réponse, c'est que t'es dans le bon. Mais l'explication fait appel à des notions relativement eu égard par rapport à la soi-disant simplicité annoncée du langage.
 
A essayer au bureau, avec les collègues. [:dawa]
 
C'est pas l'absence de pointeurs qui nuit... C'est plutôt ces histoires de "références" pour ne pas parler de pointeurs et pour évacuer à la va-vite les questions de passage par valeur / par ref. A ce tarif, je préfère que les choses soient clairement annoncées dès le départ.
 
Encore une fois, "à un certain niveau", ça ne pose pas de problème, mais les routards qui trainent ici ont combien d'années d'expérience et de kilomètres au compteur en Java, C ou C++ ?  [:airforceone]


je te rappelle que le vocabulaire juste est "référence" derrière une référence, tu AS un objet, un pointeur ça pointe vers un bout de mémoire, tu sais pas ce qu'il y a derrière (et c'est tant mieux dans certaines circonstances, tu es bien content de pouvoir structurer la mémoire à ta guise dans un pilote de matériel mappé en mémoire)

n°1323855
nraynaud
lol
Posté le 12-03-2006 à 21:11:15  profilanswer
 

j'ai la flemme de faire les schémas là, mais je sais comment expliquer ça à des débutants.

n°1323909
Profil sup​primé
Posté le 12-03-2006 à 22:43:21  answer
 

Pour les débutants y a des livres qui expliquent ca tres bien,  mias faut il avoir le temps de les lire.

mood
Publicité
Posté le 12-03-2006 à 22:43:21  profilanswer
 

n°1323956
Profil sup​primé
Posté le 13-03-2006 à 08:11:24  answer
 

En effet, de la bonne programmation commence d'abord par le papier  :o  +1

n°1324301
push
/dev/random
Posté le 13-03-2006 à 15:09:03  profilanswer
 

nraynaud a écrit :

je te rappelle que le vocabulaire juste est "référence" derrière une référence, tu AS un objet


Bein non, en l'occurance en Java tu peux n'avoir ... rien, et l'exception lachée est assez parlante quant au sens que prend le terme référence dans ce langage. Ici elle prend le sens d'un pointeur "safe" auto-déférencé, en C++ elle représente un alias. Tout ça pour dire que le terme référence est loin d'avoir une définition universelle.


Message édité par push le 13-03-2006 à 15:10:40
n°1325125
Trollable
Posté le 14-03-2006 à 14:55:07  profilanswer
 

Code :
  1. main() {
  2.   typedef struct { } A;
  3.   A& a=*((A*)0);
  4. }


---------------
The Million Dollar Screenshot  (seo v7ndotcom elursrebmem paesys wifi)
n°1325129
push
/dev/random
Posté le 14-03-2006 à 15:02:45  profilanswer
 

trollable> c'est pas bien de pas lire un topic avant de poster, ça à déjà été dit
 
Note: in particular, a null reference cannot exist in a
well-defined program, because the only way to create such a
reference would be to bind it to the "object" obtained by
dereferencing a null pointer, which causes undefined behavior.

n°1325180
Trollable
Posté le 14-03-2006 à 16:01:47  profilanswer
 

Et comment je sais si ce pointeur est nul?
On peut traduire la note ainsi:
La seule maniere d'avoir une reference nulle est en ayant une erreur dans son programme...
 

Code :
  1. typedef struct { } A;
  2. A* f1(int _a) {
  3.   return (A*)_a;
  4. }
  5. A* b;
  6. A& f2(A* _a) {
  7.   b=_a;
  8.   return *b;
  9. }
  10. main() {
  11.   A& a=f2(f1(0));
  12. }


---------------
The Million Dollar Screenshot  (seo v7ndotcom elursrebmem paesys wifi)
n°1325196
push
/dev/random
Posté le 14-03-2006 à 16:16:17  profilanswer
 

Trollable a écrit :

Et comment je sais si ce pointeur est nul?


Tu rigoles là ?

Trollable a écrit :

On peut traduire la note ainsi:
La seule maniere d'avoir une reference nulle est en ayant une erreur dans son programme...


L'erreur en question c'est de binder une référence à un "objet" (qui n'en est pas un évidement) via un pointeur null, essaye d'accéder à ta jolie référence et tu verras pourquoi c'est une erreur.


Message édité par push le 14-03-2006 à 16:17:35
n°1330170
noldor
Rockn'roll
Posté le 22-03-2006 à 13:39:36  profilanswer
 

masklinn a écrit :

Hum, non, le seul truc passé par recopie (par valeur) en Java ce sont les "primitive types", qui en plus d'être lourdement (et de plus en plus) critiqués ne sont pas des objets, et ne forme qu'une partie des built-ins Java.
 
La dychotomie passage par référence/valeur en Java est parallèle à la dychotomie "primitive types"/objects [:spamafote]  
 
Après, Java le langage (pour le séparer de Java la plateforme, Java la VM, ...) est imo un langage pourri, donc bon...
 
Non, je voulais bel et bien dire fonction, prendre une fonction et la trimballer en tant qu'argument d'autres fonctions [:spamafote]


archi faux, tout est passé par *valeur* en Java

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Lancer navigateur web à partir d'un programme java[C++] Les différents types de pointeurs sur fonction ?
[Java/Jdom] Copie d'un element vers un nouveau documentPointeurs, gestion de la memoire (Pascal)
[Java] Interrupteur dans cellule de tablede java vers c++
Pb: telechargement plugin java en html lors du lancement d'une appletIHM de c++ en JAVA
[Java] Gestionnaire des taches windows en java....java et pointeurs sur fonction
Plus de sujets relatifs à : Les pointeurs en Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR