Monday, February 03, 2003

Despite the fairly recent addition of real functions and subs to the language, Liberty Basic still pushes you to use the old gosub/return construct. This pressure is not obvious until you're actually writing programs.

Let's see how the pressure builds:
  1. Parameters passed to a function or sub are "by value". This means that a copy is made and no changes can be made to original variable in the function call.

  2. Global variables are not visible in a function or sub with the exception of arrays, structs, handles and system variables.

  3. Sometimes you need to return more than one value.

  4. Using single-dimensioned, 1-element arrays as global variables is ugly.

  5. The cleanest solution is to make the code global as a chunk of gosub/return code.

This might be a partial answer to the question I had about why so many Liberty Basic programmers keep on using this construct instead of switching entirely to functions and subs.

There are a few things that require functions -- recursion and useful code libraries.