Differentiable programming: Difference between revisions

Content deleted Content added
Fix details regarding differentiable programming in Swift. 1. Differentiable programming in Swift is not tied to TensorFlow. 2. Differentiable programming in Swift does not fit under the APIs section. Remove newly added "APIs" section, as it is not significant.
Tags: references removed Visual edit
Integrating the Swift stuff into the rest of the text. Some of the original stuff is implicit from the earlier contents in the paragraph (and the last bit about the authors' plans doesn't seem notable enough for inclusion).
Line 11:
Both of these early approaches are only able to differentiate code written in a suitable manner for the framework, limiting their interoperability with other programs.
 
A more recent package in the [[Julia (programming language)|Julia]] programming language — [https://github.com/FluxML/Zygote.jl Zygote] — resolves the issues that earlier attempts faced by treating the language's syntax as the graph; the design of the Julia language makes it easy for the [[intermediate representation]] of arbitrary Julia code to be differentiated directly, [[compiler optimization|optimized]], and compiled.<ref name="flux" /><ref>{{cite arxiv|last=Innes|first=Michael|date=2018-10-18|title=Don't Unroll Adjoint: Differentiating SSA-Form Programs|eprint=1810.07951|class=cs.PL}}</ref> An in-development differentiable programming language called [[Myia (programming language)|Myia]] also uses a similar approach. <ref name="myia1" />, as does an ongoing project for [[Swift (programming language)|Swift]] implemented as a compiler transformation on the Swift intermediate language ([https://github.com/apple/swift/blob/tensorflow/docs/SIL.rst SIL]). <ref>{{Cite web|url=https://forums.swift.org/t/pre-pre-pitch-swift-differentiable-programming-design-overview/25992|title=Pre-pre-pitch: Swift Differentiable Programming Design Overview|date=2019-06-17|website=Swift Forums|language=en-US|access-date=2019-06-18}}</ref>
 
Differentiable programming in Swift extends the type system to make differentiable functions first-class. It leverages [[Protocol (object-oriented programming)|protocol-oriented programming]] ([[Type class|type classes]]) to enable custom differentiable data structures. Automatic differentiation is implemented as a compiler transformation on the Swift intermediate language ([https://github.com/apple/swift/blob/tensorflow/docs/SIL.rst SIL]). The authors plan to pitch differentiable programming as an official Swift language feature.<ref>{{Cite web|url=https://forums.swift.org/t/pre-pre-pitch-swift-differentiable-programming-design-overview/25992|title=Pre-pre-pitch: Swift Differentiable Programming Design Overview|date=2019-06-17|website=Swift Forums|language=en-US|access-date=2019-06-18}}</ref>
 
==See also==