First-order proximal optimization algorithms for non-smooth problems