One trend I'm seeing in PL research is “programs as patchwork”, where different aspects of one program are written in different DSLs. Halide The best example of this kind of work is Halide, a language for writing fast matrix operations (for graphical filters). Halide is originally a product of academia but is now widely used in industry. For example, a 3×3 blur in Halide would be described by first defining the computation: blur_x(x, y) = (input(x-1, y) + input(x, y) + input(x+1, y))/3; ...