Instrucción goto: el terror previo a la programación estructurada

Contenido del Bootcamp Dirigido por: | Última modificación: 4 de septiembre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Como programador, seguro has escuchado hablar de la temida instrucción goto. Este comando, que en sus días (han pasado 84 años) fue una herramienta sumamente poderosa, tiene una reputación bastante mala por ser el responsable de lo que se conoce como código espagueti. Curioso, ¿a que sí? El día de hoy queremos contarte un poco acerca de la historia de esta instrucción goto y cómo fue que el paradigma de la programación estructurada cambió todo a su alrededor.

instrucción goto

¿Qué es la instrucción goto?

La instrucción goto es un comando de salto incondicional que hace posible transferir el control de un programa a un punto específico del código, identificado por una etiqueta. ¿Complejo? ¡nah!, explíquemoslo del siguiente modo: cuando el programa encuentra una instrucción goto, este salta de manera automática a la línea indicada, sin importar qué haya entre el punto de ingreso y el punto de llegada. Es como si pusieras un gran bloque de código en forma de comentario dentro de tu código. Por supuesto esto parece y es bastante caótico.

La instrucción puede variar dependiendo del lenguaje de programación en la que la usemos. En algunas es goto, en otras GO TO, en otras go to, etc. Si bien en su momento fue bastante útil para el desarrollo de software, el abuso por parte de los programadores condujo a la creación de códigos muy difíciles de entender y mantener, lo que originó el término de código espagueti.

El problema de la instrucción goto

El principal inconveniente con esta instrucción es que puede hacer que el flujo de un programa sea difícil de entender. El proceso de permitir saltos arbitrarios de código hace fácil que perdamos de vista qué parte del programa se está ejecutando, lo que puede llevar a errores que sean difíciles de depurar. Es por eso que en los años 60 y 70, cuando entró en auge la programación estructurada, la instrucción goto se satanizó aún más.

El código espagueti y la programación estructurada

El código espagueti es un término usado para referirse al caos que puede generar el uso desmedido de la instrucción goto. Un programa con múltiples saltos incontrolados es como un plato de espaguetis enredados: es complicado seguir la lógica del flujo del programa, lo que lo hace casi indescifrable.

En respuesta a estos problemas, se desarrollaron mejores prácticas y técnicas como la programación estructurada, que promueve el uso de estructuras de control como bucles (for, while), condicionales (if-else) y funciones para crear programas más claros y fáciles de mantener. Estas técnicas ofrecen alternativas más seguras y eficientes que la instrucción goto.

Historia de la instrucción goto

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

La instrucción goto fue uno de los primeros mecanismos de control de flujo en los lenguajes de programación. Su surgimiento se dio en los primeros años de la programación, cuando apenas se trabajaba con lenguajes de bajo nivel como el ensamblador, donde el control de flujo era determinante en la gestión de la ejecución de programas en máquinas primitivas.

Uno de los hitos más relevantes en la historia de la instrucción goto fue la crítica de Edsger Dijkstra, un renombrado informático, quien escribió un artículo titulado Go To Statement Considered Harmful (La instrucción Go To considerada dañina). En este texto, Dijkstra argumentaba que el uso irrestricto de goto complicaba el análisis y verificación de los programas, especialmente en aquellos con ciclos y estructuras repetitivas.

Variaciones de la instrucción goto

A lo largo de los años, la instrucción goto ha tenido diversas variaciones. Por ejemplo, en BASIC, existe una instrucción llamada ON GOTO que permite seleccionar diferentes puntos a los que saltar en función de una condición. En lenguajes como Fortran o versiones más antiguas de BASIC, se utilizaba una variante aritmética de goto, en la que se podía especificar la línea a la que saltar mediante una expresión matemática.

¿Sigue siendo útil hoy día?

Aunque la mayoría de los lenguajes de programación modernos desaconsejan el uso de la instrucción goto, todavía existe en algunos casos muy específicos. Por ejemplo, en ciertas situaciones de manejo de errores o salidas tempranas de bucles, el uso de goto puede ser más eficiente que otras soluciones.

No obstante, la mayoría de los programadores optan por utilizar alternativas más claras y estructuradas, como las funciones y las excepciones, que hacen que el código sea más legible y fácil de mantener.

¿Cuándo usar la instrucción goto?

A pesar de sus desventajas, existen casos en los que el uso de goto podría ser aceptable, siempre y cuando se utilice de manera controlada y con un propósito claro. Algunos ejemplos incluyen:

  • Salir de múltiples niveles de bucles anidados.
  • Manejo de errores en lenguajes que no cuentan con mecanismos avanzados de control de excepciones.
  • Simulación de estructuras de control que no están disponibles en el lenguaje utilizado.

Aún así, la recomendación general es evitar su uso a menos que sea absolutamente necesario.

La historia de la programación es sumamente interesante. Si quieres seguir aprendiendo sobre ella y de paso aprender a diseñar tus propios programas, no dudes en inscribirte al bootcamp que Keepcoding tiene para ti. Es el curso en programación inicial, en donde aprenderás los básicos e intermedios de la programación en general, con lenguajes como Python, Java y Javascript. ¡Sigue construyendo tu camino al éxito y no esperes más!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.