[C con Clase] GOTO

Héctor Francisco Hernández hectorfh en gmail.com
Lun Nov 10 06:19:37 CET 2008


Hola David, José y Rubén:

> siento dicentir pero no se me ocurre ningun caso en C/C++ o cualquier otro lenguaje
> de alto nivel que requiera usar GOTO en vez de if for whilke etc...

Mmmm... no veo ningún disenso ciertamente en el hecho de que no
conozcas ningún caso. Sin embargo existen.

Un ejemplo de uso común de goto en C es cuando deseas escapar de un
ciclo estando en otro ciclo anidado dentro. En ese caso si invocas a
"break" o a "continue" saldrías del primer ciclo solamente. Ej:

for (;;) {
  ...
  for (;;) {
    ...
    if (condicion) goto EXIT;
    ...
  }
  ...
}
EXIT:
...

Esto no se puede hacer con "break" y así es superior que hacerlo con
variables auxiliares.

> Goto genera
> CODIGO MALO, codigo dificil o incluso IMPOSIBLE de mantener; un
> codigo
> que cuando menos, dice mucho y muy malo del que lo ha
> programado.

No, no y no. Esto no es verdad. El "mal" uso del "goto" genera código
malo. Pero no más que el mal uso de las excepciones (en los lenguajes
que tiene excepciones, C++, Java, etc) por ejemplo. En definitiva el
mal uso de muchas cosas genera código malo.

Toda la confusión, si no me equivoco, comenzó en 1968, cuando Dijkstra
publicó un artículo titulado "El enunciado GOTO se considera dañino"
(Go To Statement Considered Harmful). Si lo buscan en Google lo podrán
encontrar. De ahí en más muchas escuelitas de programación comenzaron
a enseñarles a sus alumnos que usar "goto" es "pecado" y que te van a
salir pelos en la mano o algo así.

Dijkstra, gracias a ese artículo, se ganó el título de "quiche eater"
(que se come la masita, que es afeminado u homosexual) en la comunidad
hacker. Podéis encontrar más sobre este asunto en el famoso artículo
"Real Programmers Don't Use Pascal" que también se encuentra con
Google.

Saludos




Más información sobre la lista de distribución Cconclase