[C con Clase] GOTO

Héctor Francisco Hernández hectorfh en gmail.com
Mie Nov 12 18:08:24 CET 2008


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081112/4a884870/attachment.html>


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