Beste antwoord
Emacs helemaal naar beneden!
Voor serieuze Prolog-ontwikkeling raad ik GNU Emacs aan met de Prolog-modus die wordt onderhouden door Stefan Bruda. De startpagina van SWI-Prolog legt uit hoe je het moet instellen en bevat ook verwijzingen naar verder materiaal:
SWI-Prolog gebruiken met GNU Emacs
In feite wordt SWI-Prolog zelfs geleverd met zijn eigen Emacs-kloon, wat handig is voor kleinere bewerkingstaken. Je kunt het aanroepen met? – emacs.
Voor een paar alternatieve suggesties, bekijk deze discussie:
What “sa good Prolog IDE voor Linux?
Antwoord
Prolog gaat niet dood. Over het algemeen wordt het geleerd aan elke Comp Sci-student die aan een PhD werkt! gedeeltelijk vanwege het feit dat je hebt gemerkt, ondanks dat iedereen gedwongen is om het te leren, de hoeveelheid nieuw geschreven Prolog-code achterblijft bij jonge, minder “beproefde” talen? Evalueer in de afgelopen twee jaar hoeveel nieuwe projecten of blogposts er zijn: Clojure, F #, Brain4uck, Go, Cobra, miniKanren en Scala. Helaas hebben zelfs de minste hiervan het aantal nieuw gestarte Prolog-bibliotheken en -projecten in de afgelopen 10 jaar overtroffen! (Sorry als sommige van deze talen niet erg jong zijn .. maar bedenk hoeveel tractie elk heeft gewonnen in zon korte tijdsperiode)
Ik denk dat de komende twee jaar Prolog minstens twee of drie van de bovenstaande talen in blogposts en nieuwe projecten.
Meer gedachten
Ik schrijf een gemeenschappelijke lisp-compiler in Prolog .. het lijkt een project van ongeveer 2 maanden. Het werkt door de compiler de lisp-broncode te laten converteren naar Prolog en vervolgens de prologcode te optimaliseren, zodat de backend de prolog kan compileren. Deze gegevensstroom lijkt al moeilijk voor Haskell of Idris. Ik denk dat het echte fundamentele probleem is dat de laatste twee talen niet expressief genoeg zijn om te beschrijven wat ik zojuist op detailniveau heb gezegd om het te laten gebeuren.
Hier is een voorbeeld van beschrijvende details (voor het pakketsysteem) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl
Of de optimizer: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl
Is het gemakkelijk om Haskell zijn broncode te laten optimaliseren voordat hij wordt gestart? Ik verwacht ook dat het in Haskell een soort van tussenliggende Haskell-representatie nodig heeft die het kan interpreteren. Waarschijnlijk zou het echter niet zo moeilijk zijn om een Lisp-interpreter in Haskell te schrijven .. de compiler is veel meer werk?
De indoctrinatieniveaus van Haskell zijn zeer geschikt voor academische doeleinden, en als gevolg daarvan is Haskell heeft meer Ph.D. Trofee-vrouwen dan Prolog. Er is veel meer complexiteit en handleidingen over hoe ze hun echtgenoten kunnen plezieren (de Haskell-programmeur leest HoTT-boek na HoTT-boek) Maar ik denk dat ze zich misschien niet realiseren dat ze een gewelddadige relatie hebben: wat pervers is, is dat ze denken (hopen) dat hun De echtgenoot, genaamd Haskell, zal hen dezelfde privileges verlenen als de Prolog-vrouwen hebben (neem ze mee op dezelfde vakantie) (Ze zijn zich echter niet bewust van het feitelijke bestaan van proloogvrouwen of zijn onderworpen aan de propaganda van hun man (zoals te zien op deze thread) ) …. Ze krijgen alleen privileges als ze zeer goed presteren. Ik denk dat zon huwelijk alleen geschikt zou zijn voor de huwbare .. wat ze niet weten is dat ze nooit goed genoeg zullen zijn om dezelfde vakanties te krijgen (programmamogelijkheden) ze wordt verteld dat dergelijke verlangens verkeerd zijn en moeten afkoelen door een andere Wadler-video te bekijken.
Begrijp me niet verkeerd, Prolog to heeft indoctrinatie. . “gebruik geen bezuinigingen .. gebruik geen setarg / of asserta /” Maar in Haskell, als je je methodologie verfijnt, zul je ontdekken dat je intentie verkeerd is. in Prolog, als je je methodologie verfijnt, ontdek je dat je intentie was nooit verkeerd.
Meer aspecten van de disfunctionele relatie:
Zowel Haskell als Prolog zijn declaratieve systemen voor het beschrijven van de verzachting van toestanden. In beide talen lijkt de programmeur een taal te moeten ontwikkelen rond gegevensovergangen. In Prolog wordt het uitgedrukt via proposities. (Maar in Haskell moeten deze proposities in typen zijn)
Beiden bouwen vervelend een hindernisbaan voor knaagdieren met behulp van papieren toiletrollen … De strijd is intellectueel dat knaagdier op ultraintelligente manieren laten bewegen. In Prolog bouw je de toiletrollen, daarna maak je toiletrolgeneratoren die meta-predicaten worden genoemd in plaats van de calculus van constructeurs.
Voor mij zie ik dat Haskell een extra van mijn logische proposities van proloog moeten typen worden (één per cla gebruik). Dit lijkt nogal vervelend te zijn (de toiletrollen hebben unieke namen) (het zou moeilijk zijn om een aantal van mijn proloogclausules te typeren). Aangezien de meeste van mijn prologprogrammas die verbazingwekkende dingen doen, duizenden clausules bevatten. De enige reden om dit voor mij moeilijk te maken, is om het de typecontroleur gemakkelijker te maken.Ik weet niet zeker of deze extra rondjes in de hoop wanhoop me zouden helpen. Ook hoef ik niet elke clausule (propositie) in een type systeem (in een type) te laten passen!
In Prolog ontwerp ik mijn typesysteem dynamisch .. niet-afsluitbaar termen. (oneindige ongebonden termen zoals ik gebruik in de Lisp-omgevingimplementatie) Haskell zou willen dat ik dat verlies. Maar wat biedt het in ruil? Enige consistentie? Waarom zou een Prolog-programmeur zich aanmelden voor filosofisch micromanagement?
Het enige dat Haskell wil is dat ik mijn capaciteiten verlies? Dat lijkt een slechter huwelijk als ik een huwbare programmeur was die ik niet beter had geweten.
Haskell heeft een “cultus” van indoctrinatie. Misschien voor de meeste OO-programmeurs, omdat ze Haskell nog steeds zouden zien als een opwaartse beweging naar echte generieke geneesmiddelen.