Language-Oriented Programming with Racket

by Matthias Felleisen

We're constantly hearing about verification, type classes and similar topics on the programming language industry. According to Matthias, we should be talking more about Language and Abstraction Design.

For him frameworks are languages because there's an abstraction layer which the framework provides. While this can be very positive, it can also be very limiting in that many times the framework does not provide the flexibility to be extended to solve other problems with a different language and therefore obscures the intention of a certain program. The way I understand it is, if you only have a hammer, you see every problem as a nail. If you instead have a tool-builder you can build hammers, saws and other tools to use in the right moment.

The whole concept sounds very interesting and I'd love to try it out at some point, or at least work more in building DSLs to solve problems with my existing languages, which I know could not be defined as LOP but I think could already help solve some of the problems.

Language-Oriented Programming

Only the first two are currently supported in Racket

  • Program DSLs quickly
  • Program in them at the same time/IDE
  • Connect this programs smoothly
  • Make this connections safe and secure

Creating a New Language

New Language = Base Language - Existing Constructs + New Constructs + Reinterpreted Constructs