Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 86 odgovora
  • 26.894 pregleda

Najnovija ↓

Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 15:09 · pre 223 meseca #41
Citat:
franticnick: ...
Zato Vanjin primer menja objekat koji je prosledjen.
...
Moram da primetim da je Vanja pomalo "kvarno" :) ubacio ovaj primer kako bi se napravila jos veca pometnja. Naravno, odmah si se upecao :)


Wow ! Vanjin primer menja objekat koji je prosleđen ! Mirakul ! Kako li se samo Vanja toga setio !? Sasvim neuobičajen i "kvaran" primer za Javu. I ja sam se "upecao" !

Sine, prema tvojim postovima, jasno je da si za termin "referenca" saznao pre tri dana:

Citat:
franticnickOk, malo sam proguglao. Izgleda da se odomacio izraz "reference value" za ono sto imamo u Javi.


Tj. pre tri dana si "malo proguglao" u vezi Jave. Ali eto, već danas žariš i pališ i "deliš lekcije".

Bila jedna pesma Riblje Čorbe (popularna rok grupa u SFRJ tokom 80-tih) o alavosti i balavosti.
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 15:37 · pre 223 meseca #42
Citat:
Java Beograd: Tj. pre tri dana si "malo proguglao" u vezi Jave. Ali eto, već danas žariš i pališ i "deliš lekcije".

Bila jedna pesma Riblje Čorbe (popularna rok grupa u SFRJ tokom 80-tih) o alavosti i balavosti.


Jeste, procitao si me. Pre tri dana sam jedva nesto malo citao o Javi i to je to :)

Nego molio bih ako mozes da odgovoris na: "Da li se slazes da se reference u Javi uvek prenose by value?"
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 15:45 · pre 223 meseca #43
Naravno da se prenose, ali poenta je bila da se sa njima ne mozes igrati
nego samo sa objektima na koje te reference ukazuju.Sta ti vredi prenos
reference po vrednosti kad ti nista ne znaci. Objekat je ono sto nas
zanima. Kako bi nazvao kad u C++ prosledis pokazivac funkciji? Prosledio
sam pokazivac po vrednosti? A kako kad prosledis pokazivac na pokazivac?
Hehe...kad se samo setim toga....
Potpis
"Čovek je biće koje se na sve navikava, i ja mislim da je ovo njegova najbolja definicija."
Fjodor M. Dostojevski
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 15:58 · pre 223 meseca #44
@augustus
Moja poenta je da se u Javi sve prenosi po vrednosti. To pokusavam da kazem u ne znam koliko poslednjih postova.

Sto se tice C++ zavisi kako bi argument f-je bio deklarisan :)
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 16:03 · pre 223 meseca #45
Problem je sto se tako ne mozes izraziti bez objasnjenja.
fuja(Object o) - i kad kazes da se prenosi po vrednosti, prva stvar koja
se pomisli jeste ta da se vrednost objekta o prosledila, a nije vec
vrednost njegovog pokazivaca ili ti referenca ili ti neka tamo lokacija
u memoriji.
Potpis
"Čovek je biće koje se na sve navikava, i ja mislim da je ovo njegova najbolja definicija."
Fjodor M. Dostojevski
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 16:10 · pre 223 meseca #46
@augustus
U postu gde objasnjavam Vanjin primer (a i u onom gde objasnjavam moj) objasnio sam na sta mislim. A imate i mucky-jev post gde je sve kristalno jasno. Tesko da je to moglo ostati nerazjasnjeno.
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 20:01 · pre 223 meseca #47
Svako u svojoj glavi mozhe ovu problematiku objashnjavati kako hocje, pa eto mozhe recji i da se objekti u Javi prosledjuju po referenci.

Ali ipak je ovo javni forum, i dosta pochetnika ovde dolazi da neshto nauchi, i stoga smatram da se stvari moraju nazivati pravim imenima. Jeste tezhe i komplikovanije, ali je jedino ispravno!

Dakle, josh jednom cju ponoviti:

1.
Code:
Object a = new Object();

Promenljiva a NIJE objekat. Promenljiva a je POKAZIVACH NA OBJEKTE TIPA Object, i nakon izvrshavanja ove linije taj pokazivach u sebi sadrzhi adresu ka novokreiranom objektu. Pokazivach a mozhete menjati na dva nachina: dodeliti mu adresu nekog drugog objekta, ili vrednost null. Od logichkih funkcija, pokazivachi u Java jeziku podrzhavaju samo proveru (ne)jednakosti.

2. U Java programskom jeziku, funkcijama se svi argumenti prosledjuju PO VREDNOSTI (CALL BY VALUE). Poshto objektima pristupamo preko pokazivacha (ili reference, svejedno), funkcijama zapravo ne prosledjujemo objekte nego pokazivache na te objekte. Postoje programski jezici u kojima je implementirano pravo prosledjivanje argumenata po referenci (call by reference), ali u Java jeziku to definitivno nije sluchaj.
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 22:45 · pre 223 meseca #48
Ja nemam neko veliko Java iskustvo, ali nije li malo rogobatno stalno pričati "metoda prima referencu na objekat klase T" umesto "metoda prima objekat klase T"? Čisto onako sa stanovišta jezičke i mentalne ekonomije? Mislim, nikad se i ne prosleđuju sami objekti, jel tako? Dakle, kad neko kaže "prosleđujem objekat", uvek podrazumeva da prosleđuje referencu. A ako već, apstraktno gledano, prosleđuje objekat, taj objekat se defakto prosleđuje po referenci (što je ekvivalentno tome da se zapravo njegova referenca prosleđuje po vrednosti).
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 23:29 · pre 223 meseca #49
Citat:

"There is exactly one parameter passing mode in Java - pass by value - and that helps keep things simple." The Java Programming Language, 2nd ed. by Ken Arnold and James Gosling, section 2.6.1, page 40, 3rd paragraph.


Za one koji ne znaju, James Gosling se smatra autorom programskog jezika Java. (http://en.wikipedia.org/wiki/James_Gosling)
Re: Pointeri i JAVA ili u JAVI :) 09.06.2008. u 23:44 · pre 223 meseca #50
Sve to stoji, ali da li ja zaista grešim ako kažem da sam ovime: metoda(objekat) pozvao metodu i prosledio joj objekat (po referenci)?
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 00:30 · pre 223 meseca
izmenjeno 1 put, poslednji put srki 10.06.2008. u 00:43
  1. srki10.06.2008. u 00:43zapis iz teksta poruke
#51
Citat:
jablan: Ja nemam neko veliko Java iskustvo, ali nije li malo rogobatno stalno pričati "metoda prima referencu na objekat klase T" umesto "metoda prima objekat klase T"? Čisto onako sa stanovišta jezičke i mentalne ekonomije? Mislim, nikad se i ne prosleđuju sami objekti, jel tako?


U Javi ne ali u C++u da! Recimo ako u C++u definisemo someFunction(Integer i) onda ce se za razliku od Jave zvati copy constructor za objekat i, pa ce se lepo preneti samo vrednost. To je zato sto u C++u deklaracija Integer i; znaci da je i objekat tipa Integer dok to u Javi znaci da je i konstantni pointer na objekat tipa Integer. U C++u bi to pisao kao Integer* const i = new Integer(10);.

Citat:
Sve to stoji, ali da li ja zaista grešim ako kažem da sam ovime: metoda(objekat) pozvao metodu i prosledio joj objekat (po referenci)?
Kao sto rekoh, u pitanju je samo terminologija oko koje se ne slazemo ali izgleda da je Java Beograd to prevideo pa je pomislio da neko ne razume sta se desava i to je razlog njegovog tona.

@Gosha: sta je pogresno rekao da bi pitao koliki mu je staz u programiranju?
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 01:50 · pre 223 meseca #52


Kome i dalje nije jasno neka menja profesiju ;)

Poz. Gosha
Potpis
JokeJunky :)

Mrzim sublimirane marketinske poruke.
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 02:06 · pre 223 meseca #53
Izgleda da tebi nije jasno sta je on pokusao da kaze a i ja u mojoj poruci. U pitanju je terminologija i ja to posmatram kao da je u Javi nemoguce napraviti promenjivu koja je Objekat vec samo promenjivu ciji je tip konstantni pokazivac na neki objekat (za razliku od C++ gde je moguce uraditi i jedno i drugo). Zbog toga smatram da je u Javi uvek pass by value kao sto kaze i tvorac jave dok u C++u mozes da deklarises funkciju da bude i pass by reference. Da li ti isto tako mislis ili mislis da je u javi ponekad pass by reference a ponekad pass by value u zavisnosti od toga da li je promenjiva primitiva ili ne?
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 02:46 · pre 223 meseca #54
Znachi Gosho, u tvojoj interpretaciji sheme koju si nam tako samouvereno poslao, kada u call by value jeziku nekoj funkciji prosledimo pointer na objekat, u toj funkciji dobijemo i kopiju pointera i kopiju objekta? Katastrofa!
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 09:59 · pre 223 meseca
izmenjeno 1 put, poslednji put Au197/79 10.06.2008. u 10:14
  1. Au197/7910.06.2008. u 10:14zapis iz teksta poruke
#55
Goshin primer pod a) (uz grešku koju je mucky primetio) je iz C++, dakle čovek je promašio podforum. Kao što je već rečeno u javi se objektni nikad ne prenose niti postoji promenjiva koja čuva objekat, već se isključivo čuvaju i penose <java terminologija>reference</javina terminologija> što je slično <c/c++ i uobičajena terminologija>pokazivačima samo bez mogućnosti primene aritmetičkih operatora, nema uzimanja adrese sa &, nema derefereciranja sa * ili -> (zapravo ima sa „.“) , a sva ostala analogija funkcioniše</c/c++ i uobičajena terminologija>

Način prenošenja argumenata na parametre se u uobičajenoj terminologiji zove call by value i bukvalno je isti kao u C-u. Call by reference je ono sa VAR parametrima u paskalu. Jeste da se to interno prevodi na prenošenje pokazivača i menjanje onoga na šta pokazivač pokazuje (što se C-u može ručno uraditi, a i u javi je ekvivalentno menjanju objekata preko referece, ali nije moguće uraditi sa prostim tipovima, osim preko nekog wrapera koji nije immutable) ali Call by reference je kad ti u samom jeziku imaš direktnu podršku za to.
Potpis
Bolje džaba ležat nego džaba radit.
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 10:31 · pre 223 meseca
izmenjeno 1 put, poslednji put gosha 10.06.2008. u 10:46
  1. gosha10.06.2008. u 10:46zapis iz teksta poruke
#56
Citat:
mucky: Znachi Gosho, u tvojoj interpretaciji sheme koju si nam tako samouvereno poslao, kada u call by value jeziku nekoj funkciji prosledimo pointer na objekat, u toj funkciji dobijemo i kopiju pointera i kopiju objekta? Katastrofa!

A jesam li ja nacrtao memoriju ili funkciju ? Lepo odgovoris na ovo pitanje pa ces, nadam se, skontati sta je "katastrofa" u celoj ovoj temi.
I da posle 20 godina programiranja mogu krajnje samouvereno da nastupam u objasnjavanju kako se posmatra nacin prenosenja parametara.

Za kraj od mene jos jedan nacin za odlucivanje da li je BY REF ili BY VAL:

Class A (mod: greska treba Objekat A)

prosledjujem A

da li ce izmene nad A ostati po izlasku iz f-je ?

HOCE - PASS BY REFERENCE
NECE - PASS BY VALUE

Poz. Gosha
Potpis
JokeJunky :)

Mrzim sublimirane marketinske poruke.
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 10:38 · pre 223 meseca #57
Hvala bogu da neko nešto pametno napiše. (Mislim na poslednji post Au197/79 i potpuno poslednje Gošine reči)

Uzgred, primećujem nekoliko pojava:
- S idejom "SVE JE TO ISTO" C++ develoepri kreću u Java development, i ni ne pokušavaju da počnu da razmišljaju u Javi.
- Masa svršenih i nesvršenih studenata raznih fakulteta prenosi "znanja" svojih asistenata iz skripti sumnjivog kvaliteta.

Ali nije to ništa naspram papazjaniji u C# svetu gde su se sjatili i Java i C++ developeri, a vesela objektno orijentisana družina je upotpunjena belosvetskom komunom Visual Basic (!?) developera. Šlag na tortu čine ASP i PHP developeri. Šta je sledeće ?
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 10:43 · pre 223 meseca #58
Citat:
gosha:
Class A

prosledjujem A

da li ce izmene nad A ostati po izlasku iz f-je ?

HOCE - PASS BY REFERENCE
NECE - PASS BY VALUE

Poz. Gosha



Ovo je sustina svega.

Pozdrav
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 10:44 · pre 223 meseca #59
Citat:
jablan: Sve to stoji, ali da li ja zaista grešim ako kažem da sam ovime: metoda(objekat) pozvao metodu i prosledio joj objekat (po referenci)?


Pa sad, ako stvari posmatras filozofski onda verovatno ne gresis ;) Nego ozbiljno, mislim da je oko ovih stvari veoma vazno biti krajnje precizan i odredjen. Vidis i sam koliko je proizvoljnih tumacenja napravila losa definicija "pass by reference" koja se eto jos uvek moze naci i u ponekoj Java knjizi.
Re: Pointeri i JAVA ili u JAVI :) 10.06.2008. u 11:01 · pre 223 meseca #60
Citat:
gosha: A jesam li ja nacrtao memoriju ili funkciju ? Lepo odgovoris na ovo pitanje pa ces, nadam se, skontati sta je "katastrofa" u celoj ovoj temi.
I da posle 20 godina programiranja mogu krajnje samouvereno da nastupam u objasnjavanju kako se posmatra nacin prenosenja parametara.


Mi se ovde upljuvali prichajucji o prenoshenju argumenata funkciji, ti se pojavljujesh sa dijagramom sumnjive relevantnosti i sa 20 godina programerskog iskustva, i sad josh relativizujesh "na shta si u stvari mislio". Chak ni time necesh da nas prosvetlish, nego nas pushtash da eto sami, glupavi, neprofesionalni i neiskusni zakljuchimo shta si ti u stvari hteo da nam kazhesh.

I taj tvoj primer je opet neprecizan, jer se "objekat A" mozhe proslediti funkciji preko pointera ili direktno (naravno, direktno ne mozhe u Java jeziku). I shta onda to tvoje iskusno rezonovanje "HOCE-NECE" znachi? Ovo je retorichko pitanje, ne morash odgovarati.

Ja sam sa svoje strane do sada rekao ono shto mislim da je vredno pazhnje, i da je 100% istina (ne po mom rezonovanju nego zvanicnom ispravnom rezonovanju). Stoga, povlachim se odavde kao i Java Beograd (i ne zovem svog Goshu da me brani dijagramima) :)


P.S. I moja baba-strina je imala 80+ godina pa u zhivotu nije videla more. It's not about the year of production, it's about the mileage.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme