🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes
Article #157

Re: Programacion con GOTO

#157
From: Andr�s Gri��
Date: Fri, 17 Nov 2000 00:00
54 lines
3737 bytes
In article <49a61t8epk5iuuqrr6rvpnp6g0ic1d6nkm@4ax.com>, DrPanic <drpanic_esto_sobra_@teleline.es> wrote:
>On Wed, 15 Nov 2000 22:10:11 GMT, mallok <jsegam@terra.es> wrote:
>
>>"Miguel A. Fuentes" escribi�:
>>
>>> Desde hace mucho tiempo estoy programando y he visto multitud de
>>> aplicaciones, grandes y peque�as, y JAM�S he visto un GOTO, casualidad?
>>

Llevo 20 a�os programando y s�lo utilice goto en Cobol, ya que hab�a 
situaciones en las que no tenias alternativas, por las limitaciones del 
lenguaje.

Hace poco estaba escribiendo una aplicaci�n, implementada como un 
mini-lenguaje de programaci�n orientado especificamente al problema. La 
aplicaci�n consta de un compilador que generada c�digo para una m�quina 
RISC "virtual" basada en stack y un interprete de implementa dicha m�quina 
(que elegante suena!). Todas las instrucciones son del tipo CODIGO_OPERACION 
OPERANDO.

El asunto es que cuando comence a trabajar en la optimizaci�n del c�digo 
generado finalmente vine a entender lo malo que puede ser el goto.

Este mini-lenguaje carece de goto (carece de muchas cosas, esa es la idea), 
por lo que al ir generando c�digo pod�a estar muy seguro del contexto en el 
cual se generaba y las optimizaciones que podia aplicar. Por ejemplo, cuando 
descubria que estaba generando una secuencia:
        - Push variable.
        - Incrementar en uno el tope del stack.
        - Pop y almacenar valor en variable.

la podia sustituir directamente por una s�la instrucci�n que incrementaba 
directamente la variable en memoria, sin pasar por el stack.

Tambi�n aplique algunas optimizaciones a las comparaciones y saltos que se 
generan al encontrar if, while, etc., con resultados desastrosos en la 
ejecuci�n. Por ejemplo, inocentemente sustitui:
        - Comparar stack contra cero.
        - Saltar a X si es comparaci�n OK.
por
        - Compara stack contra cero y saltar a X (si es comparaci�n es OK).

Lo que no me hab�a percatado es que en el primer caso, la segunda instrucci�n 
podia ser el destino de algun goto previo, asi que fundir ambas instrucciones 
no iba a producir el resultado deseado originalmente (que eran dos saltos en 
cadena).

En resumen: el uso de "goto" destruye el contexto en el cual est�s trabajando. 
Si estas en una secci�n a la cual puedes llegar por uno o varios goto, puede 
ser d�ficil determinar el contexto en que se ejecuta esa secci�n. Si no sabes 
en que estado est�n tus archivos, variables y demases, se hace bien cuesta 
arriba escribir c�digo.

Andr�s
Technical Details
Message-ID: <8v3ebe$9fs3@nova.entelchile.net>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <zXhQ5.698$cQ5.16259@m2newsread.uni2.es> <3A1308F0.C44181D3@terra.es> <49a61t8epk5iuuqrr6rvpnp6g0ic1d6nkm@4ax.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1135b7,9ebb41239b0c5eaa
X-Google-Attributes: gid1135b7,public
X-Google-Thread: 1116f3,9ebb41239b0c5eaa
X-Google-Attributes: gid1116f3,public
X-Google-Thread: 105378,9ebb41239b0c5eaa
X-Google-Attributes: gid105378,public
X-Google-Thread: f86c8,9ebb41239b0c5eaa
X-Google-Attributes: gidf86c8,public
X-Google-Thread: f78ff,9ebb41239b0c5eaa
X-Google-Attributes: gidf78ff,public
X-Google-Thread: 10d088,9ebb41239b0c5eaa
X-Google-Attributes: gid10d088,public
X-Google-Thread: f59de,9ebb41239b0c5eaa
X-Google-Attributes: gidf59de,public
From: agrino@yahoo.com (Andr�s Gri��)
Subject: Re: Programacion con GOTO
Date: 2000/11/17
Message-ID: <8v3ebe$9fs3@nova.entelchile.net>
X-Deja-AN: 697180148
References: <zXhQ5.698$cQ5.16259@m2newsread.uni2.es> <3A1308F0.C44181D3@terra.es> <49a61t8epk5iuuqrr6rvpnp6g0ic1d6nkm@4ax.com>
Organization: What?
Newsgroups: es.comp.lenguajes,es.comp.lenguajes.java,es.comp.lenguajes.misc,es.comp.os.linux.programacion,es.comp.os.ms-windows.programacion,es.foro.lenguajes,esp.comp.so.linux.programacion