Hardware-software codesign language, miniKanren implementation for OCaml, LAmbda-ALgol, educational language Born in Krasnoyarsk in 1970. In 1980, Dmitry moved to Leningrad (now St Petersburg). In 1987, he joined the Saint Petersburg State University, where studied by turns at the Mathematics & Mechanics and Biological Faculties, until eventually graduating from the Math & Mech in 1994.
In 1994-2012, he was a software developer, primarily focused on program analysis and transformations. Some notable projects include RescueWare (legacy analysis and re-engineering tool, Relativity Technologies), IntelliJ IDEA (integrated development environment, JetBrains), and HaSCoL (hardware description language, startup project).
Dmitry teaches at the SPbU Software Engineering Chair since its inception in 1999, where he currently holds an associate professor position. In 2004, he defended his Ph.D. thesis "Macro-architecture Description-based Prototyping of Hardware-Software Systems" under the supervision of Prof. Andrei Terekhov. Nowadays Dmitry works as a researcher at JetBrains Research.
AUTHORS: Daniil Berezun, Dmitry Boulytchev
We report on a compiler construction course that is based on the idea of implementing a small self-contained compiler for a small model language from scratch, not using other compiler construction frameworks. The course is built around an evolving family of languages with increasing expressiveness and complexity, which finally is crowned by a simple language with first-class functions, S-expressions, pattern matching, and garbage collection. The codegeneration technique is based on the idea of symbolic interpreters, which allows to implement a robust albeit not very efficient native code generator.
OBJECTIVE: Sharing the experience in developing languages, compilers and introductory PL courses; advertising the approach; finding feedback and collaborators
AUDIENCE: Tutors and researchers in the PL domainSlides