4

What is Self-compilation (a.k.a. Meta-compilation) in Forth? How it works and why is it useful? Does it have any practical usage and is it still used in modern systems?

3
  • How is this too broad?
    – 53777A
    Commented Apr 6, 2016 at 9:23
  • How to handle a question that asks many things
    – gnat
    Commented Apr 6, 2016 at 9:29
  • @gnat The quesion is "what is self-compilation". That "what" includes how it works, is it legacy or not, etc. I'm not asking multiple quesions.
    – 53777A
    Commented Apr 6, 2016 at 9:47

1 Answer 1

7

A metaprogram is one that takes another program as input. Every compiler is a metaprogram, in this sense.

A metacompiler is a compiler that takes a compiler is input, usually itself. It is closely related to the idea of a bootstrapping compiler. Another related concept is homoiconicity, which means that the program structure is similar in form to the data the program operates on.

The archetypal languages to consider are Lisp and Forth. In Lisp everything is a list; there is a core of operations including the ability to define new operations; and a large Lisp system can be bootstrapped from a small core.

Forth deals with stacks and words. It has a small set of core words that perform basic operations, including the ability to define new words; and a large Forth application is bootstrapped from that small core.

The key advantage in both cases is this ability to bootstrap a new system by writing a tiny (4K or less) core in assembly language on some processor, and then using that to compile the rest.

Forth is alive and well and still used in some embedded systems, but the main advantages have been overtaken by faster processors with more memory and the use of standard higher level languages. But if you really want to write code for a processor too small to see with the naked eye, keep Forth in mind!

1
  • Awesome! "It has a small set of core words that perform basic operations, including the ability to define new words; and a large Forth application is bootstrapped from that small core." That's what I was looking for!
    – 53777A
    Commented Apr 6, 2016 at 12:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.