DSL DevCon 2009 VideosThe goal of the DSL Developer's Conference is to cut away all the unessential conference baggage and concentrate on why we're spending time at a conference in the first place -- the talks by industry experts and experienced practitioners. These videos were recorded at the 2009 DSL DevCon. |
Introducing Domain-Specific Languages As Martin begins to see the light at the end of the tunnel on drafting his DSL book, he's been prone to give more talks introducing DSLs. While he wouldn't consider it appropriate to give such a talk at this august gathering, he did think it would be interesting to do a meta-talk version of his introductory talk. For this he'll walk through the same material, but instead talk about why he thinks the approach he takes to an introduction is a useful way to guide people in their approach to DSLs. | We will do a deep dive into the "M" parser generator and may even have some new features to talk about as well. | Equity and Equity Options exchanges (NYSE, NASDAQ, CBOE, etc.) support a version of the FIX messaging standard for sending market quotes and orders. While the mechanics of creating, sending, and responding to FIX based requests and tracking their lifecycle are fairly straightforward, it tends to be fairly cumbersome to create test scenarios for simulating market behavior for testing trading strategies and systems against as the knowledge required often rests with traders and financial engineers, not software developers. This talk would present a DSL using the SQL Server Modeling CTP (formerly"Oslo") toolset that is capable of expressing order generation and responses from a range of market behaviors in terms of FIX messages in a dialect suitable for use by traders and financial engineers. |
DSLs in the Horn Package Manager One thing sadly lacking in the world of .NET is a package manager that can take the pain out of both maintaining and installing .NET packages. Notable examples of existing package managers on other platforms include Maven and App-Get. The horn open source project has been created with the goal of creating such a package manager. Package metaphors are described in separate DSL files that contain build metadata and dependency references. The DSL files live in a directory tree that models the dependency structure. BOO was chosen for the internal DSL, firstly because it is a CLR implementation and secondly for it's built in DSL support and lastly because of Iron Ruby's infancy. | How to implement DSLs with Groovy Groovy's a JVM-based dynamic language, with a Java-like syntax that was made pretty flexible for DSLs. | Textual DSLs and Code Generation with Eclipse Tools As part of the Eclipse Modeling Project, a number of tools for defining DSLs and generating code have been developed over the last couple of years. In this talk, Markus will show a subset of these tools that have proven particularly useful. These include Xtext for definition of textual DSLs and editors, Check for defining constraints, as well as Xtend and Xpand for transforming models and generating code. Markus will motivate the approach by looking at how textual languages are used for software architecture modeling. |
JavaScript DSLs for the Client Side This presentation will feature introductory material on JavaScript Metaprogramming, how these concepts map to the popular toolkits and frameworks (jQuery, Dojo, etc) and future directions for this work. | Functional vs. Dynamic DSLs: The Smackdown With the growing adoption of DSLs and DSL terminology into the mainstream has come a controversy over "external" (parser/AST/code-gen based) vs "internal" (hosted inside another programming language) DSLs. In this presentation, we take the approach that the complexity and power of an external DSL is hardly necessary for most DSL tasks, and that internal DSLs are the way to go. We discuss the difference between "compositional" and "computational" DSLs, a new way of thinking about constructing a DSL, and do so in the terms of two languages popularly used to host internal DSLs: Haskell (expressed mostly through F# code, owing to its functional nature) and Ruby (expressed mostly through Groovy code, owing to its dynamic nature). | Embedding DSLs in Newspeak: EBNF, Hopscotch and NewShell Newspeak is a new programming language particularly suited to supporting DSLs, both internal and external. Newspeak's syntax is a natural fit for internal DSLs, which can leverage the language's powerful modularity and reflection. An important internal DSL is a BNF/PEG variant that is actually a powerful parser combinator library, that helps build external DSLs. |
A DSL for Cool Effects in Adobe Pixel Bender Pixel Bender is a domain specific language for image processing algorithms (cool effects). The most important part of a Pixel Bender program is a function which given a location returns the color and transparency of the pixel at that location. This is a textbook parallel problem and therefore lends itself to vastly increased speedups using the wide parallelism of modern GPU hardware and multi-core CPUs. By creating a DSL, associated compilers, and runtime framework, it is possible to easily add effects to products such as Adobe Photoshop and Adobe After Effects. | Language Oriented Programming in F# Roger will present one approach to Language Oriented Programming in F#, a technique in which software designers borrow techniques from language design to organize software architectures. In this approach, simple embedded DSLs called combinator libraries are explored. Roger will show two combinator libraries, one for managing a build process, the other for creating complex 3D visualizations. Attendees will see how the combinator library approach can be applied to these two very different problems. Essentially, a combinator library encourages the designer to break down a problem into elementary pieces and provide ways to recursively compose and reuse these pieces into an abstract description of a problem. Attendees will see a real world example of functional software design, see the use of DSLs and functional design to make the code more readable and provide modularity, see a demonstration of concise techniques for dealing with metadata in one tenth of the code and see how this obviates whole classes of runtime errors at compile time. | Intentional Software is pioneering a radical new software approach that separates business domain knowledge from software engineering knowledge. This approach accelerates software creation and maintenance as domain experts themselves contribute domain knowledge in their favorite domain language and notation. Business domain knowledge is weaved into running software through domain transformations. |