[Pfc-prolog-cvs] prolix-doc/pfc-es/introduccion herramientas.tex,NONE,1.1 motivacion.tex,1.1,1.2 obj
Status: Beta
Brought to you by:
ivanfrade
From: <iva...@us...> - 2003-08-18 18:44:58
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv20922 Modified Files: motivacion.tex objetivos.tex softexistente.tex solo_intro.tex Added Files: herramientas.tex Log Message: Nuevo apartado de momento en la introduccion: herramientas --- NEW FILE: herramientas.tex --- % % % Introduccion::herramientas % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Herramientas} \subsection{Herramientas software} Para el desarrollo de este proyecto se han utilizado durante todo el proceso herramientas licenciadas como software libre: \begin{itemize} \item Sistema Operativo Debian GNU/Linux (<<woody>> y <<sid>>) \item Entorno de desarrollo Java Blackdown 1.4 \item Editor XEmacs con JDE. \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 \item Implementación del entorno J2EE jBOSS \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin % \item Herramientas de depuración como jndi.browser \item Entorno de desarrollo de aplicaciones web Struts \item Sistema de control de versiones CVS (proporcionado por sourceforge.net) \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a Sid corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} Blackdown se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} El editor XEmacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation). Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. JDE (Java Desktop Environment) es un paquete de extras para xemacs que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (Ctrl + (c v b)), obteniendo los errores en una de las ventanas del xemacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación ctrl + (c v z)) y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (ctrl + (c v) .). Estan son las carácterísticas mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta <<make>>. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). Ant cumple la misma función que <<make>> pero desarrollado en java y orientado a proyectos en java. <<make>> resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. El fichero XML utilizado por Ant se conoce como <<buildfile>> (al igual que en <<make>> se habla de <<makefile>>) y por defecto se utiliza el build.xml que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. A continuación incluimos un fragmento del \texttt{build.xml} con el que se compila esta documentación, donde se declaran 4 tareas, se observan las dependencias entre si (atributo \texttt{depends} del \texttt{target}), y como usamos la clase de java que implementa una tarea con \texttt{taskdef} (el fichero compilado de la clase \textsf{LaTeX.class} esta en el directorio \textsf{build} del proyecto). \begin{verbatim} <target name="prepare"> <tstamp /> <mkdir dir="build" /> </target> <target name="build" depends="prepare" > <javac srcdir="src" destdir="build"/> </target> <target name="declare" depends="build"> <taskdef name="latex" classname="LaTeX" classpath="build"/> </target> <target name="main" depends="declare"> <latex latexfile="${latexfile}.tex" verbose="false" pdf="${pdf}"/> </target> \end{verbatim} \subsubsection{Generador de código XDoclet} En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de xdoclet: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la generación de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece. XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando que necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En Prolix se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para Prolix fue jBoss). Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el Xdoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} /* * @ejb.bean name="Program" * type="CMP" * local-jndi-name="org/asturlinux/frade/prolix/ejb/entityjb/ProgramLocal" * view-type="local" * * @ejb.value-object name="Program" * match="*" * * @ejb.value-object name="ProgramShort" * match="short" * ... * * @ejb.finder signature="java.util.ProgramLocal findByPK(java.lang.String p)" * unchecked="true" * query="SELECT OBJECT(p) FROM Program p WHERE p.title = ?1" * */ \end{verbatim} Ejemplo de las etiquetas añadidas para que el Entity tengo un atributo \texttt{title}, definir su tipo SQL y JDBC, que sea accesible desde el exterior (metodo de interfaz), y que sea la clave principal para estos EntityBeans. \begin{verbatim} public abstract class ProgramBean implements EntityBean { ... /** * @ejb.pk-field * @ejb.persistent-field * @ejb.interface-method * * @jboss.jdbc-type VARCHAR * @jboss.sql-type VARCHAR(50) * * @ejb.value-object match="short" */ public abstract java.lang.String getTitle(); } \end{verbatim} \subsubsection{jBOSS} El entorno de desarrollo J2EE define unos interfaces y unos requisitos que espera encontrar en un <<contenedor>> de aplicaciones. Hay diferentes implementaciones de estos requerimientos, y para Prolix se utilizó el contenedor jBOSS. Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad. \subsubsection{Servidor de Base de Datos mySQL} Este es uno de los servidores de bases de datos mas populares. Se distribuye bajo dos tipos de licencia, libre bajo la GNU GPL (General Public License) o con licencia comercial estandard, que se adquiere a la compañia que lo desarrolla (MySQL AB). Funciona en más de 20 sistemas operativos. \subsubsection{Gestión de la base de datos phpMyAdmin} phpMyAdmin es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBOSS esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x). \subsubsection{Entorno de desarrollo de aplicaciones web Struts} %FIXME Use the Web luke \subsubsection{Sistema de control de versiones CVS} Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. En el caso de Prolix, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en Prolix esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de Prolix se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} El proyecto Prolix esta albergado en el sitio web sourceforge.net. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} \item Sistema de control de versiones CVS. Prolix alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de prolix, y no a la web que el usuario se va a encontrar al utilizar Prolix. \end{itemize} \item Listas de correo para uso del proyecto. Prolix utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. \item pfc-prolog-devel: mensajes entre desarrolladores. \item prolix-devel-es: la lista anterior esta en inglés, esta es la versión española. \item pfc-prolog-cvs: Cada vez que se actualiza el CVS, este se encarga de manera automática de mandar un mensaje a esta lista de correo con los ficheros añadidos, borrados, o las modificaciones introducidas, además de la descripción que el desarrollador haya escrito de la actualización. Así es posible seguir el desarrollo del proyecto sin consultar el CVS. \end{itemize} \item Sistema de control de errores (Bugs): Cualquier usuario puede anunciar un error con este sistema rellenando un formulario muy sencillo. Se crearon 5 categorias de errores: \begin{itemize} \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de Prolix. \item Usabilidad: Este aspecto es importante en Prolix, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. \end{itemize} %FIXME Captura de pantalla de un bug \item Sistema de lanzamiento de ficheros (File Release System - FRS): La filosofia de software libre promueve la idea de <<release soon, release often>> (lanzar una versión del programa con cada mejora, y hacerlo a menudo). Para facilitar la labor de subir los ficheros de codigo a la web, actualizar las páginas con la información adecuada, replicar los ficheros, Sourceforge dispone de un sistema FRS con el cual, siguiendo una serie de pasos en varias páginas web, se automatiza todo el proceso, poniendo a disposicion del publico los ficheros a distribuir del programa de una forma rapida, facil y relativamente sencilla. \item Sistema de noticias (news). Se pueden hacer anuncios sobre el proyecto a traves de un sistema de noticias, que coloca el titular en la página del proyecto.De las noticias publicadas cada dia, Sourceforge escoge las que le parecen mas interesantes y las coloca en su página web principal (este es un medio muy importante de promoción para proyectos). %Fin prestaciones sourceforge usadar en prolix \end{itemize} Sourceforge también ofrece otras características que no fueron utilizadas para este proyecto pero resulta interesante mencionar, por su futura utilidad o como referencia para otros desarrollos: \begin{itemize} \item Sistema de solicitud de prestaciones (Feature request): Los usuarios pueden proponer características que no estan disponibles en la versión actual. Es una fuente de realimentación muy importante para mantener vivo un proyecto. \item Sistema de gestión de documentación: Para mantener documentos y tutoriales online. \item Exportación de información en RSS. Es posible obtener en este formato las noticias, las estadísticas del proyecto o los lanzamientos de ficheros. Esto permite seguir la evolución de un proyecto desde nuestro programa de correo, automatizar la inclusión de su información en otra pagina web, \dots \item Granja de compilación (Compilation farm). En el desarrollo de proyectos dependientes de la plataforma, puede ser interesante compilarlo en máquinas a las que no se tiene acceso. Sourceforge pone a disposición de los desarrolladores máquinas en diferentes arquitecturas, donde, previa solicitud, se les da un acceso shell para compilar el proyecto. %Fin prestaciones de sourceforge NO usadas en prolix \end{itemize} Aunque el nombre del proyecto es Prolix, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es http://www.sourceforge.net/projects/pfc-prolog. Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. Prolix dispone de ese espacio en http://pfc-prolog.sourceforge.net, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} \LaTeX es un sistema de composición de textos totalmente diferente al habitual. En lugar de la fisolofia WYSIWYG (What you see is what you get: lo que ves es lo que obtienes), esta basado en una forma de trabajo anterior pero que demuestra ser más precisa: el texto plano incluyendo las etiquetas de formato. Esto produce una curva de aprendizaje mas pronunciada, pues es necesario conocer algunas etiquetas, y lo aleja del uso generalizado pues precisa respetar una estructura y compilar el documento, pero el resultado (esta documentación esta escrita con este sistema) merece la pena, pues su aspecto es mucho más cuidado, y la comodidad a la hora de escribir documentos una vez dominados unos pocos conceptos fundamentales resulta mucho mayor que con el método tradicional. Aspectos engorrosos de los editores al uso, como numerar las secciones, paginar el documento (empezar los capítulos en una hoja), resultan triviales en \LaTeX pudiendo además ajustarlos hasta el más mínimo detalle, si el autor lo considera oportuno. \LaTeX se basa en \TeX, escrito por Donald E. Knuth (más conocido por los informáticos por sus estudios de Estructuras de Datos). Cuando quiso publicar su obra <<El arte de programar computadores>> recibió una prueba de imprenta de su libro y le pareció tan mala, que decidió solucionar el problema por si mismo: desarrollar un sistema de tipografia que le permitiese garantizar el aspecto de los documentos, independientemente del medio en que se mostrasen. En solo 4 meses escribió un borrador de \TeX. \TeX es un conjunto de etiquetas que se inserta en el texto, se compilan y producen una salida en un formato especial (dvi, DeVice Indenpendient, Independiente del dispositivo). Este fichero solo proporciona la maquetación, quedando como tarea al dispositivo mostrarlo como pueda. Es decir, el documento será el mismo en una impresora de agujas que una impresora laser, pero con la resolución que cada una pueda desarrollar. Actualmente hay programas para convertir el formato dvi a otros como Postcript o PDF. Otra ventaja de este sistema esta en el que el documento <<fuente>> antes de compilar es texto simple: ocupa poco espacio, los compresores lo reducen aún mas de tamaño, facilita su difusión por la red (a finales de los 70 y principios de los 80 este era un punto muy importante) y es un formato realmente multiplataforma. El problema de \TeX es su complejidad, que lo hace dificil de manejar sin un aprendizaje intenso. En 1982, Leslie Lamport desarrolló \LaTeX, un conjunto de comandos mas reducido, que enmascara la complejidad de \TeX, permitiendo al autor concentrarse en el contenido y estructura del documento, mas que en detalles tecnicos de tipografia. Esta <<simplificación>> popularizó esta forma de escribir textos, convocó mas usuarios, y como consecuencia empezaron a desarrollarse paquetes de comandos que extendian la funcionalidad de \LaTeX. Por ejemplo para la escritura de esta documentación se utiliza el paquete <<pst-uml>> \emph{pst-uml} es un paquete para \LaTeX escrito por Maurice Diamantini, que permite introducir diagramas UML. Consiste en un conjunto de etiquetas que enmascaran la escritura de esos diagramas de una forma un tanto más sencilla. Aunque su manejo es algo complicado, permiten escribir una documentación como esta en \LaTeX sin necesidad de recurrir a programas externos. La versión utilizada en el desarrollo de este proyecto incluye las mejoras realizadas por Diego Berrueta, ex-alumno de esta misma facultad, para incluir el simbolo UML de <<paquete>> y de <<instancias múltiples>>. \subsection{Herramientas hardware} Por motivos laborales y personales, el desarrollo del proyecto se realizó en 3 máquinas distintas: \begin{itemize} \item Algeol01 \begin{itemize} \item Pentium III 800Mhz \item 256Mb RAM \end{itemize} \item Folsom \begin{itemize} \item AMD K6-II 450Mhz \item 256Mb RAM \end{itemize} \item Walrus \begin{itemize} \item Pentium IV 1.8 GHz \item 256Mb RAM \end{itemize} \end{itemize} Index: motivacion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/motivacion.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** motivacion.tex 8 Jul 2003 11:02:41 -0000 1.1 --- motivacion.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 6,7 **** --- 6,17 ---- \section{Motivación} + El proyecto Prolix nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a traves de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a traves de internet. El auge de este medio que ya es de uso cotidiano, pone al alcanze del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no estan a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciendose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. + \newline + + El siguiente paso en la evolución de la enseñanza a distancia en este nuevo medio deberia ser el desarrollo de esas herramientas educativas, con el objetivo ideal de que el trabajo integro de la asignatura pudiese realizarse por la Web. La interactividad entonces seria total, y próxima a la de una asignatura presencial, pero con todas las ventajas de movilidad y disponibilidad que provee la informática. + \newline + + Prolix es una de estas herramientas: un intérprete de Prolog que funciona a traves de la Web. Enmarcandolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo dia a dia, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podria ser instantaneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. + \newline + + Para el alumno, con caracter individual, se pretende facilitar su introduccion en el mundo de la programación lógica, y el manejo de Prolog. Una de las funcionalidades mas importantes de este proyecto es la resolución gráfica del programa en Prolog. Resultara de gran ayuda para la compresión del proceso de resolución el poder observarlo generado por el interprete, en lugar del dibujo a mano, propenso a errores y mucho mas confuso cuando el programa crece. Index: objetivos.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/objetivos.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** objetivos.tex 8 Jul 2003 11:02:41 -0000 1.1 --- objetivos.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 4,10 **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \section{objetivos} ! ! Prolix se desarrolla con la intención de facilitar el aprendizaje de Prolog. La idea básica del proyecto consiste en desarrollar una herramienta con la que observar el proceso de resolución de un lenguaje de estas características. ! Aunque la primera aplicación práctica sera para los alumnos de informática. \ No newline at end of file --- 4,18 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \section{Objetivos} ! El desarrollo de este proyecto se marca como objetivo el obtener una herramienta informática que pueda utilizarse en un entorno educativo real para facilitar el aprendizaje de Prolog a traves de la Web. ! \newline ! Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Deberia presentar el arbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. ! \newline ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado util esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitira que con el paso del tiempo Prolix se actualice por programadores que lo hayan utilizado, o lo esten utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). ! \newline ! El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web estan en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. ! \newline ! No resultaria utópico pensar, que estando el proyecto disponible en la web, licenciado como software libre, personas vinculadas a la programación lógica tradujesen el programa a otros idiomas como aportación altruista al mismo. Este ejemplo puede extenderse así al propio código fuente del programa, que a pesar de todo el cuidado puesto en su escritura y todas las pruebas realizadas, no podemos garantizar al 100% ni que este libre de bugs (errores) ni que sea el mejor código posible. ! \newline ! Otra de las trabas mas habituales para las aplicaciones es la diferencia de plataformas y sistemas operativos. Manteniendo la idea anterior de llegar al mayor numero de usuarios posibles, sea cual sea su entorno de trabajo, se hace necesario desarrollar el proyecto en un entorno multiplataforma, y si fuese posible utilizando estándares abiertos. Ambos objetivos se alcanzan con el uso del entorno Java, y de estándares del consorcio w3c como SVG y XML. \ No newline at end of file Index: softexistente.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/softexistente.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** softexistente.tex 8 Jul 2003 11:02:41 -0000 1.1 --- softexistente.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 2,4 **** % Introduccion::software existente % ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file --- 2,8 ---- % Introduccion::software existente % ! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! ! \section{Software existente} ! ! Actualmente el compilador/intérprete de Prolog con más repercusión es <<swi-prorlog>>. Originalmente no era software libre pero desde el 4 de Febrero del 2002 se distribuye bajo la licencia LGPL (una variante muy parecia a la GPL), en un intento de dinamizar su desarrollo. A dia de hoy siguen saliendo nuevas versiones, incluye interfaces para C y C++, y funciona en múltiples plataformas incluyendo las más populares (MS-Windows, Unix/linux, MacOS). \ No newline at end of file Index: solo_intro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/solo_intro.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** solo_intro.tex 8 Jul 2003 11:02:41 -0000 1.1 --- solo_intro.tex 18 Aug 2003 18:44:55 -0000 1.2 *************** *** 9,14 **** \begin{document} \chapter{Introduccion} ! %\input{introduccion/motivacion.tex} ! %\input{introduccion/objetivos.tex} %\input{introduccion/softexistente.tex} \end{document} --- 9,15 ---- \begin{document} \chapter{Introduccion} ! \input{motivacion.tex} ! \input{objetivos.tex} %\input{introduccion/softexistente.tex} + \input{herramientas.tex} \end{document} |