Returns a generator that yields the available executable programs

    :returns: a generator that yields the programs available after a refresh_listing()
    :rtype: generator

def get_programs():
    """Returns a generator that yields the available executable programs

    :returns: a generator that yields the programs available after a refresh_listing()
    :rtype: generator
    """
    programs = []
    os.environ['PATH'] += os.pathsep + os.getcwd()
    for p in os.environ['PATH'].split(os.pathsep):
        if path.isdir(p):
            for f in os.listdir(p):
                if _is_executable(path.join(p, f)):
                    yield f