Methods of non-smooth optimization and mathematical programming I