I've been reading a Concepts of Programming Languages by Robert W. Sebesta and in chapter 9 there is a brief section on passing a SubProgram to a function as a parameter. The section on this is extremely brief, about 1.5 pages, and the only explanation to its application is: 
When a subprogram must sample some mathematical function. Such as a Subprogram that does numerical integration by estimating the area under a graph of a function by sampling the function at a number of different points. Such a Subprogram should be usable everywhere.
This is completely off from anything I have ever learned. If I were to approach this problem in my own way I would create a function object and create a function that accomplishes the above and accepts function objects. 
I have no clue why this is a design issue for languages because I have no idea where I would ever use this. A quick search hasn't made this any clearer for me.
Apparently you can accomplish this in C and C++ by utilizing pointers. Languages that allow nested Subprograms such as JavaScript allow you do do this in 3 separate ways:
function sub1() {
    var x;
    function sub2() {
        alert( x ); //Creates a dialog box with the value of x
        };
    function sub3() {
        var x;
        x = 3;
        sub4( sub2 ); //*shallow binding* the environment of the                                 
                      //call statement that enacts the passed 
                      //subprogram
        };
    function sub4( subx ) {
        var x;
        x = 4;
        subx();
        };
    x=1;
    sub3();
    };
I'd appreciate any insight offered.