Differentiable Programming For Computational Plasma Physics