¿Es Antlr un generador de DSL y una alternativa a la programación intencional?
-
20-08-2019 - |
Pregunta
Me sorprende la ambición y la creatividad de los esfuerzos de Charles Simonyi para establecer el campo de la Programación Intencional, primero en Microsoft y luego con su propia compañía.
¿Qué es exactamente la programación intencional
http://en.wikipedia.org/wiki/Intentional_programming
En este enfoque de software, un programador primero construye una caja de herramientas específico para un dominio problemático dado (como el seguro de vida). Dominio expertos, ayudados por el programador, luego Describir la intención del programa. comportamiento en lo que ves es lo que ves Obtener (WYSIWYG) de manera similar. Un sistema automatizado utiliza el programa descripción y la caja de herramientas para generar el programa final Sucesivo los cambios solo se realizan en WYSIWYG nivel.
Parece ser un enfoque tan útil y práctico para la programación, que podría eludir muchos de los problemas con los enfoques actuales para el desarrollo de software.
Esencialmente parece facilitar la creación de lenguajes específicos de dominio por parte de no programadores (analistas de negocios / sistemas) pero en una etapa mucho más cercana a la implementación de la vida real de lo que UML podría proporcionar. Él dice que eventualmente se completará, pero que todavía no está allí (casi 15 años después).
Las DSL abarcan desde motores de reglas simples de 5 líneas hasta aplicaciones complejas como Ruby on Rails. Así que imagino que la demora en lanzar su producto tiene que ver con el hecho de que está tratando de simplificar un nivel mucho más alto de abstracción porque tiene que permitir esencialmente la encapsulación de todos los lenguajes de dominio a la vez.
Entonces, mi pregunta es
(a) si Antlr podría ser una alternativa a la Programación Intencional, aunque ¿quizás una alternativa menos fácil de usar que requiera la intervención de programadores en lugar de permitir que los analistas de negocios generen el DSL? ¿Podría usar Antlr para generar un DSL como Ruby on Rails (suponiendo que admitiera Ruby como salida)? - que creo que no) ¿Qué no puede hacer? Además, no entiendo por qué se llama & Quot; analizador de idiomas & Quot; en lugar de un " generador de lenguaje " - ya que el último describe para qué se usa mientras que el primero describe cómo logra su resultado final.
y
(b) si Antlr es diferente de la Programación intencional, ¿hay algo similar a la Programación intencional?
Solución
No soy un experto en esto, así que trátalo con una gran pizca de sal. Sin embargo ...
ANTLR en sí mismo no es un generador de DSL, aunque puede usarse para crear código que interprete DSL. Es un generador de analizador, pero el generador de DSL debería crear de qué ANTLR genera un analizador.
Otros consejos
En respuesta a la parte b), tres sistemas que funcionan en un espacio similar son:
Cada uno de estos productos tiene diferentes fortalezas y debilidades, pero todos caen en la categoría de Language Workbenches . Intentional Software's Intentional Workbench es posiblemente el producto más ambicioso en esta categoría hasta la fecha, pero tampoco está generalmente disponible.
MPS y xText son productos gratuitos de código abierto. MetaCase es el más maduro y es un producto comercial. Todos ellos tienen una curva de aprendizaje empinada.
ANTLR es solo un generador de analizador. En cualquier DSL no trivial, escribir el analizador es menos del 50% del esfuerzo invertido en implementar el DSL. El evaluador / motor de reglas / generador de código / horario o cualquier otra cosa que haga su DSL, probablemente requiera más trabajo y no se pueda generar como un analizador.