Zero

Zero
Zero

26 mayo 2005

Visual ZVM

Publicada la versión 2.0.61, que corrige algún pequeño error en la versión 2.0.6 y añade respecto a la 2.0.5 un entorno que permite crear objetos, atributos y métodos; compilar métodos y cambiar el objeto al que apunta un atributo; y finalmente explorar el espacio de contenedores de Zero de una manera excepcionalmente interactiva, como Self.


Cambios en el web: se añade un tutorial para el entorno, se completan las publicaciones y se actualizan los pantallazos.

05 mayo 2005

Más ejemplos y mejor web

Una gran actualización: se ha mejorado la web, incorporando ahora ejemplos y un nuevo manual de documentación (la documentación nunca es suficiente). En cuanto a la máquina virtual, ahora dispone de reflexión estructural (antes sólo para atributos, ahora incluso se pueden compilar nuevos métodos en tiempo de ejecución), y se han pulido varios pequeños errores.

También hay una nueva sección de publicaciones.

Algunos ejemplos en Zero.

03 febrero 2005

Reflexión estructural

La reflexión estructural consiste en poder consultar atributos y métodos de un objeto (introspección), y además, poder cambiarlos.

Lo más complicado es permitir cambiar (es decir, recompilar) los métodos, y ésto supone que el compilador debe estar dentro de la máquina virtual, lo cuál supone una pequeña reorganización del código.

Con la nueva versión ya publicada en la web, se pueden hacer cosas así:


__this.addAttribute( "color", "black" )

__this.addAttribute( "doors", 4 )

reference args = VectorInstance.copy( "" )

__this.addMethod( "f", args )

__this.compileToMethod(

          __this.getMethodNumberByName( "f" ),

          "STR \"¡Hola!\"\nMSG System.console write __acc\nRET"

)

02 diciembre 2004

Conferencia en la EUITIO

Ayer impartí una charla en la EUITIO (Escuela Universitaria de Ingeniería Técnica de Informática de Oviedo) sobre Zero.

Las transparencias pueden encontrarse en la página de publicaciones.

Conferencia en la EUITIO sobre Zero.

08 octubre 2004

Conteo de referencias

Terminada y depurada la gestión de memoria en Zero (hasta el momento, símplemente, no funcionaba). Se trata de un sistema tan básico y ampliamente reconocido como el conteo de referencias. Ha pasado casi un año (exactamente, 11 meses), desde que la máquina virtual empezó a funcionar.

Se trata de que cada vez que una referencia se hace a un objeto, su conteo de referencias se incrementa en uno. Cuando una referencia se cambia o elimina, se decrementa en uno. Al llegar a cero, se elimina el objeto.

11 septiembre 2004

Ya hay vectores nativos

Añadido el soporte nativo para vectores; ahora la librería está totalmente completa, por el momento. La librería, eso sí, ya es totalmente congruente. Existen, "Int" (enteros), "Float" (flotantes), y "String" (cadenas) como "tipos de" datos nativos, además de las estructuras de datos "Map" (vector asociativo) y "Vector", la segunda también nativa (sólo por cuestiones de rendimiento).

31 mayo 2004

Ya hay enteros

Se añade el soporte para enteros (hasta ahora sólo flotantes) y se hace una revisión casi completa de la librería.

Librería estándar

Quedan ya pocas cosas que meter en la librería interna.

23 abril 2004

Zm funcional

Zero está ya completo (en cuanto al soporte básico), incluyendo el macrosenamblador, y la nueva versión del formato bytecode.


Quedan por soportar los vectores y pulir la librería, entre otras muchas cosas.


Empleo a Zero en las prácticas de la asignatura Tecnología de Objetos, que imparto.

25 febrero 2004

Zm

Empiezo a trabajar en Zm, un macroensamblador que haga la vida más sencilla a aquellos que quieran programar en Zero (¡incluyéndome especialmente a mi!). No es todavía un lenguaje, pero se le acerca ya bastante. Completo una segunda versión del bytecode, tratando de asegurarme que sea más portable.
Además, elimino el almacenaje de cadenas tipo Pascal, con la longitud delante y sin delimitador de final, po r otro tipo C, sin longitud delante y con un cero como final.

23 enero 2004

Zvm en un curso de doctorado

Zvm presenta ya una situación lo suficentemente estable como para poder ser utilizada en programas de ejemplo (a pesar de las carencias comentadas). Todavía no está implementado el almacenamiento persistente ni el control de memoria ni un mínimo sistema de optimización.
Empleo a Zero en un curso de doctorado. Lo cierto es que la aceptación es mucho mejor que lo esperada, teniendo en cuenta que los programas deben utilizarse desde línea de comando y que como editor emplearon el bloc de notas. Un ejemplo de sesión de trabajo:


$ za HolaMundo

Za Ensamblador Zero (Zero assembler) v1.0

$ zvm HolaMundo

¡Hola, mundo!

Por supuesto, la máquina virtual ya puede hacer más cosas (atributos, herencia ... etc.).