Archive for the '5528' Category

AjLogo en Javascript (1) Primera Implementación

Tuesday, March 27th, 2012

Este fin de semana, estuve trabajando en un intérprete Logo escrito en Javascript. Este es mi proyecto de código abierto eb:

https://github.com/ajlopez/AjLogoJs

Mi principal referencia del lenguaje fue el manuel de Berkeley:

http://www.cs.berkeley.edu/~bh/usermanual

Probé algunas expresiones en estas implementaciones en línea, también escritas en Javascript:

http://logo.twentygototen.org/
http://www.calormen.com/Logo/

Sólo ejecuté expresiones, sin fijarme en el código de implementación. Prefiero primero escribir mi propia implementación, usando TDD en el proceso, desde cero, sin estar influido por alguna implementación anterior. El intérprete que escribí puede ejecutarse en el navegador y también en un servidor Node.js. En algún momento, podría agregar algún ejemplo del lado del servidor.

Inicialmente, pensé que necesitaba implementar un objeto List, pero los arreglos de Javascript fueron lo suficientemente buenos para implementar las listas de Logo. Durante la codificación, me dí cuenta que Javascript es un muy buen lenguaje de implementación para un intérprete Logo. Por ejemplo, Logo tiene una conducta interesante. Algo como:

print myproc 1 2 myotherproc 3 4

podría ser interpretado de diferentes maneras, dependiendo de la cantidad de parámetros que espera myproc o myotherproc. Cuando implementé procedimientos Logo primitivos como print, sum, make, etc… como funciones Javascript, la cantidad de argumentos que reciben me quedó disponible fácimente, con myfunc.length.

Cuando necesité ejecutar un bloque de Logo (un arreglo en Javascript, en mi implementación), pude usar una propiedad adicional, block.compile, para tener una versión compilada, ya lista, sin necesidad de compilar cada vez (esa propiedad es un cache del bloque compilado). Eso fue posible porque Javascript me permite agregar esa propiedad compiled a cualquier objeto. Es un lenguaje muy flexible.

Próximos pasos:

– Implementar soporte de paréntesis (p.ej. (sum 1 2 3 4) debería aceptar 4 argumentos, y retornar 10 como resultado)
– Operadores binarios infijos, como +, –, etc… Ahora tengo nombres como sum, difference, multiply, quotient, etc..
– Más predicados de comparación
– Soporte de listas de propiedades
– Tortuga sobre un canvas

Tengo planeado agregar:

– Soporte de  Objetos, definiendo métodos como tobj move ant …. end, donde ant es el nombre del objeto prototipo/clase
– Acceso a objetos Javascript nativos, sus funciones y variables

Publiqué una versión online en

http://www.ajlopez.com/ajlogojs

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Marcelo Duschkin

Sunday, April 11th, 2010

Hoy, revisando correo, me encuentro con la noticia: Marcelo Duschkin nos dejó el viernes pasado, 9 de Abril de 2010.

Algunos de Uds. lo habrán conocido. Su actividad desde hace más de treinta años eran los sistema digitales. Y también desde hace años, se volcó a la educación de todo lo que sabía, a compartir con todos lo que iba armando, por ejemplo, en robótica educativa. Lo conocí siendo ambos instructores en el Club de Programadores.

En los últimos años, luchó con una larga enfermedad, con recuperaciones y caídas. Hace unos meses, se quejaba en una lista de correo, que por los problemas de salud, no podía mantener mejor a sus páginas. Tal era su dedicación.

Alguna vez asistió a uno de mis cursos. Quería aprender más de Java, para poder colaborar mejor con uno de sus proyectos preferidos, XLogo. Y practicó, investigó, recuerdo que llegó con dudas sobre el manejo del puerto de comunicaciones, para sus robots, y los fue resolviendo.

Hace ya un tiempo que no lo veía. Pero siempre lo leía en las listas, colaborando, respondiendo dudas, con alguna lagunas en el tiempo, fruto de sus recaidas.

Yo había escrito sobre su trabajo, hace tiempo:

Mi primer robot, con XLogo y Rasti

Vean lo que entonces mostraba del trabajo de Marcelo:

[View:http://www.youtube.com/watch?v=pAGoU5g6Feo]

Otros posts comentando la desaparición de Marcelo:

Se nos fue Marcelo Duschkin
Querido Marcelo

Siempre amable, dispuesto a conversar con todos, hoy les deja a su familia, esposa, hijos y amigos, su obra privada. Para los demás, nos fue preparando, poco a poco, toda su obra pública. Visiten:

http://www.miprimerrobot.com.ar

"Mi Primer Robot" está destinado a hacer posible en forma sencilla y económica, la experimentación en Robótica en la escuela y el hogar

http://www.sudram.com.ar

http://radioculturalibre.com.ar (su programa de radio)

Se nos fue Marcelo, alguien que seguramente, pasa el test.

Angel

Aguante el Logo

Tuesday, June 23rd, 2009

Sandra, de la provincia de Tucumán, Argentina, produjo este video, usando el lenguaje Logo, parece que con el FMSLogo.

[View:http://www.youtube.com/watch?v=2tUkxDMoggA]

Durante el video, visita el sitio del bueno de Daniel Ajoy:

http://neoparaiso.com/

Donde tenemos información sobre el lenguaje y trabajos relacionados de Logo:

http://neoparaiso.com/logo/

Ya escribí sobre Logo, mostrando el trabajo del bueno de Marcelo Dushkin sobre ese lenguaje, en la variante XLogo, con robótica:

Mi primer robot, con XLogo y Rasti

Mi primer robot

No tengo más información sobre Sandra. Pueden visitar su usuario en Youtube

http://www.youtube.com/user/educainformatica

El foro que menciona en el video, al que estoy suscripto, es:

http://groups.google.com/group/logoes

Más información sobre versiones de Logo en:

http://neoparaiso.com/logo/#sect3
http://neoparaiso.com/logo/logoes-mswlogo.html

Mis enlaces sobre este lenguaje, desde:

http://delicious.com/ajlopez/logo

Para los que les gusta más la programación, recomendaría darle un visita al NetLogo:

http://ccl.sesp.northwestern.edu/netlogo/

NetLogo is a cross-platform multi-agent programmable modeling environment.

Si, imaginaron bien, hay un pichón de AjLogo en:

http://code.google.com/p/ajlogo/

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

Mi primer robot, con XLogo y Rasti

Tuesday, January 1st, 2008

El bueno de Marcelo Duschkin tuvo una participación en el programa virtual RastiTV, veamos lo que preparó con Rasti y XLogo, una implementación del lenguaje Logo en Java (Marcelo es un participante activo en el proyecto XLogo):

[View:http://www.youtube.com/watch?v=pAGoU5g6Feo]

[youtube:pAGoU5g6Feo]

Vean el programa completo en:

http://rastitv.blogspot.com/2007/12/rastitv-programa-03-diciembre-de-2007.html

Ya había comentado por acá su trabajo:

Mi primer robot

Visiten su sitio y blog para más información, donde tendrán todo para reproducir el sistema.

Me gustó que se pueda hacer algo de robótica apelando al venerable Rasti, que este año ha vuelto a mi pais, Argentina (extraño mi Matchbox 1000…;-). Vean como Marcelo nos da herramientas para que cualquiera (por ejemplo, en una escuela), con elementos conseguibles por aquí, pueda comenzar a experimentar, jugar y divertirse, usando la neurona.

Para los programadores, vean en el video cómo usa una función recursiva, que seguramente está implementada con “tail recursion“.

Aguante el Logo!

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/

Mi primer robot

Wednesday, July 4th, 2007

Marcelo Dushkin acaba de publicar el sitio


http://www.miprimerrobot.com.ar


su trabajo en el TortuRob:


El proyecto “TortuRob” está destinado a hacer posible en forma sencilla y económica, la experimentación en Robótica en la escuela y el hogar.
Consiste en una electrónica basada en microprocesador, que hace de interfaz entre una PC y la mecánica del robot.
El proyecto provee la documentación para construir y comandar esta interfaz.

Marcelo es un entusiasta colaborador del proyecto XLogo, una implementación de Logo en Java. Ha trabajado desde hace tiempo para extenderlo para llegar a controlar este tipo de dispositivos que ahora nos muestra.


Igualmente, el TortuRob tiene todo preparado para ser accesible desde otras tecnologías de programación. Leemos en su FAQ:


P: ¿El proyecto sólo funciona en Linux?
R: No. Si bien insistimos en la importancia de usar software libre, el proyecto también puede ser utilizado en un sistema privativo.
P: ¿El proyecto sólo funciona con XLogo?
R: No. Las herramientas provistas están basadas en XLogo, porque consideramos que es el medio ideal para el aprendizaje. Pero por tratarse de un proyecto libre, se pueden implementar otras herramientas.

Ahora estoy “hasta las manos”, pero sería interesante hacer algún proyecto sobre el TortuRob. Alguno se anima? A contactarse ahí en el sitio. Yo apenas cambio las pilas de un control remoto, pero me gustaría que alguien encare un acceso a ese dispositivo desde C#, que, por ejemplo, pueda invocarse desde Mono.


Marcelo desde hace tres décadas se dedica al diseño de sistemas digitales. Dicta cursos de electrónica digital, microcontroladores, y robótica educativa. Pueden ver algunos de sus cursos en el Club de Programadores (busquen ahí por instructor).


Más enlaces sobre Logo en mi delicious.


Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com/