En Abstract Syntax Tree Implementation Idioms, Joel Jones da su visión de cómo debe modelarse un AST. El documento es muy corto y no entra en muchos detalles (principalmente no entra en detalles de relación gramática-modelo: uso composición, de herencia, etc), pero es un buen indicio de que hay algunas normas básicas.
Zephyr ASDL da también algunas de estas reglas. Aunque limitado (especialmente en el uso de la herencia, teniendo problemas para jerarquías con más de un nivel), el lenguaje permite definir la sintaxis abstracta de un lenguaje desde un punto de vista de más alto nivel que una gramática de contexto libre.
jueves, 22 de diciembre de 2005
lunes, 21 de noviembre de 2005
JavaCC Eclipse Plug-in
JavaCC 4.0 plugin. Este plugin para Eclipse soporta la versión 4.0 de JavaCC. Entre sus características: navegación (ctrl+clic), compilación y generación con javacc o jjdoc. No incluye el javacc.
viernes, 18 de noviembre de 2005
EclipseZone - CDT = Compiled Language Tooling? Hopefully not.
miércoles, 26 de octubre de 2005
Ingenieria del Software
Habitualmente las asignaturas de Ingeniería del Software son mas teóricas que practicas, pero algunos se las ingenian para que los alumnos aprendan realmente de que va el tema.
Genesys Solutions es una empresa de desarrollo software dirigida por alumnos de cuarto curso de la universidad de Sheffield. Como práctica de la asignatura, deben formar un grupo de trabajo en esta empresa y colaborar en el desarrollo de software. Utilizan metodologías ágiles y han desarrollado una serie de plugins y tutoriales para Eclipse.
Es especialmente interesante el plugin ADEPT, orientado hacia la integración de eXtreme Programming de forma más directa con el IDE utilizado. ADEPT incluye un editor para story cards, una vista para comprobar diferentes métricas del software, una vista de gestión del proyecto, una vista de gestión de las pruebas, una perspectiva para documentación que permite generar informes a partir de los datos extraídos de las otras vistas y una perspectiva desde la cual se puede monitorizar la calidad del software comprobando la consistencia entre los diferentes aspectos del proyecto.
Genesys Solutions es una empresa de desarrollo software dirigida por alumnos de cuarto curso de la universidad de Sheffield. Como práctica de la asignatura, deben formar un grupo de trabajo en esta empresa y colaborar en el desarrollo de software. Utilizan metodologías ágiles y han desarrollado una serie de plugins y tutoriales para Eclipse.
Es especialmente interesante el plugin ADEPT, orientado hacia la integración de eXtreme Programming de forma más directa con el IDE utilizado. ADEPT incluye un editor para story cards, una vista para comprobar diferentes métricas del software, una vista de gestión del proyecto, una vista de gestión de las pruebas, una perspectiva para documentación que permite generar informes a partir de los datos extraídos de las otras vistas y una perspectiva desde la cual se puede monitorizar la calidad del software comprobando la consistencia entre los diferentes aspectos del proyecto.
martes, 2 de agosto de 2005
DSM and Agile Development Workshop Results
DSM and Agile Development Workshop Results. Dentro de XP2005, sexta conferencia sobre XP, se celebró este workshop donde se habló de las ventajas de utilizar DSLs, de cara al desarrollo ágil principalmente, se presentaron tres herramientas de especificación de DSLs visuales y textuales (MetaEdit+, DSL Tools y Xactium), y se llegó a conclusiones interesantes. Dentro de estas conclusiones caben destacar: cómo desarrollar un DSL, aplicabilidad, gestión de la complejidad en el diseño del lenguaje, y posibles soluciones a estos problemas.
jueves, 30 de junio de 2005
Domain-Specific Languages: An Annotated Bibliography1
Domain-Specific Languages: An Annotated Bibliography1 y Domain-Specific Languages son dos páginas sobre DSLs a tener en cuenta. La primera contiene una bibliografía extensísima.
Language Workbenches: The Killer-App for Domain Specific Languages?
Language Workbenches: The Killer-App for Domain Specific Languages?. Se trata de un artículo de Martin Fowler sobre lenguajes específicos del dominio y lo que él denomina "Language Oriented Programming", comentando diferentes aproximaciones a este tipo de desarrollo: Intentional Software, Meta-Programming System, Software Factories y Model Driven Architectures.
Algunos comentarios sobre el artículo de Martin Fowler se recogen en este artículo de Ehud Lamm. Entre los comentarios que se hacen sobre el tema en este último artículo hay una referencia a la siguiente entrada de The Pragmatic Programmers, titulada Never Build an Application. Se pone en duda mucho la mantenibilidad de las aplicaciones creadas en base a DSLs construidos con estos Language Workbenches (LW). De hecho Fowler comenta en su artículo que sería deseable que estos entornos no utilizaran un método propio de especificación de lenguajes, sino que compartieran uno propio, de forma que lo desarrollado en un LW se pueda utilizar en otro. En este sentido, MetaCET, al tratar el modelo del lenguaje como un modelo OO más, permite compartir este modelo entre diferentes aplicaciones.
Thomas Mäder, en su comentario al artículo de Ehud indica que lo que los LW pretenden no es sólo un editor con resaltado de sintaxis, sino algo más allá: depuración a nivel del DSL, etc.
Serge Bureau menciona el problema de crear múltiples DSLs: nadie será capaz de entender los programas escritos por otros, porque estarán llenos de dialectos. Más aún, las empresas tendrán que enseñar a los programadores que se incorporen una multitud de pequeños lenguajes. Por otro lado: ¿no deben estos lenguajes estar más cercanos al dominio del problema? Siendo así, ¿por qué habrían de ser más complicados? Deberían incluso ser autoexplicativos. Esto mismo lo dice Juha-Pekka aquí.
Patrick Gotthardt menciona el problema de tener muchas sintaxis diferentes para lo mismo (y pone el ejemplo de los miles de ficheros de configuración que hay en linux, cada uno con su sintaxis particular). Dos cosas: a) modela el lenguaje sin preocuparte de la sintaxis, b) pon una sintaxis que sea lo más conocida posible por los que van a usar el lenguaje (y como ejemplo lo de los patrones: !! o <%).
Algunos comentarios sobre el artículo de Martin Fowler se recogen en este artículo de Ehud Lamm. Entre los comentarios que se hacen sobre el tema en este último artículo hay una referencia a la siguiente entrada de The Pragmatic Programmers, titulada Never Build an Application. Se pone en duda mucho la mantenibilidad de las aplicaciones creadas en base a DSLs construidos con estos Language Workbenches (LW). De hecho Fowler comenta en su artículo que sería deseable que estos entornos no utilizaran un método propio de especificación de lenguajes, sino que compartieran uno propio, de forma que lo desarrollado en un LW se pueda utilizar en otro. En este sentido, MetaCET, al tratar el modelo del lenguaje como un modelo OO más, permite compartir este modelo entre diferentes aplicaciones.
Thomas Mäder, en su comentario al artículo de Ehud indica que lo que los LW pretenden no es sólo un editor con resaltado de sintaxis, sino algo más allá: depuración a nivel del DSL, etc.
Serge Bureau menciona el problema de crear múltiples DSLs: nadie será capaz de entender los programas escritos por otros, porque estarán llenos de dialectos. Más aún, las empresas tendrán que enseñar a los programadores que se incorporen una multitud de pequeños lenguajes. Por otro lado: ¿no deben estos lenguajes estar más cercanos al dominio del problema? Siendo así, ¿por qué habrían de ser más complicados? Deberían incluso ser autoexplicativos. Esto mismo lo dice Juha-Pekka aquí.
Patrick Gotthardt menciona el problema de tener muchas sintaxis diferentes para lo mismo (y pone el ejemplo de los miles de ficheros de configuración que hay en linux, cada uno con su sintaxis particular). Dos cosas: a) modela el lenguaje sin preocuparte de la sintaxis, b) pon una sintaxis que sea lo más conocida posible por los que van a usar el lenguaje (y como ejemplo lo de los patrones: !! o <%).
viernes, 3 de junio de 2005
args4j: Home
args4j: Home
Parsea la línea de comandos y además permite asociar argumentos de la entrada a atributos mediante anotaciones.
Parsea la línea de comandos y además permite asociar argumentos de la entrada a atributos mediante anotaciones.
domingo, 8 de mayo de 2005
A History of the GUI
A History of the GUI : Page 1. Este artículo es un repaso histórico a la evolución de las interfaces gráficas de usuario. Comenta lo que fue aportando cada una de ellas.
viernes, 6 de mayo de 2005
Jahia CMS and Portal Server
Jahia CMS and Portal Server. Otro CMS. Algunas características interesantes: "Full Multilanguage and I18N support; Staging environement (Draft & Preview mode); Content Workflow; Content Versioning; Document Management (WebDAV Support); Built-in Portlet-based interface; Built-in support for standardized java web applications and web services (default servlets supported as portlets); Full web-based administration; Integrated with the Apache Lucene Search Engine; LDAP support; JSP and JSTL support for easy templates development; Integrated HTML reverse cache proxy; Load balancing support; dynamic XML export module..." Lo que tiene más raro es la licencia: Collaborative source license.
viernes, 29 de abril de 2005
Ivy - Gestión de dependencias de proyectos opensource
Jayasoft Community Site - Ivy. Se distribuye bajo licencia BSD y permite gestionar las dependencias de nuestros proyectos con respecto a otros proyectos opensource.
martes, 19 de abril de 2005
Argos: A Search Engine Interface
Argos: A Search Engine Interface. Pretende ser una interfaz para realizar búsquedas en internet mediante diferentes motores, incluso de forma simultanea.
Eclipse Language Development Toolkit
Eclipse Language Development Toolkit es un proyecto propuesto por BEA que aún está en fase de propuesta. El objetivo: crear una infraestructura común para todos los lenguajes.
sábado, 16 de abril de 2005
SALSA: proyecto de Sun para análisis del software
"SALSA is not a hardware "appliance"; rather, it is a software tool that will help Sun PS architects extract, analyze and refactor, or edit, Java code designs and architectures using two-dimensional and three-dimensional visualizations." El artículo completo está aquí.
sábado, 12 de marzo de 2005
Backwards debugger para Eclipse
http://www.virtutech.com/pdf/wp_hindsight_20050304.pdf es un white paper de la compañía Virtutech mostrando un depurador hacia atrás para c basado en Eclipse. La información está sacada de este post en eclipsepowered.org.
miércoles, 23 de febrero de 2005
Análisis estructural de programas Java
IBM ha desarrollado SA4J que es una herramienta que permite analizar estructuralmente código java, detectar anti-patrones estructurales, visualizar las dependencias entre clases y análisis "y si..." (que permite comprobar lo que ocurriría si se hace un determinado cambio en el resto de la aplicación sin hacerlo realmente). Habría que echarle un vistazo para ver hasta dónde llegan...
lunes, 7 de febrero de 2005
Un solo jar
One-jar proporciona una solución al problema de tener que distribuir las aplicaciones con otros jar de los que dependen. El proceso es bastante sencillo y permite tener unos jar dentro de otros y por tanto mantener los manifest de cada uno. Implementan un classloader que busca dentro del jar por si hubiera otros jar donde buscar la clase.
jueves, 3 de febrero de 2005
Un JScrollPane con una vista en miniatura
En este artículo se presenta el código necesario para incluir una vista en miniatura de un JScrollPane en el propio panel de forma que no se pierda el contexto. Hay que registrarse para obtenerlo, pero la idea es interesante porque la propia miniatura puede usarse para hacer scroll, simplemente moviendo el ratón sobre ella.
domingo, 30 de enero de 2005
JasperReports
JasperReports es un proyecto open source en Java para generar informes a partir de información de una base de datos. El diseño del informe se especifica en un fichero xml y sus contenidos pueden extraerse de una base de datos, especificándose mediante consultas. Genera html, pdf, así como formatos listos para imprimir.
Además dispone de varias utilidades orientadas a facilitar el trabajo de definición de estos informes: JasperAssistant es un diseñador de informes desarrollado para Eclipse, pero hay otros como iReport, Designer for Jasper, JasperPal que es un panel que puede ser incluido en otras aplicaciones java. Hay también visores para visualizar los informes una vez generados con el contenido, entre ellos SWTJasperViewer. En la página de JasperReports hay referencias a otros proyectos relacionados.
Además dispone de varias utilidades orientadas a facilitar el trabajo de definición de estos informes: JasperAssistant es un diseñador de informes desarrollado para Eclipse, pero hay otros como iReport, Designer for Jasper, JasperPal que es un panel que puede ser incluido en otras aplicaciones java. Hay también visores para visualizar los informes una vez generados con el contenido, entre ellos SWTJasperViewer. En la página de JasperReports hay referencias a otros proyectos relacionados.
sábado, 22 de enero de 2005
Subversion
Subversion es un sistema de control de versiones que según sus creadores pretende ser el reemplazo del cvs en el mundo del opensource. Entre sus ventajas señalan la capacidad de versionar directorios, cambios de nombres en ficheros y directorios y metainformación asociada a ficheros (como permisos) además de poseer un diff especial para ficheros binarios y ser capaz de integrarse de forma sencilla con Apache. Han tratado de mantener el mayor número de opciones del cvs posibles.
jueves, 13 de enero de 2005
Un artículo interesante sobre el "final" de Java
El artículo se titula "The Final Word on the final Keyword" y está escrito por Renaud Waldura.
Never ending user requirements changes
Hay un foro de discusión sobre requisitos que nunca dejan de cambiar y cómo solventar el problema. Joy Mike señala el problema que esto representa y deja abierta la pregunta de si alguien ha sido capaz de resolver este problema con XP. Lo señalo porque en total hay 57 comentarios sobre el tema.
Suscribirse a:
Comentarios (Atom)