(1/5) I grew up in the Programming Languages research community and have recently begun attending Machine Learning conferences. One perspective that I don't see much in either community is that #MachineLearning is a form of #programming.
(2/5) PL/formal methods researchers tend to think of programs as engineered objects, and study abstractions/tools for principled engineering. But the big assumption here is that you can formalize your goals and the world in which your programs run. That's not always realistic.
(3/5) In contrast, #MachineLearning lets programs be "found" objects. "I don't have a full spec for my program and can't write the code myself, but here's some data on what it does. Discover it!" This is still #programming, albeit done inductively rather than deductively.
(4/5) But neither approach has the whole answer. There are many tasks like image classification for which "formalize using Hoare logic" is a nonstarter. But inductive discovery of entire software systems is also impossible. And what about human-readability, reliability, security?
(5/5) And ML-as-programming can enrich both PL and ML. In place of "what languages are best for humans" we get to ask "what languages allow good knowledge representations inside a learning algorithm"? And "how do we learn programs in such languages?" These are fun, new questions.
• • •
Missing some Tweet in this thread? You can try to
force a refresh