I have a soft spot for esoteric programming languages. They are (usually) perfectly functional languages, in the rather loose sense that they are Turing complete and thus capable of solving all the same problems as any other language; they do, however, function in an intentionally roundabout way. They include several types: those that minimise the instructions possible such that everything must be spelt out in the simplest possible terms, those that intentionally obfuscate in a parody of ‘real’ languages, and those that aim to represent the program as some other set of instructions; this is the class into which a language called chef falls.
The full specifications are here, however the general idea is to make the program look as much like a recipe as possible. Variables are ingredients, stacks are mixing bowls, input comes via the fridge, output goes via baking dishes and so on. The specification explicitly requires that “Program recipes should not only generate valid output, but be easy to prepare and delicious.”. Continue reading