4P by neo 2달전 | favorite | 댓글 2개
  • 컴퓨터 과학 학생으로서 Prolog와 논리 프로그래밍을 공부 중임
  • 바닐라 프로로그의 기본(원자, 술어, 컷, 리스트 등)을 배웠고, SICStus 프로로그에서 작동하는 에이전트 통신 시스템의 끔찍한 구현을 봄
  • 이 언어 자체가 강점일 수 있다고 생각하기 때문에 더 알고 싶음
  • 공부하는 분야가 상당히 기초적인 분야이기 때문에 이쪽 세계와 내가 정말 좋아하는 다른 세계(온톨로지 :D)에 대한 지식을 넓히고 전문화해보고 싶음
  • 2024년의 Prolog는 어떤 모습인지, 사람들이 Prolog로 무엇을 하고 있는지 궁금함

Prolog 자체는 아니지만 Constraints 개념이 계속 유용할거라는데는 동의가 되네요

DB같은데서도 많이 활용되고 있고, 최첨단 프로그래밍 언어 중에서는 Datalog 를 일급 지원하려는 시도도 있어요. (예시: https://flix.dev/)

Hacker News 의견
  • Prolog은 50년의 역사를 가진 언어로, 일반적인 코딩에는 유용성보다 장애물이 더 많을 수 있음

    • Prolog 시스템은 많지만 Prolog 코드가 적어 커뮤니티가 분열되어 있음
    • Prolog를 배우는 것은 "Prolog에서 어떻게 할까?"보다 "Prolog에서 걸려 넘어지지 않으려면 어떻게 할까?"에 가까움
    • 몇몇 헌신적인 사람들과 이상주의자들이 Prolog의 가능성을 논의하고 있음
    • Prolog는 흥미롭고 재미있는 요소가 있지만, 위험할 수도 있음
  • Scryer Prolog는 성능이 뛰어난 오픈 소스 iso-호환 Prolog로 새로운 이정표를 세움

  • Prolog와 Contraint 프로그래밍은 유용한 도구임

    • Prolog에는 몇 가지 문제점이 있음
      • 현대적인 모듈이나 패키지 시스템이 없음
      • 큰 코드베이스에서는 비논리적 구조가 불가피해 코드가 복잡해짐
      • 정적이고 강한 타입이 없어 견고한 코드를 작성하기 어려움
    • Prolog는 놀라운 언어이며, 프로그래밍의 미래에 자리잡을 가능성이 있음
  • 이론적으로 Prolog는 최고의 언어임

    • 논리적 형식과 계산 언어, 메타 프로그래밍 언어로서의 특성을 가짐
    • 실용적으로는 성능이 뛰어난 구현체와 작은 커뮤니티가 있음
    • Prolog로 많은 것을 할 수 있지만, 어떻게 해야 할지 명확하지 않을 때가 많음
  • 새로운 사람들이 Prolog에 관심을 가지는 것은 좋은 일임

    • Trealla Prolog를 Wasm으로 쉽게 사용할 수 있도록 라이브러리를 개발 중임
    • 링크: TypeScript Library, Go Library
    • Scryer와 Trealla는 ISO 호환성을 목표로 하고 있음
  • Prolog는 새로운 사고방식을 요구하는 언어임

    • 선언적 패러다임이 좋지만, 다른 언어에 비해 큰 이점은 없음
    • CLPFD를 적용할 수 있는 문제에서 표현력이 뛰어남
    • LLM을 사용해 Prolog 사실/데이터베이스를 생성하는 것이 재미있음
  • Prolog의 "마법"은 통합과 백트래킹 개념에 기반함

    • 선언적 언어로서 역문제를 간단하게 표현할 수 있지만, 해결책을 제공하지 않음
    • 해결 엔진이 개선되면 Prolog와 같은 선언적 제약 프로그래밍 언어의 사용이 증가할 것임
  • Prolog에 대해 거의 알지 못하지만, Datalog 튜토리얼을 즐겼음

  • 논리 프로그래밍의 검색 알고리즘은 느림

    • Prolog는 모든 것을 할 수 있지만, 모든 것을 잘하지는 못함
    • Prolog는 데이터베이스 유지 관리와 같은 특정 작업에 적합함