miércoles, 22 de abril de 2009

Esta disponible VA Smalltalk 8.0

Instantiations ha liberado la versión 8 del conocido VA Smalltalk (sucesor del Visual Age for Smalltalk). 
La versión 8 tiene soporte para Seaside, framework web para hacer aplicaciones complejas en la red.
Las más importantes características del VASmalltalk son:
* 100% compatible con Visual Age for Smalltalk.
* Soporte para desarrollo y deployment en varias plataformas:
- AIX
- Linux
- Solaris
- Windows
- z/OS platforms
* Integración con el framwork web Seaside (www.seaside.st

El VASmalltalk es gigantesco así que es imposible enumerar todas las características, más información se puede encontrar en el link: http://www.instantiations.com/VAST/prod/vast.html
Instantiations también tiene productos muy buenos para Java.

Esta buena noticia del VASmalltalk 8.0 se suma a la ya conocida del Dolphin Smalltalk NG que será liberado en unos meses. 

Creo que la noticia de Dolphin Smalltalk NG es más importante dado que no solo representa una nueva versión de Dolphin, sino mucho más...

Es la unión de Object-Arts (Dolphin Smalltalk X6) y Lesser Software (LSW Vision Smalltalk) en un mismo producto.

El Dolphin Smalltalk NG tendrá una nueva Virtual Machine (la Vision VM), creada por Lesser Software para su Smalltalk (LSW Vision Smalltalk).  

Por lo que esta nueva versión será el ambiente Dolphin Smalltalk X6 corriendo sobre la virtual machine del LSW Vision Smalltalk. Con el tiempo se irán portando algunos framework del LSW al Dolphin NG, por lo que la primera versión de Dolphin NG (ng - next generation) será más parecida al Dolphin X6 que al LSW Vision Smalltalk

Otro dato no menor es que la virtual machine Vision VM es compatible con Visual Smalltalk  (si otro Smalltalk más) a nivel de bytecodes, por lo que es posible migrar aplicaciones de Visual Smalltalk a Dolphin Smalltalk NG, por lo que constituye la unión de tres comunidades de Smalltalk

Saludos,
Bruno


sábado, 4 de abril de 2009

Programación Ultra Dinámica II

 Simulador de Tráfico Aéreo (Completo)

 En el siguiente link se muestra como construir un Simulador de Tráfico Aéreo en un ambiente dinámico (dónde no hay definición de tipos, aunque cada objeto tiene su clase).
Esta compuesto en 4 videos (que son largos) pero creo que vale la pena ver, muestra como se construyen simulaciones en ambientes dinámicos. En este caso se usa Dolphin Smalltalk (que es una ambiente comercial con una versión community), pero también se puede hacer algo parecido en Squeak que es un Smalltalk totalmente free. Los paquetes (fuentes) están para bajar en la página de Object-Arts.
Por que el título Programación Ultra Dinámica ?, en los videos se ve que la metodología de desarrollo en este ambiente es extremadamente dinámica y bastante diferente a como estamos acostumbrados a programar:

* Modificación del código fuente sin detener la aplicación.
* Creación de métodos on the fly.  
* Cada objeto es capaz de presentarse en pantalla de una manera entendible para ser observado y manipulado (Inspectors). Esto viene dado por el ambiente.
* Todo es un objeto (incluso enteros, false, true, nil, strings, etc) y los objetos se comunican enviándose mensajes. Hay una metáfora de comunicación uniforme entre los objetos (mensajes).
* Se construye sobre el MVP, un framework gráfico que solo permite construir la interfase en 3 capas (MVP: Model-dominio o modelo, View-GUI, Presenter-"administrador" de acciones del usuario).
* Ambiente dinámico pero con intellisense, donde no hay definición de tipos.
* Es un ambiente donde hay más múltiples herramientas para desarrollar: SystemBrowser, ClassBrowser, Workspaces, Inspectors, Debbuger, Idea Space, SUnit Browser, TestRunner, etc, etc.

Espero no haber aburrido con toda esta descripción. Lo que recomendaría es bajarse la versión community y bajar de aquí este paquete e instalarlo, y junto con el video ir modificando la aplicación mientras esta corriendo. 

Como dije es bastante tiempo pero vale la pena !!!

Link principal:
Videos:
Parte 1
Parte 2
Parte 3
Parte 4

Imagen de la Simulación (Juego):


Copio un cambio al método #drawOn: de la clase AtcPlane para que emita ondas también, al igual que las ciudades. Se copia el texto en la clase AtcPlane y se da Accept. En realidad este método debería refactorizarse porque es demasiado largo.

AtcPlane 
drawOn: aCanvas 
| flText textExtent vector velocity2D state |
state := aCanvas save.

20 to: 50 by: 15 do: [:n | | ringBox |
ringBox := Rectangle center: self position extent: n.
ringBox := (ringBox expandBy: (Time now asMilliseconds / 4 % 1500 //20)).
aCanvas brush: Brush transparent.
aCanvas pen: (Pen withStyle: PS_DOT width: 1 color: RGB white ).
aCanvas ellipse: ringBox asParameter asRectangle].


aCanvas pen: Pen black.
velocity2D := self velocity asPoint.
velocity2D r >
 ifTrue:[vector := (velocity2D * self velocityVectorLength) rounded.
aCanvas moveTo: self box center.
aCanvas lineTo: self box center + vector].
aCanvas setBkMode: TRANSPARENT.
aCanvas font: (Font name: 'Arial' pointSize: 8).
aCanvas fillRectangle: self box color: self color.
aCanvas text: self flightId at: self box bottomRight.
flText := 'FL' , self flightLevel displayString.
textExtent := aCanvas textExtent: flText.
aCanvas text: flText at: self box topLeft - textExtent.
aCanvas restore: state

Saludos,
Bruno