Methods of feasible directions : a study in linear and non-linear programming