DSL es básicamente crear su propia sublengua pequeña para resolver un problema de dominio específico. Esto se resuelve usando el método de encadenamiento. Los idiomas donde los puntos y los paréntesis son opcionales ayudan a que estas expresiones parezcan más naturales. También puede ser similar a un patrón de generador. DSL no son idiomas en sí mismos, sino más bien un patrón que aplica a su API para que las llamadas sean más fáciles de entender.
Un ejemplo es Guice, Guice Users Guide http://docs.google.com/View?docid=dd2fhx4z_5df5hw8 tiene alguna descripción más abajo de cómo interfaces están vinculadas a las implementaciones, y en qué contextos.
Otro ejemplo común es para los lenguajes de consulta. Por ejemplo:
NewsDAO.writtenBy("someUser").before("someDate").updateStatus("Deleted")
En la implementación, imagina que cada método devuelve un nuevo objeto Query o simplemente esta actualización internamente. En cualquier punto, puede finalizar la cadena utilizando, por ejemplo, rows() para obtener todas las filas, o updateSomeField como he hecho anteriormente aquí. Ambos devolverán un objeto resultante.
lo recomiendo echar un vistazo al ejemplo Guice anteriormente, así como cada llamada no devuelve un nuevo tipo con nuevas opciones en ellos. Un buen IDE le permitirá completar, dejando en claro qué opciones tiene en cada punto.
Editar: parece que muchos consideran como DSL, nuevos lenguajes de propósito sencillas, individuales con sus propios programas de análisis. Siempre asocie DSL como el método de encadenamiento como una convención para expresar operaciones.
Pero lo que realmente haya personas sin conocimientos técnicos haciendo eso? – BobbyShaftoe
probablemente sea mejor describirlas como técnicas diferentes; son expertos en personalización, no codificadores de Java. –
espero que sepas que tu DSL es python. –