LangDev

프로그래밍 언어 개발에 관심 있는 사람들의 모임입니다.

Relation을 이용한 프로그래밍

2008-04-10 14:47:43

Prolog 계열의 언어는 기본적으로 Function이 아닌 Relation을 이용합니다.

Lambda-Prolog와 같은 변종도 있기는 하지만, 이것도 기본적으로 Relation은 bool값만을 돌려줍니다. 하지만 Prolog에서 실질적으로 중요한 것은 리턴값이 아니라 , 식 계산중에 추론하게 되는 인자값입니다.

그래서인지 LEDA같은 경우는 Relation의 결과로 리스트를 돌려줍니다. 하지만 Prolog의 활용에 비하면 그 문법이나 용법이 무언가 중요한 것이 빠진듯한 느낌을 지울 수가 없습니다.

Logic 프로그래밍이 Object-Orient나 Functional과 결합을 한다면 어떤 문법과 어떤 용법을 가지는 것이 좋을까요? 몇 년 동안 제 머리 속을 굴러다니던 문제인데 여러분의 의견을 들어보고 싶습니다.

트랙백 주소: http://langdev.net/post/trackback/43

  1. Buy cheap tramadol mg tablets only in us online. from Buy cheap tramadol mg tablets only in us online.
  2. What is the generic name for ambien. from Generic ambien.
  3. Buy cheap soma. from Cheap watson soma online.
  4. Viagra cialis levitra buy cheap cialis buy ciali. from Cheap levitra.
  5. Free sample of viagra. from Viagra free sample.
  6. Levitra. from Levitra.
  1. 홍민희 2008-04-10 14:59:36

    (오. 다른 분들의 답변을 구경하겠습니다.)

  2. 아겔-_- 2008-04-14 11:08:08

    꽤 므흣한 주제인데 왜 댓글이 적을까 고민하며 한줄 남깁니다. (주의: 이하의 댓글은 매우 공각기동대스러움)

    제 생각에 LP은 OOP, FP와는 완전히 다른 개념으로 바라봐야 된다고 생각합니다.

    지극히 노이만적인 생각으로서 기본적은 연산(혹은 primitive)가 언어적으로 존재한다는 믿음에서 실제 뉴런 네트웍이 그러하듯이 각 뉴런의 누적값과 다른 뉴런과의 링크, 그리고 링크의 인접성 및 강도에 따라 그 연산의 결과를 달리하는 방식이므로, 어떤 기계 내장적이거나 언어의 내장적인 기재를 생각하는것과는 달라야하지 않을까 생각합니다. (FPL이든 최근의 대부분의 유행처럼 떠도는 ‘최소한의 프리미티브’ 혹은 언어의 내장기재들마저 재귀적으로 그 언어로 구현되는 양상은 그런 탈-노이만스러움이 아닐까요.)

    뜬금없는 지점으로 점프해서, 지능이란 뭘까, 혹은 창의성, 상상력, 뭐 그런 인간이 기계와 대비하여 갖는 특질을 생각해볼때 그런것들은 어쩌면 광범위한 대상에 대한 동시다발적인 검색/접근에 있다고 저는 개인적으로 생각합니다. (‘참새’라는 단어에 대해서 “수식어로 ‘식인食人’이 붙는다”라고 생각한다던가) 뇌는 어떤 키워드에 대해서 자극을 받으면 그와 관련된 개념들(하나라도 링크가 있거나 연관이 멀리있다고 하더라도)에 대해 동시다발적으로, 혹은 병렬로서 연관된 모든 링크를 따라 신호를 던지고 그중 연관이 깊거나 한 것들을 추려내겠죠. (개그야말로 앞으로 다가올 기계지배의 시대에 인류를 구원할 유일한 희망이라고 믿는 사람은 ‘식인참새’를 떠올리겠죠. 아니면 정말로 식인참새에 대한 공포나 추억이 있어 강렬한 링크라면 그렇겠구요.)

    동시다발적인 병렬처리라는 특성외에 링크, 혹은 개별 단말은 불리언보다는 복잡한 관계/상태를 나타내야할지도 모르겠습니다. 혹은 저희가 생각하는 딱 잘라 떨어지거나 하는 상태가 아닌 애매모호한 상태를 포함해야 할지도 모르겠구요.

    그런 특성을 만족하는 환경으로 언어적인 문제를 제외하더라도 구현이 실행될 환경을 생각해보면 현재의 컴퓨터가 아니라 양자컴퓨터(superposition이나 병렬처리에 더 자연스러움…)등을 생각해볼수있을거 같습니다.

    이상, 아침댓바람부터 뉴로맨서가 전자양 잡아 먹는 소리였습니다;;;

목록보기

← C++0x에 람다와 클로져가 추가된다... | Phunctional: 람다! 람다!... →