É importante entender que a goto
construção é remanescente dos dias em que os programadores programaram em código de máquina e linguagem assembly. Como essas linguagens são tão básicas (como em, cada instrução faz apenas uma coisa), o fluxo de controle do programa é feito completamente com goto
instruções (mas na linguagem assembly, elas são chamadas de instruções de salto ou ramificação ).
Agora, embora a linguagem C seja de nível bastante baixo, ela pode ser considerada uma linguagem assembly de nível muito alto - cada instrução e função em C pode ser facilmente dividida em instruções da linguagem assembly. Embora o C não seja o idioma principal para programar computadores atualmente, ele ainda é muito usado em aplicativos de baixo nível, como sistemas embarcados. Como a função C reflete tanto a função da linguagem assembly, faz sentido que isso goto
esteja incluído em C.
É claro que Java é uma evolução do C / C ++. Java compartilha muitos recursos do C, mas abstrai muito mais detalhes e, portanto, é simplesmente escrito de forma diferente. Java é uma linguagem de alto nível, portanto, simplesmente não é necessário ter recursos de baixo nível, como goto
quando construções de alto nível, como funções, para, para cada e enquanto loops, o fluxo de controle do programa. Imagine se você estivesse em uma função e fizesse goto
um rótulo em outra função. O que aconteceria quando a outra função retornasse? Essa ideia é absurda.
Isso não responde necessariamente por que o Java inclui a goto
declaração e ainda não a deixa compilar, mas é importante saber por que goto
foi usado em primeiro lugar, em aplicativos de nível inferior, e por que simplesmente não faz sentido usado em Java.