En/Je/On 2015-10-30 18:51, pablohreda [forth-es] escribió / skribis / wrote :

Yo conocí Forth con unos 15 años, cuando ya estaba muy familiarizado con
BASIC y, algo menos, con ensamblador de Z80.

Quizá lo primero que me sorprendió y me atrajo fue lo diferente que era
de los otros lenguajes y los fundamentos tan efectivos y sencillos en
que se basaba. No tenía nada que ver con el resto y eso me llamó la
atención y despertó mi curiosidad.

Después, tras familiarizarme con el lenguaje y empezar a hacer los
primeros programas, me sorprendieron su velocidad, su ilimitada
flexibilidad, su inagotable potencia, su eficiente uso de la memoria y,
en general, de los recursos de la computadora. Fue un descubrimiento
casi mágico. No había límites a la creatividad.

Después, poco a poco, cuando fui aprendiendo cómo funciona internamente
Forth, mi admiración fue en aumento.

>    Cuando encontre forth, lo primero que me atrajo fue QUE NO
>    LO ENTENDIA, sabia muchos lenguajes de programacion pero
>    el codigo FORTH no lo entendia, me costo bastante
>    encontrarle le vuelta, sobre todo hacer un primer
>    programa.

Eso suele ocurrir.  Forth no funciona como los demás lenguajes: no hay
un compilador o intérprete complejísimo que traduzca el código fuente a
otra cosa. Nada de eso. Lo que hay es una sencillísima máquina virtual,
transparente y totalmente comprensible y accesible para el programador,
que ejecuta comandos secuencialmente, comandos que se pueden crear sobre
la marcha.

En otros lenguajes uno escribe un programa con las herramientas
invariables que el lenguaje le da; no hay opción.  En Forth, por el
contrario, lo que se hace es crear un lenguaje específico para el
objetivo que haya que lograr.

>    El uso de pila es el primer rechazo, porque tengo que
>    ordenar la ejecucion si puede hacerlo el compilador? sin
>    embargo en lisp nadie se queja de CDR o CAR, y en el fondo
>    es lo mismo. Con el tiempo me di cuenta que esta forma de
>    programar tiene sus ventajas...si, nadie lo dice, pero
>    pensar en el orden de ejecucion y ordenar para realizar el
>    menor numero de operaciones sin repetir cosas lleva a un
>    mejor entendimiento del problema. Si, es mas dificil armar
>    una rutina teniendo que pensar este orden que sin
>    pensarlo, pero.. cuando esta hecho,tiene un efecto de
>    simplificacion y entendimiento en el problema que paga con
>    creces el tiempo invertido.

Al final, internamente, todos los lenguajes usan pilas. Manejar la pila
directamente exige una actitud diferente al escribir el código, pero
tiene muchas ventajas: el paso de parámetros es trasparente y el código
es más compacto y rápido.

Las ventajas son sobresalientes cuando el código está dividido en
palabras pequeñas que hacen tareas claras fácilmente reconocibles, lo
que al fin y al cabo es una de las esencias de Forth.

-- 
Marcos Cruz
http://programandala.net

Responder a