WG211/M17Zaytsev
Succeeding at Impossible Industrial Projects with Generative Technologies
- Vadim Zaytsev
In practice, it is not trivial to motivate the use of program generation techniques in the context of marginal gains and slight improvements the impact of which might become completely invisible on the grand scheme of things. Raincode is a company with more than two decades of experience in the projects of the opposite kind: the ones executed in teams of one or two, rarely three people, over the course of months, and in some cases even days. This is achieved by making heavy use of technologies such as domain modelling, domain-specific languages, model-driven engineering, metaprogramming, modularisation, parser generation and program generation.
In this talk, one of such projects will be explored in detail: the Raincode Assembler Compiler, which successfully got through the first PoC last year and was also presented at SLE 2016 at SPLASH in Amsterdam. The final deployable artefact is compiled from 3 MLOC C code, yet it was a result of approximately one year of part-time attention of three developers, responsible respectively for the instruction set emulation, the modular compiler framework, and IDE integration. The infrastructure of the product is also not prototypical, it is robust and mature, and includes many advanced features such as hot swapping of instruction sets. These millions of lines of code were generated from a program in a DSL for compiler writing, and the runtime of the programs compiled by it was also generated from the models extracted from the language specification and curated by verification and testing. Projects like the Raincode Assembler Compiler can only succeed thanks to program generation, and are simply impossible with less than 100% automation. Several examples of projects of similar nature will also be given.
Link to the product: http://www.raincode.com/mainframe-rehosting/asm370-compiler/