[C con Clase] GOTO

Jorge Medina jorge en bsdchile.cl
Mie Nov 12 21:03:35 CET 2008


2008/11/12 Héctor Francisco Hernández <hectorfh en gmail.com>:
> Hola a Todos:
>
> La respuesta de por qué es conveniente usar "goto" quedo claro en la
> respuesta de Steven, por lo tanto no hace falta agregar nada supongo, y yo
> no debería estar respondiendo. Pero como veo que la discusión sigue y los
> tres últimos mensajes fueron del bando contrario, no puedo resistir la
> tentación de entrar en el "flame".
>
> Algunas respuestas de la lista a favor de no usar esta sentencia me
> parecieron por lo menos ineficaces:
>
>> toda función computable puede ser implementada en un lenguaje de
>> programación que combine subrutinas en únicamente tres formas
>> ...
>> ¿Por qué lo incluyen en el
>> lenguajje?????????????????????????????????????????
>
> No me queda claro si este argumento es a favor o en contra del "goto". El
> hecho de que un lenguaje sea "Turing Completo" no significa que sea
> expresivo o bueno para escribir programas de computación.
>
> Para más prueba podés averiguar sobre el lenguaje BrainFuck
> (http://es.wikipedia.org/wiki/Brainfuck).
>
> Hay sólo ocho instrucciones, y todas son de un carácter.
> Carácter Significado
>> Incrementa el puntero.
> < Decrementa el puntero.
> + Incrementa el byte apuntado.
> - Decrementa el byte apuntado.
> . Introduce el byte apuntado en la corriente de salida.
> , Toma como valor del byte actualmente apuntado el provisto por la corriente
> de entrada.
> [ Avanza a la instrucción inmediatamente posterior al ] correspondiente si
> el byte actualmente apuntado es nulo.
> ] Retrocede a la instrucción inmediatamente posterior al [ correspondiente
> si el byte actualmente apuntado no es nulo.
>
> Un "Hello, world" en Brainfuck:
>
> Este sería el típico programa que escribe "Hello, world"
>
> ++++++++++
> [                   Bucle para iniciar el vector
>   >+++++++>++++++++++>+++>+<<<<-
> ]
>>++.              imprime 'H'
>>+.               imprime 'e'
> +++++++.                  'l'
> .                         'l'
> +++.                      'o'
>>++.                      espacio
> <<+++++++++++++++.        'W'
>>.                        'o'
> +++.                      'r'
> ------.                   'l'
> --------.                 'd'
>>+.                       '!'
>>.                        nuevalínea
>
> BrainFuck es un lenguaje "Turing Completo", con un poder igual a Java, por
> ejemplo. BrainFuck tampoco tiene "goto". Espero haber respondido la pregunta
> con eso.
>
>> He programado durante casi 25 años de manera profesional y deje de usar el
>> goto hace muchos años :)
>> en 11 lenguajes de programacion diferentes (obviamente incluye c/c++) y 9
>> plataformas.
>
> Este argumento no dice mucho. Tengo un amigo que programo 30 sin usar
> algunas estructuras de control básicas (while, for, switch)... porque usaba
> sólo "goto".
>
> Saludos
>
A menudo se cometen muchos errores al usar goto y es costoso depurarlos
mas que eso goto es la instruccion mas costosa para la CPU.

-- 
Jorge Andrés Medina Oliva.
Evolve or die!




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