Bästa svaret
Emacs hela vägen ner!
För seriös utveckling av Prolog rekommenderar jag GNU Emacs med Prolog-läget som underhålls av Stefan Bruda. SWI-Prolog-hemsidan förklarar hur du ställer in den och innehåller också pekare för ytterligare material:
Använda SWI-Prolog med GNU Emacs
SWI-Prolog levereras till och med med sin egen Emacs-klon, vilket är användbart för mindre redigeringsuppgifter. Du kan åberopa det med? – emacs.
För några alternativa förslag, kolla in den här diskussionen:
Vad är bra Prolog IDE för Linux?
Svar
Prolog är inte döende. Generellt lärs det ut alla Comp Sci-studenter som arbetar mot en doktorsexamen. Men din fråga kan vara i delvis på grund av det faktum att du ”har lagt märke till trots att alla har tvingat sig att lära sig det, men mängden nyskriven Prolog-kod saknar unga mindre” beprövade ”språk? Under de senaste två åren, utvärdera hur många nya projekt eller blogginlägg som finns: Clojure, F #, Brain4uck, Go, Cobra, miniKanren och Scala. Tyvärr har även de minsta av dessa överskridit antalet nystartade Prolog-bibliotek och projekt kombinerat under de senaste 10 åren! (Ledsen om några av dessa språk inte är särskilt unga .. men tänk på hur mycket drag varje har fått under så korta tidsperioder)
Jag tror att de kommande två åren kommer Prolog att överstiga minst två eller tre av ovanstående språk i blogginlägg och nya projekt.
Fler tankar
Jag skriver en vanlig lisp-kompilator i Prolog .. det ser ut som ett 2-månadersprojekt. Det fungerar genom att kompilatorn konverterar lisp-källkod till Prolog och sedan optimerar prologkoden än att låta backend kompilera prologen. Detta dataflöde verkar redan svårt för Haskell eller Idris. Jag anser att den verkliga grundläggande frågan är att de två sistnämnda språken inte är tillräckligt uttrycksfulla för att beskriva vad jag just sa uttalande på detaljnivå för att få det att hända.
Här är ett exempel på ”beskrivande detaljer” (för paketsystemet) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl
Eller optimeringsprogrammet: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl
Är det lätt att få Haskell att optimera källan innan den körs? Jag förväntar mig också att det i Haskell skulle behöva någon form av mellanliggande Haskell-representation som den kan tolka. Förmodligen skulle det inte vara för svårt att skriva en Lisp-tolk i Haskell .. kompilatorn är mycket mer arbete?
Indoktrineringsnivåerna i Haskell är väl lämpade för akademiska ändamål, och som ett resultat, Haskell har mer doktorsexamen Trophy fruar än Prolog. Det finns mycket mer komplexitet och handböcker om hur man kan glädja sina män (Haskell-programmeraren läser HoTT-boken efter HoTT-boken) Men jag tror att de kanske inte inser att de är i ett missbrukande förhållande: vad som är pervers är att de tror (hoppas) på deras make, som heter Haskell, kommer att ge dem samma privilegier som Prolog-fruarna har (ta dem med på samma semester) (De är inte medvetna om den faktiska existensen av prolog-fruar eller är föremål för deras mans propaganda (som det framgår av denna tråd) ) …. Få privilegier bara om de presterar mycket bra. Jag tror att ett sådant äktenskap bara skulle passa för nubilen .. Vad de inte vet är att de aldrig kommer att vara ”tillräckligt bra” för att få samma semester (programfunktioner) de får höra att sådana önskningar är felaktiga och får svalna genom att titta på en annan Wadler-video.
Missförstå mig inte, Prolog har indoktrinering. . ”använd inte nedskärningar .. använd inte setarg / eller asserta /” Men i Haskell, om du förfinar din metodik, kommer du att upptäcka att din avsikt är fel. I Prolog, om du förfinar din metodik, upptäcker du att din avsikt var aldrig fel.
Fler aspekter av det dysfunktionella förhållandet:
Både Haskell och Prolog är deklarativa system för att beskriva tillståndsminskning. Båda språken verkar behöva utveckla ett språk kring dataövergångar. I Prolog uttrycks det via propositioner. (Men i Haskell måste dessa propositioner vara i olika typer)
Båda bygger tråkigt en gnagarhinderbana med pappers toalettrullar … Striden intellektuellt är gör att gnagaren rör sig på ultraintelligenta sätt. I Prolog bygger du toalettrullarna, sedan gör du toalettrullgeneratorer som kallas meta-predikat istället för konstruktionsberäkningen.
För mig ser jag Haskell ha en extra av mina logiska förslag till prolog måste bli typer (en per cla använda sig av). Det verkar som om det kan vara ganska tråkigt (toalettrullarna har unika namn) (att försöka typisera några av mina prologklausuler skulle vara svåra) Eftersom de flesta av mina prologprogram som gör fantastiska saker innehåller 1000 klausuler. Det enda skälet att göra det svårt för mig är att göra det enklare för typverifieraren?Inte säker på att dessa extra varv i massan av förtvivlan skulle hjälpa mig. Dessutom behöver jag inte låta varje paragraf (proposition) passa in i något typsystem (i en typ)!
I Prolog, från manschetten, designar jag mitt typsystem dynamiskt .. ej avslutningsbart termer. (oändliga obundna termer som jag använder i Lisp-miljöimplementeringen) Haskell vill att jag ska förlora det. Ändå vad erbjuder det i gengäld? Viss konsistens? Varför skulle en Prolog-programmerare anmäla sig till filosofisk micromanagement?
Allt som Haskell vill är att jag ska förlora kapacitet? Det verkar som ett värre fall äktenskap om jag var en nubile programmerare skulle jag inte ha vetat bättre.
Haskell har en ”kult” av indoktrinering. Kanske för de flesta OO-programmerare eftersom de fortfarande skulle se Haskell som ett uppåtgående steg mot riktiga generika.