Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2008, 12:33   #41
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
in java un oggetto non è passato per valore, ma per riferimento, o, più precisamente, per copia del valore di un riferimento che punta ad esso. Ma l'oggetto passatto non viene copiato

non confondere l'oggetto con il suo riferimento!
intendo dire che in java un'oggetto è una variabile che contiene il riferimento a un'area di memoria. questa variabile è passata per valore come tutte le altre variabili, non c'è un trattamento speciale per gli oggetti.
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 12:42   #42
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
intendo dire che in java un'oggetto è una variabile che contiene il riferimento a un'area di memoria. questa variabile è passata per valore come tutte le altre variabili, non c'è un trattamento speciale per gli oggetti.
il tuo errore è la confuzione dei termini reference e object.

quello che tu chiami variabile identifica il reference, non l'object

il reference è passato per valore e tale fatto implica che l'object identificato dal reference è passato per riferimento
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 12:44   #43
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
Codice:
#include <stdio.h>
#include <stdlib.h>

void foo(int* number)
{
  int* anotherNumber = (int*)malloc(sizeof(int));
  (*anotherNumber) = 4;
  number = anotherNumber;
}

int main(int argc, char* argv[])
{
  int* number = (int*)malloc(sizeof(int));
  (*number) = 1;
  foo(number);
  printf("\n%d\n", (*number));
  return EXIT_SUCCESS;
}
stesso comportamento di java
prova in java a fare lo stesso per favore
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 12:55   #44
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
il tuo errore è la confuzione dei termini reference e object.

quello che tu chiami variabile identifica il reference, non l'object

il reference è passato per valore e tale fatto implica che l'object identificato dal reference è passato per riferimento
no non c'è nessun passaggio per riferimento, altrimenti l'esempio sotto darebbe come risultato 4.
un oggetto è una variabile che contiene un reference, ma non per questo possiamo dire che esiste il passaggio per riferimento in java. è proprio lo stesso discorso del C, ne più ne meno
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
prova in java a fare lo stesso per favore
certamente:
Codice:
public class Prova {

	public static void main(String[] args) {
		Integer number = new Integer(1);
		foo(number);
		System.out.println(number.toString());
	}
	
	public static void foo(Integer number) {
		Integer anotherNumber = new Integer(4);
		number = anotherNumber;
	}

}
il risultato è identico alla versione C
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:00   #45
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
no non c'è nessun passaggio per riferimento, altrimenti l'esempio sotto darebbe come risultato 4.
un oggetto è una variabile che contiene un reference, ma non per questo possiamo dire che esiste il passaggio per riferimento in java. è proprio lo stesso discorso del C, ne più ne meno

certamente:
Codice:
public class Prova {

	public static void main(String[] args) {
		Integer number = new Integer(1);
		foo(number);
		System.out.println(number.toString());
	}
	
	public static void foo(Integer number) {
		Integer anotherNumber = new Integer(4);
		number = anotherNumber;
	}

}
il risultato è identico alla versione C
spiacente, ma non hai dimostrato nulla: semplicemente number è la copia del riferimento all'oggetto integer. modificando il valore di number semplicemente lo associ a un nuovo oggetto.

guarda:
Codice:
public class Test1 {

	public static void main(String[] args) {
		int i = 0;
		foo(i);
		System.out.println(i);
		
		Integer j = 0;
		foo(j);
		System.out.println(j);
		
		Bla b = new Bla();
		foo(b);
		System.out.println(b.value);
	}
	
	private static void foo(int i) {
		i = 4;
	}
	
	private static void foo(Integer i) {
		i = 4;
	}
	
	private static void foo(Bla b){
		b.value = 4;
	}
	
	static class Bla {
		int value;
	}
}
b è passato per riferimento, infatti lo modifico
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:01   #46
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
Codice:
#include <stdio.h>
#include <stdlib.h>

void foo(int* number)
{
  int* anotherNumber = (int*)malloc(sizeof(int));
  (*anotherNumber) = 4;
  number = anotherNumber;
}

int main(int argc, char* argv[])
{
  int* number = (int*)malloc(sizeof(int));
  (*number) = 1;
  foo(number);
  printf("\n%d\n", (*number));
  return EXIT_SUCCESS;
}
scusa, mi potresti dire qual è il risultato di questo? non mi ricordo nulla di C
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:04   #47
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
il tuo errore è la confuzione dei termini reference e object.

quello che tu chiami variabile identifica il reference, non l'object

il reference è passato per valore e tale fatto implica che l'object identificato dal reference è passato per riferimento
..mi sa che l'errore è il tuo dato che konte ha perfettamente ragione.
Come spiega in maniera molto approfondita il link che avevo postato, in java esiste solo ed esclusivamente il passaggio per valore.
Infatti in java esistono essenzialmente i primitive type e i reference type.
I primitive type sono tutti i tipi primitivi, mentre i reference type comprendono i vari oggetti e arrays.
Quando tu passi un parametro ad un metodo esso non fa altro che ricevere per copia il contenuto della variabile che gli stai passando.
Poichè i primitive type contengono al loro interno semplicemente un valore, all'interno della funzione vedrai direttamente questo valore.
Poichè i reference type contengono al loro interno un riferimento (come dice il nome stesso d'altronde), allora in quel caso viene passato per copia il valore del reference type, che non è altro che il riferimento dell'oggetto.
Ovviamente tale passaggio NON è assolutamente un passaggio per riferimento dato che non puoi in alcun modo modificare il riferimento iniziale, ma puoi semplicemente agire sulla copia di tale riferimento.
Tanto per concludere, è inutile continuare a dibattere dato che Gosling stesso aveva ben chiarito questo concetto nelle specifiche del linguaggio Java, come evidenziato lungo il corso del thread che ho linkato.
Se volete continuare a credere che in java esista il passaggio per riferimento, allora fate pure.
Però state sbagliando dato che non è una questione di opinioni personali, ma di definizioni che sono state date in un certo modo all'atto della creazione del linguaggio Java e contenute nelle sue specifiche.
__________________

Ultima modifica di ^TiGeRShArK^ : 18-01-2008 alle 13:09.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:08   #48
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
..mi sa che l'errore è il tuo dato che konte ha perfettamente ragione.
Come spiega in maniera molto approfondita il link che avevo postato, in java esiste solo ed esclusivamente il passaggio per valore.
Infatti in java esistono essenzialmente i primitive type e i reference type.
I primitive type sono tutti i tipi primitivi, mentre i reference type comprendono i vari oggetti e arrays.
Quando tu passi un parametro ad un metodo esso non fa altro che ricevere per copia il contenuto della variabile che gli stai passando.
Poichè i primitive type contengono al loro interno semplicemente un valore, all'interno della funzione vedrai direttamente questo valore.
Poichè i reference type contengono al loro interno un riferimento (come dice il nome stesso d'altronde), allora in quel caso viene passato per copia il valore del reference type, che non è altro che il riferimento dell'oggetto.
Ovviamente tale passaggio NON è assolutamente un passaggio per riferimento dato che non puoi in alcun modo modificare il riferimento iniziale, ma puoi semplicemente agire sulla copia di tale riferimento.
Tanto per concludere, è inutile continuare a dibattere dato che Gosling stesso aveva ben chiarito questo concetto nelle specifiche del linguaggio Java, come evidenziato lungo il corso del thread che ho linkato.
Se volete continuare a credere che in java esista il passaggio per riferimento, allora fate pure.
Però state sbagliando dato che non è una questione di opinioni personali, ma di definizioni che sono state date in un certo modo all'atto della creazione del linguaggio Java e contenute nelle sue specifiche.
io ho affermato che il passaggio di un oggetto (concettualmente, visto che il passaggio coinvolge il reference, non l'oggetto) è per riferimento e non per copia... non mi pare di aver detto vaccate

per dirla in altro modo, sullo stack non viene posta una copia dell'oggetto, ma una copia del reference che punta a d esso.

è giusto o sbaglio?
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:16   #49
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
spiacente, ma non hai dimostrato nulla: semplicemente number è la copia del riferimento all'oggetto integer. modificando il valore di number semplicemente lo associ a un nuovo oggetto.

guarda:
Codice:
public class Test1 {

	public static void main(String[] args) {
		int i = 0;
		foo(i);
		System.out.println(i);
		
		Integer j = 0;
		foo(j);
		System.out.println(j);
		
		Bla b = new Bla();
		foo(b);
		System.out.println(b.value);
	}
	
	private static void foo(int i) {
		i = 4;
	}
	
	private static void foo(Integer i) {
		i = 4;
	}
	
	private static void foo(Bla b){
		b.value = 4;
	}
	
	static class Bla {
		int value;
	}
}
b è passato per riferimento, infatti lo modifico
il fatto che lo puoi modificare non significa che ci sia stato un passaggio per riferimento. so bene che la differenza è sottile, ma una cosa è vera finchè non si dimostra il contrario e nella fattispecie il tuo esempio sembrerebbe assecondare l'ipotesi che in java c'è il passaggio per riferimento.. se non fosse che l'esempio che ho fatto prima dimostra il contrario.
ecco per essere più chiari faccio un esempio di passaggio per riferimento in C++
Codice:
#include <stdio.h>
#include <stdlib.h>

void foo(int &number)
{
  int anotherNumber = 4;
  number = anotherNumber;
}

int main(int argc, char* argv[])
{
  int number =  1;
  foo(number);
  printf("\n%d\n", number);
  return EXIT_SUCCESS;
}
scusate se lo stile è C-like ma ho adattato l'esempio scritto in C.
ora guardando in giro per internet, pare che il tipo di passaggio dei parametri usato da java per gli oggetti e da C per i puntatori si chiami per indirizzo. ma in realtà non è altro che un passaggio per valore (con il valore che è un indirizzo)
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:17   #50
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
io ho affermato che il passaggio di un oggetto (concettualmente, visto che il passaggio coinvolge il reference, non l'oggetto) è per riferimento e non per copia... non mi pare di aver detto vaccate

per dirla in altro modo, sullo stack non viene posta una copia dell'oggetto, ma una copia del reference che punta a d esso.

è giusto o sbaglio?
Sbagli.
Quote:
Does Java pass objects by reference or by value?

The answer is NO! The fact is that Java has no facility whatsoever to pass an object to any function! The reason is that Java has no variables that contain objects.
per approfondire, visto che mi pare che avete confusione proprio nelle definizioni di base ecco due link che dovrebbero spiegare il concetto meglio di quanto riuscirei a fare io:

http://www.javaworld.com/javaworld/j...0526-pass.html
http://www.yoda.arachsys.com/java/passing.html
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:18   #51
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
scusa, mi potresti dire qual è il risultato di questo? non mi ricordo nulla di C
il risultato è: 1
lo stesso risultato si ottiene anche per l'esempio che ho postato in java, mentre l'esempio che ho appena postato in C++ restituisce 4
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:23   #52
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
Sbagli.

per approfondire, visto che mi pare che avete confusione proprio nelle definizioni di base ecco due link che dovrebbero spiegare il concetto meglio di quanto riuscirei a fare io:

http://www.javaworld.com/javaworld/j...0526-pass.html
http://www.yoda.arachsys.com/java/passing.html
perdonami, ma cosa, della frase "io ho affermato che il passaggio di un oggetto (concettualmente, visto che il passaggio coinvolge il reference, non l'oggetto) è per riferimento e non per copia..." fa intendere che venga passato l'oggetto e non il reference?

ho usato la parola "concettualmente" apposta...

e cmq non vedo perché ti debba scaldare
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 22:12   #53
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
Sbagli.

per approfondire, visto che mi pare che avete confusione proprio nelle definizioni di base ecco due link che dovrebbero spiegare il concetto meglio di quanto riuscirei a fare io:

http://www.javaworld.com/javaworld/j...0526-pass.html
http://www.yoda.arachsys.com/java/passing.html
Mmmm... bene, quindi mi sembra di aver capito bene (e il mio esempio era corretto, perciò).

Una curiosità (sì, lo so, basterebbe leggersi le specifiche del C++ ma... forse voi mi potete dare la risposta più velocemente): nemmeno in C++ credo che esista la variabile in grado di contenere un'oggetto... semplicemente, immagino che il passaggio per riferimento sia implementato come un passaggio doppiamente inderetto, cioè, mentre in Java ciò che viene passato è il riferimento ad un oggetto copiandone il valore nello stack della funzione chiamata (e ogni operazione su di esso, meno l'assegnamento, viene fatta dereferenziandolo, cioè in Java non esiste un'aritmetica dei puntatori), in C++ è possibile passare il riferimento al riferimento, cioè un puntatore all'area di memoria contenente il puntatore all'oggetto... in sostanza, l'indirizzo di (&) una variabile che è già un puntatore.
Ho indovinato?
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 18:02   #54
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Dovrei scrivere un romanzo, ma vedo che mad_hhatter ha già scritto tutto
quello che avevo in mente, e si è pure beccato vari insulti al mio posto, quindi grazie

Visto che parlate di specifiche, gosling e sua nonna in carriola,
magari postate dei link risolutivi, non i soliti swap non funzionanti,
che dimostrano solo che i riferimenti sono passati per valore
(grazie, già lo sapevo!)

Come detto molto prima, se per voi oggetto = riferimento allora avete ragione,
per me l'oggetto è quello a cui il riferimento punta.

Oppure diciamo che in java gli oggetti non esistono, è una posizione accettabile,
ma allora tutto il modello di astrazione di java non ha più senso.

A presto.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 18:54   #55
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Dovrei scrivere un romanzo, ma vedo che mad_hhatter ha già scritto tutto
quello che avevo in mente, e si è pure beccato vari insulti al mio posto, quindi grazie

Visto che parlate di specifiche, gosling e sua nonna in carriola,
magari postate dei link risolutivi, non i soliti swap non funzionanti,
che dimostrano solo che i riferimenti sono passati per valore
(grazie, già lo sapevo!)

Come detto molto prima, se per voi oggetto = riferimento allora avete ragione,
per me l'oggetto è quello a cui il riferimento punta.

Oppure diciamo che in java gli oggetti non esistono, è una posizione accettabile,
ma allora tutto il modello di astrazione di java non ha più senso.

A presto.
pensavo che l'esempio in C++ di passaggio di parametri per riferimento avesse chiarito ogni dubbio.. spero che noti una differenza sostanziale rispetto all'esempio java e se è così è evidente che non è possibile chiamarli con lo stesso nome

ps. ti potrà sembrare una sottigliezza, ma non comprendere a fondo il meccanismo di passaggio dei parametri è fonte di innumerevoli errori

pps. se sapevi che i riferimenti sono passati per valore allora sapevi anche che gli oggetti non sono passati per riferimento

Ultima modifica di k0nt3 : 19-01-2008 alle 19:20.
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 20:40   #56
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Dovrei scrivere un romanzo, ma vedo che mad_hhatter ha già scritto tutto
quello che avevo in mente, e si è pure beccato vari insulti al mio posto, quindi grazie

Visto che parlate di specifiche, gosling e sua nonna in carriola,
magari postate dei link risolutivi, non i soliti swap non funzionanti,
che dimostrano solo che i riferimenti sono passati per valore
(grazie, già lo sapevo!)

Come detto molto prima, se per voi oggetto = riferimento allora avete ragione,
per me l'oggetto è quello a cui il riferimento punta.

Oppure diciamo che in java gli oggetti non esistono, è una posizione accettabile,
ma allora tutto il modello di astrazione di java non ha più senso.

A presto.
guarda..
per me puoi tenerti tutte le convinzioni che vuoi..
Ma come ho scritto prima in java esistono solo due tipi:
i primitive type e i reference type.
Ovviamente gli oggetti appartengono ai reference type dato che come ho riportato e come è spiegato molto chiaramente nei link che ho riportato in java non esiste alcuna variabile che contiene un oggetto.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 21:24   #57
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
guarda..
per me puoi tenerti tutte le convinzioni che vuoi..
Ma come ho scritto prima in java esistono solo due tipi:
i primitive type e i reference type.
Ovviamente gli oggetti appartengono ai reference type dato che come ho riportato e come è spiegato molto chiaramente nei link che ho riportato in java non esiste alcuna variabile che contiene un oggetto.
allora, vediamo di riassumere quello che hai detto:
1) "oggetto" E' un reference type
2) "variabile" non contiene un oggetto

implica: "variabile" non contiene un sottoinsieme di tutti i reference type

domanda: come si usano i reference type che rappresentano oggetti se non sono nominabili tramite variabile?

ovviamente da qualche parte il tuo discorso non quadra.


Ora RIespongo il mio pensiero cercando di essere piu' formale e preciso di quanto sia stato in precedenza (visto che, rileggendomi, ho notato parecchie imprecisioni).
Un reference type e' una variabile che contiene un riferimento, un link, un puntatore a un'entita' residente nello heap e che costituisce un oggetto, cioe' un'istanza di una classe. ATTENZIONE: "oggetto" e' diverso da "reference"!

Ora, i parametri di un metodo possono essere reference type o primitive type, concentramoci sui reference type... concordiamo tutti sul fatto che un parametro in java e' passato solo per valore.
MA, poiche' un reference type ha senso solo in quanto rappresentante dell'oggetto a cui esso fa riferimento, e' comune identificare (SOLO A LIVELLO CONCETTUALE, per semplicita' di ragionamento) il reference con l'oggetto.

In questo senso diciamo (consci di commettere un abuso di notazione, e sempre parlando a livello di rappresentazione concettuale e a puro scopo semplificativo) che il fatto di passare per valore un reference EQUIVALE (nel senso che "e' come se... anche se tecnicamente non succede per davvero") a passare per riferimento l'oggetto a cui punta il reference passato.

Ora, siccome il secondo dei link che hai postato per ultimi dice a un certo punto che in C (dove abbiamo appuranto che esiste solo il passaggio per valore) e' possibile simulare il passaggio per riferimento usando i puntatori (ma di fatto sto passando per valore il puntatore di qualcosa), non vedo perche' io debba essere accusato di dire stronzate quando dico che in java passare per valore il riferimento a un oggetto equivale concettualmente a passare l'oggetto per riferimento (sto persino usando gli stessi termini ).

Piu' terra terra: un oggetto e' passato per riferimento perche' l'unica cosa che mi permette di operare su e con un oggetto e' il suo riferimento.

Se non e' chiaro, la parola importante del mio discorso e' quel "concettualmente".

Ultima modifica di mad_hhatter : 19-01-2008 alle 21:29.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 21:37   #58
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
In questo senso diciamo (consci di commettere un abuso di notazione, e sempre parlando a livello di rappresentazione concettuale e a puro scopo semplificativo) che il fatto di passare per valore un reference EQUIVALE (nel senso che "e' come se... anche se tecnicamente non succede per davvero") a passare per riferimento l'oggetto a cui punta il reference passato.
il problema è proprio qui! passare per valore il riferimento non equivale affatto a passare per riferimento l'oggetto, altrimenti come chiameresti il passaggio di parametri dell'esempio che ho postato in C++?
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 21:42   #59
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
pensavo che l'esempio in C++ di passaggio di parametri per riferimento avesse chiarito ogni dubbio.. spero che noti una differenza sostanziale rispetto all'esempio java e se è così è evidente che non è possibile chiamarli con lo stesso nome

ps. ti potrà sembrare una sottigliezza, ma non comprendere a fondo il meccanismo di passaggio dei parametri è fonte di innumerevoli errori

pps. se sapevi che i riferimenti sono passati per valore allora sapevi anche che gli oggetti non sono passati per riferimento
nell'esempio in C++ le cose vanno diversamente perche' la semantica dell'operatore di assegnamento e' diversa da java.

Nella versione java stai dicendo:
"prendi il rimerimento number e fallo puntare a questo nuovo oggetto". ovviamente number e' una copia e il riferimento originario (quello del chiamante) non viene toccato.

In C++:
ti fai dare l'indirizzo di un'entita' e poi dici: all'entita' presente a quell'indirizzo fai assumere questo valore

il che mi sembra assomigliare molto a quello che, in java, si fa partendo dal riferimento a un oggetto che contiene un dato membro e si cambia il valore di quest'ultimo.

nota che ho detto assomigliare, non "essere esattamente la stessa cosa"
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 21:50   #60
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
il problema è proprio qui! passare per valore il riferimento non equivale affatto a passare per riferimento l'oggetto, altrimenti come chiameresti il passaggio di parametri dell'esempio che ho postato in C++?
e tu come lo chiami, in java, il "passaggio di un oggetto" (lo so, non viene passato l'oggetto, ma passami l'abuso di linguaggio)? lo chiami "per valore"?

certo, in C++ sovrascrivi l'oggetto (o almeno questo e' quello che deduco dal tuo esempio), in java non puoi, ok. pero' in java, limitatamente agli oggetti, posso modificarne i membri emulando una sovrascrittura.

di sicuro in java un oggetto non e' passato per valore, quindi io lo chiamo, per semplicita', passaggio per riferimento. sempre concettualemte e consapevole dell'imprecisione.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Afeela è morta: chiusa definitiva...
Intel BOT altera i risultati, Geekbench ...
Intel e AMD faticano a soddisfare la dom...
Microsoft e NVIDIA insieme per dare una ...
Ring rinnova l'intera gamma video: 4K su...
Recensione Galaxy Buds4 Pro: le cuffie S...
Spotify si arricchisce ancora: arriva So...
I digital twin di AVEVA a supporto delle...
Iliad non si ferma: clienti in crescita ...
XuanTie C950, il chip IA di Alibaba basa...
Volkswagen richiama 94.000 auto elettric...
Le nuove LaserJet di HP portano la critt...
FSR 4 gira sulla GPU di PS5 Pro, ma non ...
Intel rinnova l'offerta professionale: C...
Galaxy A57 5G e A37 5G ufficiali: l'IA d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v