Care sunt câteva IDE Prolog bune?

Cel mai bun răspuns

Emacs până la capăt!

Pentru o dezvoltare serioasă a Prolog, recomand GNU Emacs cu modul Prolog menținut de Stefan Bruda. Pagina de pornire SWI-Prolog explică cum să o configurați și include, de asemenea, indicii pentru materiale suplimentare:

Utilizarea SWI-Prolog cu GNU Emacs

De fapt, SWI-Prolog este livrat chiar cu propria clonă Emacs, care este utilă pentru sarcini de editare mai mici. Îl puteți invoca cu? – emacs.

Pentru câteva sugestii alternative, consultați această discuție:

Ce este bine Prolog IDE pentru Linux?

Răspuns

Prolog nu moare. În general, este predat fiecărui student Comp Sci care lucrează la un doctorat! Cu toate acestea întrebarea dvs. poate fi în parte datorită faptului că ați observat, în ciuda faptului că toată lumea este forțată să-l învețe, cantitatea de cod Prolog nou scris nu este suficientă pentru limbile tinere mai puțin „încercate și adevărate”? În ultimii doi ani, evaluați câte proiecte noi sau postări de blog în jurul valorii: Clojure, F #, Brain4uck, Go, Cobra, miniKanren și Scala. Din păcate, chiar și cele mai mici dintre acestea au depășit numărul de biblioteci și proiecte Prolog nou-înființate combinate în ultimii 10 ani! (Îmi pare rău dacă unele dintre aceste limbi nu sunt foarte tinere .. dar gândiți-vă cât de multă tracțiune au fiecare câștig în astfel de perioade scurte de timp)

Cred că următorii doi ani Prolog va depăși cel puțin doi sau trei din limbile de mai sus în postările de blog și în proiectele noi.

Mai multe gânduri

Scriu un compilator de lisp comun în Prolog .. arată ca un proiect de aproximativ 2 luni. Funcționează făcând ca compilatorul să convertească codul sursă lisp în Prolog și apoi să optimizeze codul prolog decât să lase backend-ul să compileze prologul. Acest flux de date pare deja greu pentru Haskell sau Idris. Simt că adevărata problemă fundamentală este că ultimele două limbi nu sunt suficient de expresive pentru a descrie ceea ce tocmai am spus declarativ la nivel de detaliu pentru ca acest lucru să se întâmple.

Iată un exemplu de „detalii descriptive” (pentru sistemul de pachete) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl

Sau optimizatorul: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl

Este ușor să-l faci pe Haskell să-și optimizeze sursa înainte de a rula? De asemenea, mă aștept ca în Haskell să aibă nevoie de un fel de reprezentare Haskell intermediară pe care să o poată interpreta. Probabil că nu ar fi prea greu să scrii un interpret Lisp în Haskell .. compilatorul este mult mai funcțional?

Nivelurile de îndoctrinare a lui Haskell sunt potrivite pentru scopuri academice și, ca urmare, Haskell are mai mult doctorat Soții trofee decât Prolog. Există mult mai multe complexități și manuale despre cum să-i mulțumească pe soții lor (programatorul Haskell citește cartea HoTT după cartea HoTT), dar cred că s-ar putea să nu-și dea seama că se află într-o relație abuzivă: ceea ce este pervers este că ei cred (speră) că soțul, numit Haskell, le va acorda aceleași privilegii ca și soțiile Prolog (iau-le în aceleași vacanțe) (Ei nu sunt conștienți de existența reală a soțiilor prolog, deși sunt supuși propagandei soților lor (cum se vede pe acest fir) ) …. Obțin privilegii numai dacă au performanțe foarte bune. Cred că o astfel de căsătorie ar fi potrivită doar pentru nubile .. ceea ce ei nu știu este că nu vor fi niciodată „suficient de buni” pentru a obține aceleași vacanțe (capacități de program), li se spune că astfel de dorințe sunt greșite și sunt făcute să se răcească vizionând un alt videoclip Wadler.

Nu mă înțelegeți greșit, Prolog are îndoctrinare. . „nu folosiți tăieturi .. nu folosiți setarg / sau asserta /” Dar în Haskell, dacă vă rafinați metodologia, veți descoperi că intenția dvs. este greșită. În Prolog, dacă vă rafinați metodologia, descoperiți că intenția dvs. nu a fost niciodată greșit.

Mai multe aspecte ale relației disfuncționale:

Atât Haskell cât și Prolog sunt sisteme declarative pentru descrierea atenuării stărilor. Ambele limbaje pe care programatorul pare să le aibă pentru a dezvolta un limbaj în jurul tranzițiilor de date. În Prolog, este exprimat prin propoziții. (Dar în Haskell aceste propoziții trebuie să fie în tipuri)

Ambele construiesc plictisitor un curs de obstacole pentru rozătoare folosind role de toaletă din hârtie … Bătălia este intelectuală făcând ca rozătoarele să se miște în moduri ultra-inteligente. În Prolog construiți rolele de toaletă, apoi creați generatoare de role de toaletă numite meta-predicate în locul calculului constructorilor.

Pentru mine, văd că Haskell are un plus al propunerilor mele logice de prolog trebuie să devină tipuri (una pe cla utilizare). Se pare că ar putea fi destul de obositor (rolele de toaletă au nume unice) (încercarea de a tipifica unele dintre clauzele mele de prolog ar fi greu) Deoarece majoritatea programelor mele de prolog care fac lucruri uimitoare conțin mii de clauze. Singurul motiv pentru care mi-ar fi fost greu ar fi să le fac lucrurile mai ușoare verificatorului de tip?Nu sunt sigur că aceste ture suplimentare în mulțimea de dezamăgire m-ar ajuta. De asemenea, nu trebuie să fac ca fiecare clauză (propoziție) să se încadreze într-un sistem de tip (într-un tip)!

În Prolog, în afara manșetei, îmi proiectez sistemul de tip dinamic .. neterminabil (termeni nelimitați infinit așa cum îl folosesc în implementarea mediului Lisp) Haskell ar vrea să pierd asta. Cu toate acestea, ce oferă în schimb? O anumită consistență? De ce s-ar înscrie un programator Prolog la microgestionare filosofică?

Tot ce vrea Haskell este să pierd capacitățile? Asta pare a fi o căsătorie mai gravă dacă aș fi un programator nubil pe care nu l-aș fi știut mai bine.

Haskell are un „cult” al îndoctrinării. Poate pentru majoritatea programatorilor OO, deoarece ar vedea în continuare Haskell ca o mișcare ascendentă către generice reale.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *