почему goto - плохо?

почему так исторически сложилось, что в коде использовать оператор goto - плохой тон?

ну, раньше без навешивания на прогу "соплей" никак не обойтись,   
а в ассемблере и теперь :)

при большом объеме кода очень легко запутаться, ведь безусловный переход нарушает блочную структуру программы. в небольших программах, разумеется, таких проблем не будет, но когда учат программированию, стараются сразу дать понятие структурного программирования. чтобы потом не было мучительно больно :).

исторически сложилось с тех времен, когда первым языком программиста часто был язык, в котором без подобного оператора никак (бэйсик, например). и переходя на с, человек по привычке начинал злоупотреблять goto -примерно как описано в предыдущем ответе.   
а так, вообще-то, оператор как оператор, есть случаи, когда код с goto гораздо читаемее кода в котором без него обошлись.

представь себе код в котормо есть goto а в нем еще и еще и еще и после 10 таких интераций проследить структуру алгоритма на первый взгляд почти невозможно для этого надо потратить кучу времени. тем более нет такого кода в котором нельзя обойтись без этого оператора. его всегда можно заменить на другие стандартные конструкции. просто надо один раз увидеть такой код и тогда все будет понятно. я сам один раз разбирал такой код на что потратил весь вечер :(