Hvad er nogle gode Prolog IDEer?

Bedste svar

Emacs helt ned!

For seriøs Prolog-udvikling anbefaler jeg GNU Emacs med Prolog-tilstanden, der opretholdes af Stefan Bruda. SWI-Prolog-hjemmesiden forklarer, hvordan du konfigurerer den, og inkluderer også markører til yderligere materiale:

Brug af SWI-Prolog med GNU Emacs

Faktisk sendes SWI-Prolog endda med sin egen Emacs-klon, hvilket er nyttigt til mindre redigeringsopgaver. Du kan påberåbe det med? – emacs.

For et par alternative forslag, se denne diskussion:

Hvad er godt Prolog IDE til Linux?

Svar

Prolog er ikke ved at dø. Generelt læres det til enhver Comp Sci-studerende, der arbejder hen imod en ph.d.! Dog kan dit spørgsmål være i del på grund af det faktum, at du “har lagt mærke til, på trods af at alle er tvunget til at lære det, at mængden af ​​nyligt skrevet Prolog-kode mangler unge mindre” velprøvede “sprog? I løbet af de sidste to år skal du evaluere, hvor mange nye projekter eller blogindlæg der er omkring: Clojure, F #, Brain4uck, Go, Cobra, miniKanren og Scala. Desværre har selv de mindste af disse overskredet antallet af nystartede Prolog-biblioteker og projekter kombineret i løbet af de sidste 10 år! (Undskyld, hvis nogle af disse sprog ikke er meget unge .. men tænk på, hvor meget trækkraft hver har gevinst over så korte tidsperioder)

Jeg tror, ​​at de næste to år vil Prolog overstige mindst to eller tre af de ovennævnte sprog i blogindlæg og nye projekter.

Flere tanker

Jeg skriver en fælles lisp-kompilator i Prolog .. det ligner ca. 2-måneders projekt. Det fungerer ved at lade kompilatoren konvertere lisp kildekode til Prolog og derefter optimere prolog-koden end at lade backend kompilere prologen. Dette dataforløb virker allerede hårdt for Haskell eller Idris. Jeg føler, at det virkelige grundlæggende spørgsmål er, at sidstnævnte to sprog ikke er udtryksfulde nok til at beskrive, hvad jeg lige sagde erklærende på detaljeringsniveau for at få det til at ske.

Her er et eksempel på “beskrivende detaljer” (for pakkesystemet) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl

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

Er det let at få Haskell til at optimere sin kilde inden kørsel? Jeg forventer også, at det i Haskell ville have brug for en slags mellemliggende Haskell-repræsentation, som den kan fortolke. Sandsynligvis ville det ikke være for svært at skrive en Lisp-tolk i Haskell .. kompilatoren er meget mere arbejde?

Indoktrineringsniveauerne i Haskell er velegnede til akademiske formål, og som et resultat, Haskell har mere ph.d. Trofæhustruer end Prolog. Der er langt mere kompleksitet og manualer til, hvordan man kan behage deres ægtemænd (Haskell-programmøren læser HoTT-bogen efter HoTT-bogen) Men jeg tror, ​​at de måske ikke er klar over, at de er i et voldeligt forhold: hvad der er pervers, er, at de tænker (håber) deres mand, der hedder Haskell, vil give dem de samme privilegier som Prolog-konerne har (tage dem med på de samme ferier) (De er uvidende om den faktiske eksistens af prolog-koner, selvom de er underlagt deres mands propaganda (som det ses på denne tråd) ) …. Få kun privilegier, hvis de klarer sig meget godt. Jeg tror, ​​at et sådant ægteskab kun ville være egnet til nubilen. Det, de ikke ved, er, at de aldrig vil være “gode nok” til at få de samme ferier (programfunktioner), de får at vide, at sådanne ønsker er forkerte og fået til at køle af ved at se en anden Wadler-video.

Forstå mig ikke forkert, Prolog to har indoktrinering. . “brug ikke nedskæringer .. brug ikke setarg / eller asserta /” Men i Haskell, hvis du forfiner din metode, vil du opdage, at din hensigt er forkert. i Prolog, hvis du forfiner din metode, opdager du, at din hensigt var aldrig forkert.

Flere aspekter af det dysfunktionelle forhold:

Både Haskell og Prolog er deklarative systemer til beskrivelse af afbødning af stater. Begge sprog synes programmøren at skulle udvikle et sprog omkring dataovergange. I Prolog udtrykkes det via propositioner (men i Haskell skal disse propositioner være i typer)

Begge kedeligt bygger en gnaverhindringsbane ved hjælp af papirtoiletruller … Kampen intellektuelt er får den gnaver til at bevæge sig på ultraintelligente måder. I Prolog bygger du toiletrullerne, så laver du toiletrullegeneratorer kaldet meta-predikater i stedet for beregningen af ​​konstruktører.

For mig ser jeg Haskell som et ekstra af mine logiske forslag til prolog skal blive typer (en pr. cla brug). Dette ser ud til at det kan være ret kedeligt (toiletrullerne har unikke navne) (at prøve at typificere nogle af mine prologklausuler ville være svære) Da de fleste af mine prologprogrammer, der gør fantastiske ting, indeholder 1000ers klausuler. Den eneste grund til at gøre det svært for mig ville være at gøre tingene lettere for typekontrolløren?Ikke sikker på, at disse ekstra omgange i en masse fortvivlelse ville hjælpe mig. Også, jeg behøver ikke at få hver klausul (proposition) til at passe ind i et eller andet type system (i en type)!

I Prolog, ude af manchetten, designer jeg mit typesystem dynamisk .. ikke terminering vilkår. (uendelige ubundne udtryk, som jeg bruger i implementeringen af Lisp-miljøet) Haskell vil have, at jeg mister det. Men hvad tilbyder det til gengæld? Noget konsistens? Hvorfor skulle en Prolog-programmør tilmelde sig filosofisk mikromanagement?

Alt, hvad Haskell ønsker, er, at jeg mister kapaciteter? Det virker som et værre tilfælde ægteskab, hvis jeg var en nubile programmør, ville jeg ikke have vidst bedre.

Haskell har en “kult” af indoktrinering. Måske for de fleste OO-programmører, da de stadig ville se Haskell som en opadgående bevægelse mod ægte generika.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *