pub fn create_program<T: ToString>(
    source: T,
    location: Option<T>
) -> Result<Program, ProgramError>