Differentiable and Probabilistic Programming Languages