En mis pocos a;os de experiencia en programacion, una de las cosas que mas revuelo causa /*y amistades separa*/ es esa discusion acerca del uso de la sentencia goto en los lenguajes que la permiten (C y Pascal, por nombrar los mas comunes). Y es que me causa asombro/risa/diversion/miedo/
Y pues bueno, que es goto???
// Es el esposo de la gota :D play("ba_dum_tsss.wav");
Es una sentencia que transfiere el control de un programa de manera incondicional a la etiqueta que se le provee despues. Y pues esta chido para saltarse codigo que tal vez no quieres que se ejecute dada cierta condicion, o si quieres regresarte a hacer algo de nuevo, pero uno como todo buen n00b de la programacion, uno puede ignorar todas las implicaciones que tiene el hecho de andar saltando de un lado a otro como canguro, grillo, pulga o gato siguiendo un punto laser.
Recuerdo que la primera aproximacion que me dieron hacia los ciclos en C implicaba el uso de goto con condiciones, y todo suave y bonito, las cosas se repetian segun una condicion y cuando ya no era valida, se botaba del ciclo...
PERO (siempre hay un pero)...
![]() | |
Es inevitable equivocarse, pero la vida sigue! |
Hubo un programa, que la verdad no recuerdo ni de que trataba, el chiste es que un contador se reseteaba a cada "iteracion" y esto se solucionaba moviendo la etiqueta que devolvia a la "rutina", y se lo atribui en su momento a que usabamos Borland Turbo C y que todos me dijeron que era software viejo, que ya no se usaba y que pues asi literalmente "valia queso"... Y me fui feliz a Dev-C, no use goto y de ahi no me han sacado (en Windows)...
Hoy mismo, mientras escribo estas lineas, me puse a leer una tarea que en su momento realize acerca de las palabras reservadas, que anexo para cualquier referencia, hice un goto a la seccion de goto (<risasPregrabadasAqui>) y leyendo las cosas que implica su uso, caigo en la cuenta de que no era un bug del compilador ni nada (al cual respeto, pues me vengo enterando que Borland Turbo C tenia un interprete de C y sigue siendo de los mejores en existencia), sino una consecuencia directa del uso de goto... Flaaaaashbaaaaaack!!! :D
goto ~/.nastyCode/snippetDeCuandoProgramabaDeLaBurger.c
La explicacion es simple y es que goto destruye todas las declaraciones de variables automaticas que hayan sido realizadas luego de la etiqueta a la que se realiza el salto...
A ch1n64!!! Y yo cuando declare automatica la variable??? Si ni le puse auto!!! D:
Y pues resulta que toda variable dentro de una funcion sea main o sea uno definido por el usuario, auto es una palabra inherente, por lo que esas variables son automaticas por default...
![]() |
By Oncl Ven, retired programmer |
Y cuando yo hice eso, pues ni entendia que carambas eran las variables auto!!! Y ohhh sorpresa!!! Iluminacion!!! Epifania!!! Milagro!!! (atribuida a Salazar Navarro)... Compilaba y no se quejaba por la redefinicion, suponia que la pasaba por alto... PERO NO!!! D:
Y con esto comprendi las implicaciones de usar goto, y dado el infinito y absoluto poder que goto otorga, cai en el cliche de las peliculas Hollywoodenses...
Y bueno, luego del bla bla bla tecnico, hora de causar polemica!!! x3!
![]() |
Consejos de Fanboy |
En mi coordinacion de carrera, los
Y es que como menciono, andar saltando de lado a lado pues la computadora como sea, pero piensen en los
El uso basico y mas abiertamente aceptado de goto es para salir de ciclos altamente anidados 4 o mas for/while, capacidad que incluso se incluye en lenguajes de otro paradigma, como los break <etiqueta> en Java (prueba de su utilidad)... Es cierto que no existen problemas que no puedan realizarse sin goto, pero a veces la solucion "ortodoxa" hace exactamente lo que segun eso evitamos al no usar goto, codigo complejo y criptico, pesadilla para los que
Y en lo personal, yo condono y apoyo el uso de goto!!! Por que??? Simplemente porque es parte del lenguaje, y creo que si no usas un feature del lenguaje lo estas desaprovechando!!! Yo en lo personal lo utilizo para cosas personales, jugando con juegos de palabras con las etiquetas y haciendo tonterias en el codigo! Por que??? Porque el chiste de programar es divertirse haciendolo o sufrir toda tu vida haciendo algo que aborreces! La decision la tomas tu!!! :D
Y bueno, todo por hoy, tengo sue;ito!!! Feliz primer post para mi!!! nwn
Busco novia, por si se les ofrece!!! Juego americano y me dejo pegar!!! :D
xD
(Forever alone!!! u.u)
Log Finished.
Title One
This is the example text for title one.
No comments :
Post a Comment
Hazmela de tos aqui abajito!!! :D