Важно понимать, что goto
конструкция является остатком тех дней, когда программисты программировали на машинном коде и ассемблере. Поскольку эти языки настолько просты (как, например, каждая инструкция выполняет только одно ), процесс управления программой полностью выполняется с помощью goto
операторов (но на языке ассемблера они называются инструкциями перехода или перехода ).
Теперь, хотя язык C довольно низкоуровневый, его можно рассматривать как язык ассемблера очень высокого уровня - каждое утверждение и функция в C могут быть легко разбиты на инструкции на языке ассемблера. Хотя C сегодня не является основным языком программирования компьютеров, он все еще широко используется в приложениях низкого уровня, таких как встроенные системы. Поскольку функция C настолько близко отражает функцию ассемблера, имеет смысл только то, что goto
включено в C.
Понятно, что Java - это эволюция C / C ++. Java имеет много функций из C, но абстрагирует намного больше деталей, и поэтому просто написано по-другому. Java - это язык очень высокого уровня, поэтому просто нет необходимости иметь низкоуровневые функции, например, goto
когда более высокоуровневые конструкции, такие как функции, для каждого, и в то время как циклы выполняют поток управления программой. Представьте, что вы были в одной функции и сделали goto
метку для другой функции. Что произойдет, когда другая функция вернется? Эта идея абсурдна.
Это не обязательно объясняет, почему Java включает goto
оператор, но не позволяет его компилировать, но важно знать, почему оно goto
вообще использовалось, в приложениях более низкого уровня, и почему просто не имеет смысла используется в Java.