goto - chyba najbardziej kontrowersyjna konstrukcja programistyczna na świecie. Od czasu słynnego listu Dijkstry instrukcja ta wzbudza wiele kontrowersji i sprzecznych opinii. Panuje więc przekonanie, że instrukcja ta jest zła i nie należy jej stosować. Szanujące się profesjonalne języki wysokiego poziomu takie jak Java* nawet nie posiadają takiej konstrukcji. Right?...
Wrong.
Wiadomo, że słowo goto jest w Javie zarezerwowane i nie może być użyte przez programistę. Na poziomie języka programowania nie ma dostępu do tej instrukcji, jednak jest ona dostępna bezpośrednio z poziomu bytecode'u. Fakt ten został w ciekawy sposób wykorzystany przez programistów projektu f2j mającego na celu przetłumaczyć biblioteki FORTRANa na Javę.
FORTRAN jest językiem, w którym korzystanie z goto było na porządku dziennym. Brak omawianego mechanizmu w Javie stanowił poważne utrudnienie przy tłumaczeniu kodu FORTRANa na Javę. Programiści wymyślili więc bardzo sprytny sposób - generując kod Javy wstawiali w miejsce goto instrukcje zastępcze, które po skompilowaniu były na poziomie bytecode'u zamieniane na prawdziwe wywołania "złowrogiej instrukcji". Swoje wysiłki opisali w ciekawej publikacji.
* - Czytelnik słusznie dostrzeże tu nutkę sarkazmu.