Wpis z mikrobloga

@koziolek666: słyszałeś że java jest niewydajna bo używa labeli w swoich klasach, gdyby nie one to pewnie już dawno by wyprzedziła Cpp? (np w ConcurrentLinkedQueue, i masie innych) ( ) A używanie złych labeli sprawia że JVM zwalnia bo labele są "ciałem obcym"! (to brzmi gorzej niż teorie spisowe o strukturach ego)
Do tego ci idioci od javy używają break i continue (Ci idioci w ogóle tego nie sprawdzają! ( ͡º ͜ʖ͡º) )... nie przemyśleli kodu idioci.
Kit że stanowią jej nieodłączną część i są wykorzystywane zawsze i wszędzie tylko nie zawsze widocznie.

I pamiętajcie, nie używajcie w kodzie switchy, ifów, i pętli, bo one zawierają instrukcje goto i korzystają z labeli, a to jest złe.
"Nie każda pętla w javie używa labeli, a nawet mniejszość" ~@koziolek666

Przyznałbyś się przynajmniej do błędu.... :<
#java #brednie tak, mam #boldupy z twojego powodu.

()
Źródło: http://www.wykop.pl/wpis/17083807/#comment-59555007
  • 15
@GotoFinal: nie nie jesteś na czarnej liście. I jeżeli byś trochę dalej poczytał to byś trafił na info, że chodziło mi o goto w kodzie klasy, a nie w bytecodzie.

Co do używania pętli, ifów i switchy to poczytaj o złożoności cyklomatycznej kodu (taka metryka) i dlaczego należy ograniczać używanie ww. instrukcji.
Swoją drogą zastanawiałeś się kiedyś dlaczego to co w javie pisze się w setkach linii kodu w językach funkcyjnych
@GotoFinal: ale przecież jak sobie normalnie napiszę w takim cpp czy innym kompilowanym cudzie ifa/switcha/pętlę to tam też po kompilacji w kodzie maszynowym są te instrukcje skoku ( ͡° ͜ʖ ͡°) nie ogarniam
@koziolek666: ale "goto" w kodzie klasy nie istnieje, to tylko niedziałający keyword, więc skąd Ci przyszło do głowy jego istnienie w kodzie?
I dalej zostaje sprawa tajemniczych labeli i ciał obcych.

Nie ograniczają, używają ich za ciebie, i dlatego jest mniej kodu, bo to już tam jest, to że napiszesz costam.if(warunek).do(ciastko) nie sprawia że if-a nie ma, dalej tam jest. Zawsze jest jakaś pętla, zawsze jest jakiś if, tylko jego wygląd
to tylko niedziałający keyword,


@GotoFinal: ok, a teraz programik:

public class App {
public static void main(String[] args){

int i = 0;

labelka:
do {
i++;
System.out.println(i);
if(i>10)
break labelka;
} while (true);
}
}

i pytanie czy takie labelki są twoim zdaniem OK?

w każdym języku są


Niekoniecznie, bo można stworzyć język oparty tylko o dysjunkcję (NAND) co pozwala na budowanie programów bez skoków, ale użycie go będzie bardzo trudne
@koziolek666: no i nie widze w tym programie użycia instrukcji goto o której pisałem.
A do tego w twoim programie nie ma nawet customowego labela, użyłeś labela co już istnieje w kodzie, użyłeś zwykłego break, bez własnego labela ;)

a dla bardziej skomplikowanych zadań w praktyce niemożliwe.

No to jaki jest sens uwzględniania tego? a do tego dalej zostają pętle, ich już tak łatwo nie przeskoczysz, można je rozwinąć, zamiast piętli
@koziolek666: Czy ty serio nie ogarniasz żadnych podstaw?
Proszę, o to jak wyglądają oba kody przed i po kompilacji:
"z labelem": https://hasteb.in/maxijiruvu.java
"bez labela": https://hasteb.in/idewafudox.java
Podpowiem, jedna różnica to debugowe info dotyczące numeru linijki, bo z powodu labela wszystko jest 1 linijkę niżej.
A tak to kod jest IDENTYCZNY.
Oba używają labelek, a do tego OBA labelek o tej samej "nazwie", bo ona nawet niezbyt istnieje. Ten sam kod, ta sama
@GotoFinal: nie jest identyczny. W analizie statycznej będziesz miał problem. To, że bytecode wychodzi taki sam nie oznacza, że ten kod jest dobry. Poczytaj może trochę o miarach jakości kodu to odkryjesz, że np. ograniczenie ilości ifów we własnym kodzie nie jest takie głupie. Podpowiem złożoność cyklomatyczna.
@koziolek666: Brawo, też pisałem że używanie dużej ilości ifów itd może źle wpłynąć na kod.
Problem z tym, że ten label nie zmienia złożoności, dalej jest ta sama ilość branchy... i label w takich przypadkach gdy się go używa...zazwyczaj zmniejsza a nie zawiększa ilość branchy, bo pozwala uniknąć stworzenia dodatkowych branchy, lub tak jak tutaj: jest ona nie zmieniona.
Naczytałeś się za dużo teorii, ale praktyki by zobaczyć jak to działa
@koziolek666: to klep dalej cobola... jeśli lepsza czytelność, i wszystko co robią ludzie od javy to kretynizm, to ty musisz być jakimś nadbogiem widzę. Preferującym jakieś swoje dziwne zasady nad czytelnością i sensem.

Co prawda wszystkie twoje argumenty okazały się błędne u nie pasowały do rzeczywistości, ale na szczęście został Ci ten ostatni niepodważalny argument.

Ja wiem lepiej bo tak, a ty jesteś nobem.


Dziękuje za "sensowną" dyskusję, i może jednak