차별화 가능한 프로그래밍은 복잡한 컴퓨터 프로그램(제어 흐름 및 데이터 구조 포함)을 엔드-투-엔드로 자동 차별화할 수 있게 하여 프로그램 매개변수의 경사도 기반 최적화를 가능하게 하는 프로그래밍 패러다임이다.