Differentiable Programming

Differentiable programming includes automatic differentiation (to say, perform gradient descent automatically) and relaxation (to say, turn a symbolic program into a continuous program which supports gradient descent).