>Объяснить почему goto зло, он так и не смог, всё ссылался на авторов мега книжек по программированию.Если отвлечься от теоретиков и вспомнить практику, как это было...
Раньше в основном goto это и было jmp (в нынешнем понятии short jmp), т.е. преход был ограничен 128 байтами.
Представьте что вы написали код и этот код работает, а потом спустя какое-то время вас просят внести дополнение в код своей программы вы вставляете дополнительный код и получаете неработоспособное приложение хотя вроде бы логика и синтаксис нигде не были нарушены, а разгадка неработоспособности вашего кода в этом самом ограничение перхода в jmp, переход просто перестает работать.
Разобравшись у вас есть два выхода или вынести неработоспособный код в отдельную подпрограмму или сделать грубый хак вставив еще одну промежуточную инструкцию jmp/goto.
Отсюда и растут ноги о том что goto сильно запутывает код.
Поэтому "наевшись" такого вы в следующий раз вынесите этот код в подпрограмму и будете вызывать его методом call/retr и советовать никогда не использовать jmp/goto.
Сейчас уже коротких переходов jmp в природе нет (если только вы явно не укажите это), но слава goto как инструкции мешающей понятию кода осталась.