Hola. En este curso,
nosotros repasaremos cómo funciona la ejecución de Pharo,
y qué tipo de archivos se utilizan cuando y donde.
Hasta ahora has estado usando
.imagen, .source y .change,
y probablemente no esté claro para ti.
Funciona, pero me gustaría explicar exactamente lo que hace,
para que puedas evitar futuros errores y mejor controle su sistema.
En suma, el modelo de ejecución de Pharo
es una maquina virtual que ejecuta el código compilado.
Esta maquina virtual es específico de la plataforma,
y las máquinas virtuales existen para diferentes versiones de MacOS, Windows, Linux,
IOS, ARM y Android.
Es el mismo modelo de ejecución. como para C # y Java.
En Pharo es exactamente lo mismo.
Tenemos lo que se llama compilación de múltiples etapas.
Esto significa que el código que programa se compila a bytecode,
que es un conjunto de instrucciones neutrales de la plataforma.
Y la máquina virtual se transforma bytecode al código de ensamblaje.
Así es como funciona Pharo.
Es lo mismo en otros lenguajes orientados a objetos.
La máquina virtual es el archivo.
Según su sistema operativo, es .exe o .app con MAC.
Son máquinas virtuales.
Pueden ejecutarse en dos modos,
ya sea desde una línea de comando,
o en modo interactivo con una interfaz gráfica
Por ejemplo, con Linux, cuando usas Pharo en un servidor
usualmente usas la línea de comando.
La máquina virtual se ejecuta código compilado
y genera en el ensamblaje de la mosca.
Este código compilado
está empaquetado y almacenado en una imagen.
Una instantánea de memoria.
Esta imagen representa una virtualización. sistema para objetos Pharo.
Lo veremos a continuación.
La máquina virtual necesita solo la imagen para ejecutar programas.
Porque aquí es donde se compila el código y donde están los objetos.
Además, tenemos 3 archivos.
Imagen, cambio y fuente.
Explicaré cada uno de estos archivos y su papel.
El archivo .image es una instantánea de memoria que contiene objetos
Contiene objetos simples como puntos, cadenas, etc.
Todo lo que usamos
Pero también contiene métodos compilados
y concretamente clases compiladas.
Entonces, cada vez que guarde su imagen, Todos los objetos se guardan en el disco.
La imagen es realmente un sistema de virtualización. por delante de su tiempo.
Al inicio,
Recuperas todos los objetos que guardaste.
Es decir, el contador del programa,
que también se guardará
y restaurado exactamente donde estaba antes de guardarlo.
Lo importante es que tienes un sistema operativo y una máquina virtual,
y por encima de la máquina virtual, tienes este sistema,
que es un espacio de memoria donde viven tus objetos
y que puedes guardar a tu disco o no.
Y contiene tus objetos compilados.
Es por eso que puse "1s" y "0s".
En adición, tienes cambios de archivos
Un archivo de cambio Es un archivo que contiene copias de seguridad.
Todo lo que haces en Pharo se registra.
y entró en una especie de gran cinta virtual,
que contiene todo de sus adiciones y modificaciones.
Es como Big Brother, solo es para Pharo.
Puedes divertirte con él y utilizarlo para reproducir ciertas secuencias.
Es una cinta
que contiene copias de seguridad de cada acción que modifica Pharo.
Lo que sucede es que, un archivo de cambio está asociado a un archivo de imagen.
¿Cuál es el propósito de esto?
Cuando defines una nueva clase,
el código de clase no se almacena en el archivo de imagen,
está almacenado en el archivo de cambio.
Entonces si desasocia los dos, podrías perder tu código
El programa seguirá ejecutándose,
pero puede perder El código fuente de su aplicación.
Si miramos de cerca,
Tengo un archivo de imagen que contiene
mi bytecode y objetos compilados en forma binaria,
y al lado, tengo un archivo de cambio que contiene una lista de cambios.
Por ejemplo, aquí agregué contador, aumentar y disminuir
Del mismo modo con otras clases.
Y tenemos herramientas que te permiten para reproducir estos cambios.
En Pharo, puedes navegar por Varias versiones de métodos.
Las herramientas que usan diferentes versiones de los métodos usan .change.
Dibujé una línea de puntos alrededor de esta pareja. porque es muy importante
que .change y .image permanecen sincronizados
No comience a editar el texto con Emacs. dentro de archivos .change.
Puedes hacerlo, pero no tiene ningún interés real.
Solo romperás tu archivo .change.
El archivo de imagen continuará ejecutándose
porque solo usa .change para mostrar datos en el modo de programación.
Pero no lo aconsejo.
Generalmente hablando,
Las imágenes son útiles para desarrollar.
Tu estas trabajando y alguien te interrumpe.
Guarda tu imagen y toma un descanso.
Cuando vuelvas, estás exactamente en la misma situación
El estado completo de su sistema se almacena en el disco.
Puedes volver 3 años después.
y encontrar exactamente el mismo estado que hace 3 años.
Pero para un ingeniero de software, no es una buena práctica.
Está bien para el desarrollo. y prototipos.
Por favor use un sistema de control de versiones en su lugar.
Tenemos Monticello,
un sistema de control de versiones escrito en Pharo,
y tenemos un backend para Git.
Guarde su código en un sistema de control de versiones,
luego usa una integración continua Servidor como Jenkins o Travis
para construir tus imágenes cada vez que se inicia.
La gente a menudo confunde Estas dos cosas al principio en Pharo.
Las imágenes son extremadamente prácticas. Para desarrollo.
Pero cuando quieras
desarrollo más estructurado y mayor control,
debes usar absolutamente herramientas clásicas
Funcionan bien
Hay un modo prototipo,
pero en algún momento debes guardar a un sistema de control de versiones,
entonces puedes acceder Todas las versiones de su entorno.
Hay videos que explican la clase de contador, por ejemplo.
Hay un tercer archivo No he hablado todavía.
Es el archivo fuente.
Un archivo fuente es un tipo de archivo de cambio específico.
Contiene todas las definiciones textuales del sistema en .0.
Para cada nueva versión de Pharo, hay un nuevo archivo .change,
y este archivo .change contendrá definiciones para matrices, conjuntos, etc.
Todos los métodos que se definen
en las bibliotecas centrales de Pharo.
Generalmente hablando, querrá compartir este archivo fuente
y está en solo lectura.
Los archivos de cambio están en modo escritura y hay una por imagen.
Vamos a ver.
Esta es una instantánea del estado del sistema.
al inicio de la nueva versión de Pharo 4.0,
que correspondía a este universo.
Luego definimos nuevas clases. Definí la clase de nodo.
Creé nuevos objetos en forma binaria,
y en el archivo de cambio asociado con mi imagen,
Agregué mis nuevas definiciones, que se escriben aquí.
Como dije, este archivo está en modo de solo lectura.
Y esta está en modo de escritura.
Una vez más podemos decir eso, conceptualmente hablando
la imagen y los archivos de cambio funcionan juntas
Espero que esto haya aclarado los roles de estos 3 archivos.
Lo que necesitas saber es que estamos armando
un nuevo sistema de gestión de cambios
para que puedas recuperar tus archivos más fácilmente
o reproducir varias versiones de tu sistema
En el futuro, Ser una mejor integración con Git,
y ofreceremos nuevas formas para producir imágenes industrialmente.