Quick, what's MMXVII minus MCMLXXXVIII? (It's XXIX.) The right notation can make the difference between an intractable challenge and a simple solution. Designing a new notation to reflect the fundamental structure of a problem is one of the most powerful, and underused, tools in our technical toolkits.
With the recent (on a historical timescale) advent of the digital computer, humankind can now make these new and useful notations executable. This talk explores the power of designing and implementing domain-specific languages (DSLs) as components of technical software systems. DSLs excel in helping us build open-ended, configurable, explorable systems by allowing users to compose tailored vocabularies into larger structures.
As a case study, we'll see an expression language designed to help a client turn their Monte Carlo portfolio simulation from a rigid tool for reporting specific hard-coded metrics to a flexible system for answering open-ended questions: "what's the probability of achieving our cashflow goals over the next five years?"
We'll also discuss the whys and why-nots of choosing to implement DSLs, some guidance on design and implementation strategy, and some fundamental ideas and off-the-shelf tools which can make implementation simpler.
(c) 2017 dwt | terminus data science, LLC
Presentation material is licensed under the Creative Commons CC-BY-NC 4.0 license (free for non-commercial use with attribution); all code samples are licensed under the MIT license (free for commercial or non-commercial use).