Three pillars of machine programming Logic-driven definition: What to do System-driven execution: How to do Data-driven optimization: Scale everything thru ruthless automation