Learning Probabilistic Programs Using Backpropagation