This is an interpreter for a simple language which can be used to teach programming to kids. It works on both Android and GNU/Linux.
The language is postscript. It supports functions, local/global variables and run-time constructed code.
In order to run a function, you give the arguments, the function name and a hash sign. For instance:
100 red#calls the red function. That function pops one value from the stack and uses it.
Variables can be local or global. When a variable is set in a function, it's created as a local variable. You can then later export it as a global variable using the 'export' builtin:
 {
    200 scale=
    scale export#
 } foo define#
 foo#
In fact, there is no need to set a value first, you can directly export it.
The top level (outside of all functions) is considered its own function.
Therefore, setting a variable at that level is not considered a global
variable export, you need to export it explicitly for that to work. For
instance:
  { [Hello name$] print# } greet define#
  "Dodo" name=
  greet#
will not work since 'name' is not exported and the 'greet' function
only sees an empty variable.
Setting a variable is done with the '=' operator. Getting the value is done by the '$' operator as demonstrated above.
Here are the drawing primitives:
  N red#
  N green#
  N blue#
     N: 0-100 , sets the intensity of the corresponding
     color channel for the background color.
 
  N width#
     N: 1-30, sets the line width.
  N line#
     draws a line of length N
  D left#
  D right#
     turns D degrees
  N move#
     moves N units without drawing a line
  clear#
     clears the screen
  save#
     saves the current position and heading to a stack
  restore#
     restores the saved position
  N tick#
     delays for N*100 milliseconds (depends on implementation)
  R circle#
     draws a circle with radius R. The center of the circle is
     R units ahead so that the circle intersects the current point.