Domain-specific languages (DSLs) are focused tools that solve narrow problems exceptionally well. We study DSLs because they are the gateway to language design — and ultimately to creating our own new programming languages.
| # | DSL | Topic | Description |
|---|---|---|---|
| PHASE 1: LANGUAGE FOUNDATIONS | |||
| 01 | Overview & Scope | What DSLs are, their taxonomy, and why they succeed or fail. | |
| 02 | Design Considerations | Why and when to invent a language, what is reusable, disruption vs. compliance, and the AI landscape. | |
| 03 | Syntax & Notation | Tokens, notation conventions, and the surface form of a language. | |
| 04 | Grammar & Rules | EBNF, productions, ambiguity, precedence, and grammar classes. | |
| 05 | Parsing & Trees | From tokens to concrete and abstract syntax trees; parse errors. | |
| 06 | Semantics & Scoping | Bindings, environments, lexical and dynamic scope, and evaluation rules. | |
| 07 | Types & Values | Kinds of values, typing modes, and what type checking buys. | |
| 08 | Errors & Diagnostics | Error kinds, diagnostic design, error models, and the REPL. | |
| PHASE 2: IMPLEMENTATION | |||
| 01 | Compiler Design | Front-end, middle-end, back-end, and code generation pipelines. | |
| 02 | Semantic Analysis | Symbol tables, name resolution, type checking, and desugaring. | |
| 03 | Intermediate Representations | Why and how to lower: trees, three-address code, and SSA forms. | |
| 04 | Crafting Compilers | Scanner, lexer, parser, and code generation foundations for language tooling. | |
| 05 | Interpreters | Tree-walking execution, evaluation, and runtime environments. | |
| 06 | Bytecode & Codegen | Instruction sets, stack machines, emitters, and verification. | |
| 07 | Virtual Machines & Runtimes | Dispatch, call frames, runtime services, and a JIT preview. | |
| 08 | Code Generation | Native back-ends: instruction selection, registers, and calling conventions. | |
| 09 | Code Optimization | Safe transformations, constant folding, dataflow, and loops. | |
| PHASE 3: DSL IMPLEMENTATION LANGUAGES | |||
| 01 | ANTLR | A grammar DSL (.g4) that generates lexers, parsers, and parse-tree walkers in many target languages. | |
| 02 | Racket | The programmable programming language: #lang modules, macros, and language-oriented design. | |
| 03 | OCaml | Type-safe compiler implementation: algebraic data types, exhaustive matching, ocamllex and Menhir. | |
| PHASE 4: EXECUTION MODELS | |||
| 01 | Forth | Stack-based language for embedded and real-time systems; tiny, interactive, and standardized. | |
| 02 | FASM | Fast single-pass flat assembler with a built-in macro language for low-level toolchains. | |
| 03 | Verilog | Hardware description language for FPGAs and ASICs; simulate before you build. | |
| 04 | LLVM IR | Language-independent SSA intermediate representation at the heart of the LLVM toolchain. | |
| PHASE 5: AI DOMAIN-SPECIFIC LANGUAGES | |||
| 01 | Triton | Python-based DSL and compiler for writing fast custom GPU kernels. | |
| 02 | Mojo | Superset of Python for AI infrastructure: ownership, SIMD, and native compilation. | |
| 03 | Julia | High-performance technical computing with multiple dispatch and a JIT compiler. | |
| PHASE 6: STATISTICS & SCIENTIFIC LANGUAGES | |||
| 01 | R | The standard domain language for statistics, data frames, and reproducible analysis. | |
| 02 | MATLAB & Octave | Matrix-first numerical computing: the engineering standard plus its free twin. | |
| 03 | Wolfram Language | Symbolic and knowledge computation with thousands of built-in functions. | |
| 04 | Stan | Probabilistic programming for Bayesian inference with Hamiltonian Monte Carlo. | |
| PHASE 7: LOGIC LANGUAGES | |||
| 01 | Prolog | Classic logic programming: facts, rules, and automatic backtracking search. | |
| 02 | Datalog | Declarative recursive query language for deductive databases and program analysis. | |
| 03 | Clingo (ASP) | Answer set programming: model combinatorial problems, let the solver search. | |
| 04 | MiniZinc | High-level constraint modeling that compiles to CP, SAT, and MIP solvers. | |
| 05 | Lisp | The classic symbolic programming family: code as data, REPL, and powerful macros. | |
| 06 | AutoLISP | The Lisp dialect built into AutoCAD for automated drawing and CAD customization. | |
| 07 | Clojure | A modern Lisp on the JVM: immutable data, functional style, and concurrency. | |
| PHASE 8: PRACTICE & REFERENCE | |||
| 01 | References & Downloads | Docs, downloads, playgrounds, courses, and samples for all 21 languages. | |
| 02 | Languages in Design & Research | Open-source language and compiler projects to study, from didactic interpreters to experimental (Carbon, Odin) and enterprise compilers. | |
Each topic page starts as a lightweight placeholder so the roadmap can be expanded later with examples, diagrams, and implementation notes.
For the full categorized catalog — official documentation, downloads, browser playgrounds, free courses, and sample repositories for all 21 languages — see the References & Downloads page.