GL_ARB_*_program doesn't know about functions. It can easily be
implemented on a graphics chip whose shader processors don't know about
function calling, indirect addressing, stack, etc: Just a lot of
registers, directly addressed would do.
What about GLSL? Now there's a C-like language, functions (though
recursion isn't allowed). Is a stack, indirect addressing, etc needed?