Laurence Tratt is a Research Fellow in the Department of Computer Science at King's College London, where he is co-leader of the Software and Systems Modelling Team. He is also the chief designer and maintainer of the Converge programming language, and has been a major contributor to several international standards related to modelling. He is a member of the IEEE Software Advisory Board. See more at tratt.net
|
Presentation: "DSL implementation at compile-time via syntax extension"
Track:
Domain Specific Languages, and Beyond
Time: Tuesday 13:00 - 14:00 Location: SAS Dania
Abstract:
While the concept of domain specific languages continues to gain in popularity and importance, the means we have at our disposal to create them often don't reflect the way we wish to use them. DSLs tend to start small, yet the tools we use to implement them often lead to surprisingly large and cumbersome implementations. DSLs tend to evolve in unforeseen ways, yet our implementations often have a "hackish" feel that makes change difficult. In this talk I will introduce a different technology for tackling the problem of DSL implementation. The Converge programming language which I have developed adds a powerful macro system to a modern dynamically typed language, and then adds a simple facility which allows the syntax of the language to be arbitrarily extended in a simple fashion. DSLs can thus be easily embedded into source code, and transparently compiled at compile-time along with the rest of the program. Converge offers a number of subtle features which make implementing rich, powerful DSLs easy for the DSL implementer, but which also make life pleasant for the DSLs end users. In this talk I will introduce Converge itself, show how different types of DSLs can be developed in it, and also offer some more general insights that I and others have gained about DSL development and use. Although Converge is a relatively early stage technology, it has already seen use in industry. More information and early implementations can be found at convergepl.org |
|||