This page (revision-82) was last changed on 03-Jan-2024 15:31 by bartgo 

This page was created on 20-Feb-2010 20:56 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
82 03-Jan-2024 15:31 7 KB bartgo to previous
81 03-Jan-2024 15:13 7 KB bartgo to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 4 changed one line
Forth is a programming language that uses a stack-based metaphor in an effort to reduce memory requirements as much as possible. In contrast to languages like [Basic], the parser never has to "look ahead" to find additional data in order to see if a command is properly entered, any data it could need has to be pushed onto the stack as well. This greatly reduces the size of the parser, and as a result, leaves more room free for programs.
Forth is an interpreted programming language that uses a stack-based metaphor in an effort to reduce memory requirements as much as possible. It is perhaps the only successful example of such a language; the PostScript system was derived from it and saw much widespread use, but this was hidden inside the printers and not seen by end-users or programmers.
At line 6 added 20 lines
Stack-based languages simplify the interpreter's parser considerably, because the data for an instruction always appears in the source code before the instructions that will use it. To see why this helps, consider this typical line of [BASIC]:
A = 10 + 20 * B
To perform this line, the interpreter has to read the entire line, look up the value of B (let's say 30), realize that the * has to be performed before +, and then finally convert those into instructions something like:
get(B,temp1)
mul(20,temp1, temp2)
add(10,temp2, temp3)
put(temp3,A)
In contrast, in a stack-based system, the programmer organizes the code in the fashion it will ultimately be performed. The equivalent would be:
B 20 mul
10 add
When this code is performed, the interpreter pushes the value of B on the stack, then 20. It then encounters the mul, which removes the last two items, the 30 and 20, multiplies them, and puts the result back on the stack. Next, it pushes 10 on the stack, and encounters add, taking the two values, adding them, and putting the result back on the stack.
Notice that the stack-based version *has no temporary values*, and only reads a single instruction at a time, not an entire line of code. As a result, the parser is much simpler, smaller and requires less memory to run. This, in turn, generally makes it much faster, comparable to compiled programs.