Bitácoras

Bitácora 1

Analizando las características que debe tener el CHComputador,  decidimos que el lenguajes más apropiado para el desarrollo de este es java, ya que nos permite un fácil manejo de aplicación desde internet y el manejo de hilos o threads, como se llaman en este lenguaje, no es de una manera muy complicada. Además nos permite el desarrollo de una interfaz grafica de una manera rápida, para utilizar la mayor parte del tiempo en el desarrollo de los demás componentes que representan realmente una parte importante para el proyecto.
Según los requerimientos del CHComputador, manejaremos un vector de hasta 9.963 posiciones, y este tomara por defecto 963 posiciones. El valor por defecto del kernel será de 35 posiciones del vector antes mencionado. Sobra decir que todos estos valores podrán ser modificados al inicio de la ejecución del CHMaquina por el usuario final.
El acumulador ocupará la primera posición del vector de memoria, por lo que le corresponderá la dirección 0, las posiciones siguientes serán las pociones del kernel, ocupando el valor que el usuario final decida al inicio de la ejecución del simulador, las posiciones siguientes serán las que almacenaran las instrucciones del código introducido.
Para almacenar todos los datos necesarios, se crearán un conjunto de clases que simplificaran el funcionamiento y que nos permitirá acceder a los datos de una manera más rápida y ordenada. Las clases a crear deberán tener una arquitectura parecida a la que explicaremos a continuación:
·         Se deberá crear una clase que nos permita almacenar los datos correspondientes a cada instrucción, en el programa principal se creará un vector de este tipo de clase, en el cual se almacenaran todas las instrucciones de todos los programas que se cargue al CHMaquina.
En el vector de memoria principal se almacenará la posición que la instrucción ocupa en el vector de instrucciones, para sí acceder a ellas de una manera más fácil y ordenada. En este momento no es importante que instrucción corresponde a que programa puesto que posteriormente crearemos clases que nos resuelvan este problema.
·         Se deberá crear una clase que nos permita almacenar los nombres de los programas, además de el numero de instrucciones, cuál es la posición de en donde inician estas y un número que lo identifique.
En programa principal se deberá crear un vector de este tipo de clases en el cual se almacenarán todos los programas que se carguen al CHMaquina.
·         Se deberá crear una clase que nos permita almacenar los nombres de las diferentes variables, además del identificador del programa al que pertenecen, la dirección de la variable en el vector principal y el tipo de la variable.
En programa principal se deberá crear un vector de este tipo de clases en el cual se almacenarán todas las variables de todos los programas que se hayan cargado en el CHMaquina.
·         Se deberá crear una clase que nos permita almacenar los nombres de las diferentes etiquetas, además del identificador del programa al que pertenecen y la dirección a la que tiene que ir cuando se ejecute. De La misma manera se creará en el programa principal un vector que almacene todas las etiquetas.
La idea que todo este conjunto de vectores que se crearan se relacionen entre si y permitan un correcto funcionamiento del programa cuando se ejecute. Lo mejor es que cuando se cree el objeto de clase instrucción, se lleve a cabo el análisis sintáctico y se determine si es correcto o no.
Se deben hacer depuraciones para que en ningún momento se cargue un programa que no quepa en la memoria principal del CHMaquina.
La idea es luego de tener el modelamiento de los datos terminado, iniciar con el análisis de cómo debe ser el funcionamiento del compilador y como posteriormente debe ejecutar los programas que se hayan compilado correctamente.
El cronograma tentativo del desarrollo del proyecto será el siguiente:
Semana 1:
Estudio Preliminar:
Análisis general del problema e investigación del lenguaje más apropiado para desarrollarlo.
Planeación:
Planeación de tiempo que serán utilizados para el desarrollo de cada componente. Se distribuirá según la complejidad e importancia dentro del proyecto.
Desarrollo de la interfaz grafica:
Luego de analizar cuál es el lenguaje de programación más adecuado, crearemos una interfaz gráfica que cumpla con todas las especificaciones requeridas.
Semana 2:
Desarrollo del compilador:
Desarrollar la aplicación para que compile todos los programas en lenguaje CHMaquina y nos muestre los errores que este pueda tener, se desarrollara una aplicación aparte de la interfaz gráfica ya desarrollada, para no preocuparnos por eso por el momento.
Semana 3:
Continuación del desarrollo del compilador.

Integración del compilador con la interfaz grafica:
Luego de terminar con el desarrollo del compilador, procederemos a unificarlo con la interfaz grafica desarrollada en la primera semana, dando los detalles finales a la CHMaquina.
Semana 4:
Control de calidad:
 En el control de calidad, analizaremos que cumpla con todas las especificaciones requeridas.
Documentación:
Desarrollo de manual de usuario del CHMaquina.

Bitácora 2
En esta semana nos preocupamos mas por la lógica principal del programa, concentrándonos principalmente en la revisión de sintaxis de los programas “.ch”, que serán los que alimenten el desarrollo.
Inicialmente, desarrollamos clases que nos permitieran cargar los archivos “.ch”, en variables para después ser revisados, además creamos un entorno que permitiera al usuario modificar el archivo en cualquier momento, ninguna de estas clases esta perfeccionada pero nos permite dar un vistazo a lo que serán posteriormente. Luego de cargar el archivo, y permitirle al usuario modificarlo, nos preocupamos por la manera en la que revisaríamos línea a línea y palabra a palabra, el documento y así encontrar cada error de sintaxis posible. Para esto dividimos inicialmente el documento por líneas, para posteriormente dividir estas líneas en palabras y almacenarlas en un vector de clases en la que podemos acceder a ellas de una manera más fácil y ordenada. Luego de esto iniciamos la revisión de sintaxis, intentando observar todos los errores posibles, y mostrándole al usuario en que línea y cuál es el error especifico. Para esto creamos un inventario de errores muy completo y explicito. Al mismo tiempo de la revisión, nos encargamos de crear vectores, que nos almacenen las variables y las etiquetas que se crearan en la posterior ejecución del programa. Hace falta decir, que para poder hacer la revisión completa, debimos recorrer el vector de instrucciones en dos ocasiones, en la primera, observando la mayoría de las palabras reservadas, pero sin tener en cuenta las palabras “Vaya” y “Vayasi”, para en un segundo recorrido, y con las diferentes etiquetas almacenadas en un vector, poder analizar si estas instrucciones estas correctamente ingresadas.
Posteriormente continuamos cargando todas las instrucciones debidamente revisadas, en el vector de memoria principal, además de las variables. En este momento  se creará un vector en el que se almacenarán todos los nombres de los programas, además de la dirección en donde está almacenado en el vector de memoria principal y el número de instrucciones y variables.
En esto resumimos lo poco que hemos hecho en esta semana, posteriormente pasaremos a buscar más errores de sintaxis y a la ejecución del programa usando el vector de memoria principal.
Anexamos un ejecutable del programa, además de todas las clases creadas en él.



Bitácora 3
En esta semana, nos dedicamos completamente a la parte que se encarga de la ejecución de las instrucciones, además de que agregamos todas las variables, y las instrucciones al vector principal de memoria. La clase ejecutar, toma el programa que se va a ejecutar, con los atributos de este, busca la posición de memoria en la que esta la primera instrucción, el numero de instrucciones que tiene y hasta donde llega. Inicia la ejecución del programa línea por línea, usando el método EJecucionLinea(), que lo que hace es ejecutar la instrucción y devolver la posición de la instrucción que tenemos que ejecutar posteriormente. El método EjecutarLinea(), dado el código del operando, ejecuta otro método que me hace exactamente lo que pide las especificaciones del CHMaquina. En caso de que se ingrese el vaya o el vayasi, esta instrucción deberá llamar otros métodos que me devolverán la posición de la instrucciones que se ejecutara posteriormente. En esto se resume lo que hace la función ejecutar.
El resto de lo que hicimos esta semana fue organizar la interfaz grafica para que funciones los pequeños detalles, como informar sobre el modo en que está funcionando, que pueda ejecutar las instrucciones paso a paso, y que me muestre todos los datos de las etiquetas, las variables, los programas y la memoria principal.