귀납적 프로그래밍

귀납적 프로그래밍(Inductive programming, IP)은 자동 프로그래밍의 특수 영역으로, 인공지능 및 프로그래밍 연구를 포괄하며 입출력 예제 또는 제약 조건과 같은 불완전한 사양에서 일반적으로 선언적(논리적 또는 기능적) 및 종종 재귀적 프로그램의 학습을 다룬다.

사용되는 프로그래밍 언어에 따라 여러 종류의 귀납적 프로그래밍이 있다. 리스프 또는 하스켈과 같은 함수형 프로그래밍 언어를 사용하는 귀납적 함수형 프로그래밍, 특히 프롤로그 (프로그래밍 언어)와 같은 논리 프로그래밍 언어 및 설명 논리와 같은 기타 논리적 표현을 사용하는 귀납적 논리 프로그래밍이 더 두드러졌지만 다른 (프로그래밍) 언어 제약 프로그래밍이나 확률 프로그래밍과 같은 패러다임도 사용되었다.

정의 
귀납적 프로그래밍은 불완전한(형식적인) 사양에서 프로그램이나 알고리즘을 학습하는 것과 관련된 모든 접근 방식을 통합한다. IP 시스템에서 가능한 입력은 의도된 프로그램의 원하는 동작을 설명하는 일련의 훈련 입력 및 해당 출력 또는 출력 평가 기능, 특정 출력을 계산하는 프로세스를 설명하는 추적 또는 동작 시퀀스, 유도될 프로그램에 대한 제약이다. 시간 효율성이나 복잡성, 표준 데이터 유형, 사용할 미리 정의된 기능, 의도한 프로그램의 데이터 흐름을 설명하는 프로그램 체계 또는 템플릿, 솔루션 검색을 안내하는 경험적 방법 또는 기타 편견과 같은 다양한 종류의 배경 지식과 관련된다.

IP 시스템의 출력은 조건문과 루프 또는 재귀 제어 구조를 포함하는 임의의 프로그래밍 언어 또는 다른 종류의 튜링 완전 표현 언어로 작성된 프로그램이다.

많은 응용 프로그램에서 출력 프로그램은 예제 및 부분 사양과 관련하여 정확해야 하며 이는 일반적으로 사양이 '연역적' 프로그램 합성과 반대되는 자동 프로그래밍 또는 프로그램 합성 내부의 특수 영역으로 귀납적 프로그래밍을 고려하게 한다.

다른 경우, 귀납적 프로그래밍은 선언적 프로그래밍이나 표현 언어를 사용할 수 있는 보다 일반적인 영역으로 간주되며 일반적인 기계 학습, 구조 마이닝 또는 구조 마이닝의 보다 구체적인 영역과 같이 예제에서 어느 정도 오류가 있을 수도 있다. 독특한 특징은 필요한 예시 또는 부분 사양의 수이다. 일반적으로 귀납적 프로그래밍 기술은 몇 가지 예를 통해 배울 수 있다.

같이 보기 
 귀납
 테스트 주도 개발

외부 링크 
 Inductive Programming community page, hosted by the University of Bamberg.

프로그래밍 패러다임
기계 학습