Chef (programming language)
From Wikipedia, the free encyclopedia
Chef is an esoteric programming language designed by David Morgan-Mar. It is based on the manipulation of data values in a number of stacks. Each program consists at minimum of the following:
- A title
- A list of variables and their data values
- A list of instructions for stack manipulation
The joke is that the variables tend to be named after basic foodstuffs, the stacks are called 'mixing bowls' and the instructions for manipulating them 'mix', 'stir', etc.. A program, then, reads much like a cooking recipe.
A Hello World example program in Chef:
Hello World Souffle. Ingredients. 72 g haricot beans 101 eggs 108 g lard 111 cups oil 32 zucchinis 119 ml water 114 g red salmon 100 g dijon mustard 33 potatoes Method. Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish. Serves 1.
The phrase "Hello world" is encoded as ASCII values in the amount specifiers in the recipe. The ingredient names themselves are variable names, and are here named with a starting letter matching the letter encoded in the number in front for convenience. Notice the first letter of each word forms the phrase "hellozworldp" when read in reverse order.
potatoes dijon mustard lard red oil water zucchinis oil lard lard eggs haricot beans
The order of the words is reversed because when the phrase "hello world" is printed out, the ingredients are "popped" from the stack (also known as the mixing bowl). The last element (last ingredient) to be put in the stack is the first element out of the stack.
A Fibonacci example program can be found on the language's website.