En este video, me gustaría explicar un poco
las diferente formas de empaquetar Pharo, para
quedar perdidos en el futuro.
Cuando instalas Pharo, lo harás normalmente desde un enlace
dado, pero si sigues a Pharo,
el lanzamiento al momento de este video
es la versión 4, pero la versión 5 será exactamente igual.
Cuando descargo la versión Mac OSX, obtengo este zip.
Si descomprimo este zip, obtengo lo que yo llamo la aplicación Pharo4.
Cuando lanzo la aplicación de Pharo 4, obtengo Pharo.
Imaginemos que escribimos
"Hola". Cuando guardo, guardaré el ambiente.
Hago clic en Guardar.
Si hago clic en Salir ahora, lo lanzaré de nuevo,
y tendré exactamente "Hola", porque salvar la
imagen está haciendo una copia de memoria con todos los
objetos incluidos bytecodes y métodos compilados.
¿Qué hay en
esta aplicación?
En Mac, podemos ver lo que está dentro.
¿Si hago clic en Mostrar contenido, que voy a ver?
Voy a encontrar la máquina virtual de Pharo y recursos.
Y aquí, encontraré el archivo de cambios y un
archivo de imagen.
El archivo de imagen es el que realmente contiene
los objetos que representan la memoria, y el archivo de cambios
es un archivo que comprende todos los cambios incrementales
que he hecho. Si hago doble click
en el archivo de imagen,
normalmente, dependiendo del OS, lo pondré en marcha
en una máquina virtual Pharo que haya instalado.
Volverá a iniciar mi archivo de imagen.
¿Qué pasa con este archivo de imagen?
Imaginemos que defino una clase.
Voy a definir un paquete,
"Add package" "ATest".
En este paquete,
voy a definir "MyStrangeClass".
Lo defino y aquí pongo "foooo" que retorna
42.
Si guardo esta imagen con otro nombre, voy a
guardarla con el nombre
Pharo40Stef.
¿Que pasó?
Salgo. Creó otro par
imagen y cambios. En este archivo de cambios, no lo abriremos
porque no es legible por un humano, está
el código de métodos que acabo de crear.
Y si vuelvo a lanzar Pharo 4, voy a
lanzarlo usando la máquina virtual, me sale
una vez más la instantánea, qué llamamos la copia
del sistema que había hecho en cierto momento.
Ahora, si vuelvo a ejecutar la imagen PharoStef,
¿Que hará?
Me mostrará el sistema con mi nueva clase.
La aplicación Pharo 4, es lo que llamamos un bundle de Mac
que contiene la VM de Pharo más una imagen y un archivo de cambios.
Si hago doble click en él, no tengo otra opción
siempre elegira la imagen de Pharo porque es un script
que dice: "Aquí está, esta es ESA imagen".
En general, es útil para empezar a usar
Pharo, pero no lo usamos.
En general, usamos un instrucción de línea de
comandos que es algo así como
pharo-ui MyPharoImage.image
y esto lo hará.
O si usamos la línea de comandos y
no queremos tener la ui, haremos este tipo de cosas.
Significa que Pharo está instalado en algún lugar de
tu sistema como una aplicación Unix estándar.
Ahora, ves en esta página
que puedes descargar Pharo,
puedes descargar una máquina virtual.
Vamos a descargar la máquina virtual y
descargar una imágenes y un archivo de fuentes.
Voy a explicar lo que es, de esta manera tendremos los
3 a mano, y jugaremos juntos.
Ahora si descomprimo el archivo correspondiente a
Pharo Image y Changes, me sale este.
Cuando descomprimo, ¿qué obtengo en Pharo en este archivo?
Obtengo una imagen.
Lo haremos de modo que puedas
ver lo que hay dentro.
Significa que este archivo, de nuevo es una imagen
correspondiente a cierto estado de la instantánea o de la
imagen Pharo, del sistema virtualizado. Aquí, puedo ejecutarlo
en la imagen Pharo.
Recibo un mensaje ¿que es este mensaje?
El sistema puede funcionar desde que puedo ejecutar cualquier cosa
Puedo ejecutarlo.
Ahora, puedo hacer exactamente lo que hice antes.
Puedo definir MyPackage, y en MyPackage
diré MyStrangeClass.
Entonces comenzamos a acostumbrarnos.
Defino un método:
fooo 42. Me pregunta por mi login.
Puedo hacer como siempre "MyStrangeClass new foo"
y tengo 42.
Muy bueno. Puedo guardar.
Lo guardo por ejemplo con otro nombre,
Stef, lo llamo PharoStrange.
Bien.
¿Qué dice?
Dice "No puedo encontrar el archivo de fuentes"
Pharo 4. 0. "¿Por qué dice esto?""
Cuando abro el navegador, si puedo ver por ejemplo el
AST, este no es tu código, así que vamos en la parte superior.
La razón por la cual el sistema
no encuentra los comentarios
es que se está descompilando.
Entonces, no lo vemos porque los métodos son
demasiado simples, pero descompila el código.
Vamos a hacer algo más concreto.
Aquí descompiló el código, el Bytecode representa un
un argumento y sabe muy bien que este es un argumento.
Pero perdimos los fuentes.
En general, los fuentes del sistema, cuando Pharo
se implementa, se almacenan en un archivo llamado PharoV4Sources
que puedes encontrar aquí.
En general el archivo de
fuentes se instalará una vez en el sistema porque
este archivo está en solo lectura, y todas tus
aplicaciones pueden usarlo.
Lo tengo aquí, lo voy a descomprimir.
Aquí tengo Pharo4.source.
Si salgo sin guardar
y relanzo la aplicación, aquí de todos modos ves
que hace exactamente lo mismo que antes, es decir
que cuando guardo una instantánea dándole
otro nombre, tengo una vez más un sistema con 2 cosas:
la imagen y sus cambios.
Aquí si tomo mi imagen anterior,
Ya no hay error porque ha encontrado el código y
sabe que corresponde a el estado
cuando lanzamos la primera imagen.
Ahora si uso el segundo,
si considero el paqueete AST-Core, primero
mis clases tienen comentarios.
Aquí estos son realmente los nombres que la gente les dio.
Si miramos esta arquitectura, ¿que tenemos?
Tenemos el archivo fuente que contiene las fuentes del sistema,
en general, una vez que el sistema es compilado, el compilador
no necesita las fuentes,
la maquina virtual, la imagen y los cambios.
La imagen contiene todos los objetos. que se han definido más
los objetos del sistema, con los archivos de cambios que
contienen los deltas de lo que has hecho comparado con el archivo de fuentes.
Cada vez que guardas tu sistema, es como si
guardaras una imagen virtual de tu sistema operativo.
Este es exactamente el mismo principio.
Si miras dentro de la aplicación Pharo 4,
encontrará estos recursos.
Tengo las fuentes de Pharo 4, tengo el archivo de imagen,
el archivo de cambios y en algún lugar aquí la máquina virtual
con sus complementos.