-
21. Data: 2012-06-26 22:54:02
Temat: Re: Java i goto
Od: Edek Pienkowski <e...@g...com>
Dnia Tue, 26 Jun 2012 15:27:54 -0500, A.L. napisal:
> On Tue, 26 Jun 2012 19:59:18 +0000 (UTC), Edek Pienkowski
> <e...@g...com> wrote:
>
>>Dnia Tue, 26 Jun 2012 20:45:19 +0200, Tomasz Sowa napisal:
>>
>>> On 2012.06.26 15:15, Roman W wrote:
>>>
>>>> No ale to samo jest z rekurencja, ale rekurencja jest cacy, a goto
>>>> jest be.
>>>
>>> To nie ma nic wspólnego z rekurencją.
>>
>>A z czym? Chodziło chyba o analizowanie kodu w sensie czytania,
>>bo dla narzędzi while nie różni się od for ani nie różniłoby się od
>>goto.
>
> A czy ty wiesz co to jest "rekurencja"?...
Czy dałoby się to podchwytliwe pytanie wyrazić jaśniej? Bo pomimo
najlepszych chęci nie rozumiem przesłania.
Edek
-
22. Data: 2012-06-27 01:47:53
Temat: Re: Java i goto
Od: Roman W <b...@g...pl>
On Tuesday, June 26, 2012 7:45:19 PM UTC+1, Tomasz Sowa wrote:
> On 2012.06.26 15:15, Roman W wrote:
>
> > No ale to samo jest z rekurencja, ale rekurencja jest cacy, a goto jest be.
>
> To nie ma nic wspólnego z rekurencją.
A rekurencja tez nie zapetla grafu wywolan?
RW
-
23. Data: 2012-06-27 10:09:40
Temat: Re: Java i goto
Od: Andrzej Jarzabek <a...@g...com>
On Jun 25, 6:28 pm, A.L. <l...@a...com> wrote:
> On Mon, 25 Jun 2012 17:12:02 +0000 (UTC), Edek Pienkowski
>
> A co o takim rozwiazaniu?...
>
> search_complete:
> { // begin of search_complete block
> for()
> for() {
> if (findSth()) {
> found = sth;
> break search_complete;
> }
> }
> }
> throw new Failure();
>
> } // end of search_complete block
Czyste zło na patyku. Proponuję jednak:
private boolean find()
{
for()
for() {
if (findSth()) {
found = sth;
return true;
}
}
}
return false;
}
-
24. Data: 2012-06-27 10:42:10
Temat: Re: Java i goto
Od: Edek Pienkowski <e...@g...com>
Dnia Wed, 27 Jun 2012 01:09:40 -0700, Andrzej Jarzabek napisal:
> On Jun 25, 6:28 pm, A.L. <l...@a...com> wrote:
>> On Mon, 25 Jun 2012 17:12:02 +0000 (UTC), Edek Pienkowski
>>
>> A co o takim rozwiazaniu?...
>>
>> search_complete:
>> { // begin of search_complete block
>> for()
>> for() {
>> if (findSth()) {
>> found = sth;
>> break search_complete;
>> }
>> }
>> }
>> throw new Failure();
>>
>> } // end of search_complete block
>
> Czyste zło na patyku. Proponuję jednak:
>
> private boolean find()
> {
> for()
> for() {
> if (findSth()) {
> found = sth;
> return true;
> }
> }
> }
> return false;
> }
Mało mnie to cieszy, ale jak widać niedostarczająco wyraźnie
sformułowałem posty. BTW Czyte Drobro Na Patyku to podobno
jedno "return".
Edek
-
25. Data: 2012-06-27 10:58:29
Temat: Re: Java i goto
Od: Andrzej Jarzabek <a...@g...com>
On Jun 27, 9:42 am, Edek Pienkowski <e...@g...com> wrote:
> Dnia Wed, 27 Jun 2012 01:09:40 -0700, Andrzej Jarzabek napisal:
>
>
>
>
>
>
>
>
>
> > On Jun 25, 6:28 pm, A.L. <l...@a...com> wrote:
> >> On Mon, 25 Jun 2012 17:12:02 +0000 (UTC), Edek Pienkowski
>
> >> A co o takim rozwiazaniu?...
>
> >> search_complete:
> >> { // begin of search_complete block
> >> for()
> >> for() {
> >> if (findSth()) {
> >> found = sth;
> >> break search_complete;
> >> }
> >> }
> >> }
> >> throw new Failure();
>
> >> } // end of search_complete block
>
> > Czyste zło na patyku. Proponuję jednak:
>
> > private boolean find()
> > {
> > for()
> > for() {
> > if (findSth()) {
> > found = sth;
> > return true;
> > }
> > }
> > }
> > return false;
> > }
>
> Mało mnie to cieszy, ale jak widać niedostarczająco wyraźnie
> sformułowałem posty. BTW Czyte Drobro Na Patyku to podobno
> jedno "return".
Nie twierdzę, że moja propozycja to Czyste Dobro Na Patyku. Tylko
tyle, że jest prostą i oczywistą poprawą kiszki z break i throw.
Nawiasem mówiąc, nie uważam też, że early return jest zły - trzeba po
prostu dostosować do niego styl - w Javie w praktyce i tak powinieneś
to robić, bo masz również wyjątki.
Do tego, o co pytałeś, odniosę się osobno.
-
26. Data: 2012-06-27 12:14:46
Temat: Re: Java i goto [OT] Java i Abstraction Penalty
Od: Roman W <b...@g...pl>
On Tuesday, June 26, 2012 9:52:01 PM UTC+1, Bogusław Szczepanowski wrote:
> Dnia 26-06-2012 o 15:18:45 Roman W <b...@g...pl> napisał(a):
>
> > try {
> > for (int i = 0; ; ++i) {
> > arr[i];
> > // do stuff
> > }
> > catch (ArrayOutofBoundsException)
> >
> > (dawno juz nie pisalem Javy, ale to chyba taki patent byl).
>
> Różnica w wydajności jest do 4% (z reguły na korzyść wyjątku), a Twój kod
> jest okropny.
Zgadzam sie, ze jest okropny. To tylko przyklad byl.
RW
-
27. Data: 2012-06-27 12:43:27
Temat: Re: Java i goto
Od: Andrzej Jarzabek <a...@g...com>
On Jun 27, 9:58 am, Andrzej Jarzabek <a...@g...com>
wrote:
> On Jun 27, 9:42 am, Edek Pienkowski <e...@g...com> wrote:
>
> > > private boolean find()
[...]
>
> > Mało mnie to cieszy, ale jak widać niedostarczająco wyraźnie
> > sformułowałem posty.
[...]
>
> Do tego, o co pytałeś, odniosę się osobno.
A właściwie może nie. Więc: dlaczego widać, że niewystarczająco dobrze
sformułowałes poglądy? Czy nie chodziło ci o to, że twój przykład
wykazuje, że czasem goto jest najlepszym rozwiązaniem? No więc w czym
moje rozwiązanie, bez goto a z dwoma returnami, jest gorsze od tego z
goto?
-
28. Data: 2012-06-27 13:09:46
Temat: Re: Java i goto
Od: Edek Pienkowski <e...@g...com>
Dnia Wed, 27 Jun 2012 03:43:27 -0700, Andrzej Jarzabek napisal:
> On Jun 27, 9:58 am, Andrzej Jarzabek <a...@g...com>
> wrote:
>> On Jun 27, 9:42 am, Edek Pienkowski <e...@g...com> wrote:
>>
>> > > private boolean find()
> [...]
>>
>> > Mało mnie to cieszy, ale jak widać niedostarczająco wyraźnie
>> > sformułowałem posty.
> [...]
>>
>> Do tego, o co pytałeś, odniosę się osobno.
>
> A właściwie może nie. Więc: dlaczego widać, że niewystarczająco dobrze
> sformułowałes poglądy? Czy nie chodziło ci o to, że twój przykład
> wykazuje, że czasem goto jest najlepszym rozwiązaniem? No więc w czym
> moje rozwiązanie, bez goto a z dwoma returnami, jest gorsze od tego z
> goto?
Nie jest rozwiązaniem w ogóle. Można by nim zastąpić taki kod:
.... goto do_return;
do_return:
return;
}; // end of method
Szukanie daily wtf tam gdzie go nie ma jest znaną przypadłością.
> Nie twierdzę, że moja propozycja to Czyste Dobro Na Patyku. Tylko tyle,
> że jest prostą i oczywistą poprawą kiszki z break i throw.
Na tego typu "uproszczenia" i "usunięcia kiszki" w kodzie istnieje tylko
jedna metoda nazywana w SCMach "revert". Szybko się w ten sposób usuwa
błędy, ale na tym zalety się kończą.
Nie formułowałem poglądów [1], dostałem odpowiedź zupełnie sensowną na
postawiony problem:
label: {
...
break label;
...
};
To całkiem niezły substytut goto, ograniczony, ale rozwiązujący tego
typu problemy. Nie wiem, czy spotkam w praktyce przypadek, gdzie
potrzebne byłoby goto a nie powyższe, chociaż znam takie. Czyli
mój problem nie tylko został zauważony w ogóle, ale jest uwzględniony
w konstrukcji języka Java, chociaż o tym nie wiedziałem, a dzięki
temu wątkowi wiem.
Edek
[1] No może trochę poglądów sformułowałem w obu wątkach, ale
zeszły na dalszy plan.
-
29. Data: 2012-06-27 13:25:51
Temat: Re: Java i goto
Od: "AK" <n...@n...com>
Użytkownik "Edek Pienkowski" <e...@g...com> napisał:
> label: {
> ...
> break label;
> ...
> };
>
> To całkiem niezły substytut goto
Jaki zas substytut. To _czyste goto_.
Czytac nie umiesz /z dokladnoscia do lukru skladniowego oczywiscie/ ? :)
AK
-
30. Data: 2012-06-27 13:28:31
Temat: Re: Java i goto
Od: Edek Pienkowski <e...@g...com>
Dnia Wed, 27 Jun 2012 13:25:51 +0200, AK napisal:
> Użytkownik "Edek Pienkowski" <e...@g...com> napisał:
>
>> label: {
>> ...
>> break label;
>> ...
>> };
>>
>> To całkiem niezły substytut goto
>
> Jaki zas substytut. To _czyste goto_.
> Czytac nie umiesz /z dokladnoscia do lukru skladniowego oczywiscie/ ? :)
93% pure.
Edek