Mostra com la diferenciació en:automàtica es relaciona amb la diferenciació simbòlica, les dues caixes superiors representen un codi font en qualsevol llenguatge de programació, mentre que les caixes inferiors representen la idea abstracta d'una funció matemàtica.
La majoria dels marcs de programació diferenciables funcionen mitjançant la construcció d'un gràfic que conté el flux de control i les estructures de dades del programa. Els intents generalment es divideixen en dos grups:
Gràfic estàtic compilat enfocaments basats en com ara TensorFlow, Theano i MXNet. Acostumen a permetre una bona optimització del compilador i una escala més fàcil a sistemes grans, però la seva naturalesa estàtica limita la interactivitat i els tipus de programes que es poden crear fàcilment (per exemple, els que impliquen bucles o recursivitat), a més de dificultar el raonament dels usuaris. eficaçment sobre els seus programes. Una cadena d'eines del compilador de prova de concepte anomenada Myia utilitza un subconjunt de Python com a interfície i admet funcions d'ordre superior, recursivitat i derivades d'ordre superior.
Sobrecàrrega d'operadors, enfocaments basats en gràfics dinàmics com ara PyTorch i el paquet autograd de NumPy. La seva naturalesa dinàmica i interactiva permet que la majoria dels programes s'escriguin i es raonin amb més facilitat. Tanmateix, donen lloc a una sobrecàrrega de l'intèrpret (sobretot quan es redacten moltes operacions petites), una escalabilitat més pobra i un benefici reduït de l'optimització del compilador. Un paquet per al llenguatge de programació Julia – Zigot – funciona directament a la representació intermèdia de Julia, la qual cosa permet que encara sigui optimitzada pel compilador just-in-time de Julia.
Una limitació dels enfocaments anteriors és que només són capaços de diferenciar el codi escrit d'una manera adequada per al marc, limitant la seva interoperabilitat amb altres programes. Els enfocaments més nous resolen aquest problema mitjançant la construcció del gràfic a partir de la sintaxi o IR del llenguatge, permetent diferenciar codi arbitrari.[6]
La programació diferenciable està fent avenços significatius en diversos camps més enllà de les seves aplicacions tradicionals. En ciències de la salut i de la vida, per exemple, s'està utilitzant per a l'aprenentatge profund en el modelatge de mecanismes moleculars basat en biofísica. Això implica aprofitar la programació diferenciable en àrees com la predicció de l'estructura de proteïnes i el descobriment de fàrmacs. Aquestes aplicacions demostren el potencial de la programació diferenciable per contribuir a avenços significatius en la comprensió de sistemes biològics complexos i la millora de les solucions sanitàries.[10]