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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top