논리형 프로그래밍(?)
http://clojure.or.kr/wiki/doku.php?id=study:algorithms:functional_logic_programming
논리형 프로그래밍이란?
기호논리의 원리를 이용한다. 관계를 중요시한다.
학교다닐떄 배우던 명제와 비슷하다.
ex)
전제
a는 c의 아버지다.
c는 d의 아버지다.
알수있는것!
a는 d의 할아버지다.
명령형 언어와 함수 언어에서의 프로그래밍은 기본적으로 절차적 (procedural) 이다. 그것은 프로그래머가 프로그램에 의해 무엇이 성취되는지를 알고 계산이 정확하게 어떻게 수행되는지를 컴퓨터에게 지시하는 것을 의미한다. 다시 말하면, 컴퓨터는 명령을 따르는 간단한 장치로서 취급된다. 계산되는 모든 것은 계산의 모든 세부 사항이 상세히 설명되어야 한다. 어떤 사람은 이런 것이 컴퓨터 프로그래밍을 어렵게 하는 핵심이라고 믿는다.
어떤 비명령형 언어에서의 프로그래밍, 특히 논리 프로그래밍 언어에서의 프로그래밍은 비절차적이다. 이러한 언어에서의 프로그램은 결과가 계산되는 방법을 정확하게 서술하지 않고 결과의 형식을 서술한다. 차이점은 우리가 컴퓨터 시스템이 어쨌든 결과가 얻어지는 방식을 결정한다고 가정하는 것이다. 논리 프로그래밍 언어에 이 능력을 제공하기 위해 필요한 것은 적당한 정보와 원하는 계산 결과를 추론하는 방법을 컴퓨터에게 제공하는 간결한 수단이다. 수렁 해석학은 컴퓨터에 대한 기본 통신 형식을 제공하고, Robinson 에 의해 첫번째로 개발된 증명 방법은 추론 기법을 제공한다
선언형 언어는 해법 정의(HOW)를 하기보다는 무엇(what)을 할 것인지에 중점을 둔다.
즉 우리가 대개 처음 배우는 C언어나 이런언어들은 보통 문제해결을 위해서 코딩을 한 후 주석을 단다.
왜 달까? 문제해결을 위한 해법을 적어 놓은 것을 상대방이 이해하기 쉽게 하기위함이다.
근데 선언형언어 및 논리형 프로그래밍은 결과를 물어보는 방식이다. 즉 애초에 결과를 물어보기때문에 주석이 덜필요하다
생각해보자
ex) 너 남자니? (male(a))
주석을 달필요가 있나?? 애초에 코딩이 질문이기에 필요없다.
'공부 > 프로그래밍' 카테고리의 다른 글
프로그래밍 네이밍 규칙 (0) | 2017.12.16 |
---|---|
함수형 프로그래밍(?) (0) | 2017.01.14 |
식과 제어문 (0) | 2017.01.14 |
l-value 와 r-value 차이 (0) | 2017.01.13 |
동적영역과 정적영역의 차이 (0) | 2017.01.12 |