Paras vastaus
Emacs aina alaspäin!
Vakavaan Prolog-kehitykseen suosittelen GNU Emacs Prolog-tilassa, jota ylläpitää Stefan Bruda. SWI-Prolog-kotisivulla kerrotaan, miten se asetetaan, ja se sisältää myös viitteitä jatkoaineistoon:
SWI-Prologin käyttö GNU Emacsin kanssa
Itse asiassa SWI-Prolog toimittaa jopa oman Emacs-kloonin, josta on hyötyä pienempiin muokkaustehtäviin. Voit käynnistää sen käyttämällä? – emacs.
Katso muutama vaihtoehtoinen ehdotus tutustumalla tähän keskusteluun:
Mikä ”hyvä” Prolog IDE for Linux?
Vastaus
Prolog ei ole kuolemassa. Yleensä se opetetaan kaikille Comp Sci -opiskelijoille, jotka työskentelevät tohtorin tutkimuksen parissa! Kysymyksesi saattaa kuitenkin olla osa johtuu siitä, että olet huomannut siitä huolimatta, että kaikki ovat pakotettuja oppimaan sitä, vasta kirjoitettujen Prolog-koodien määrä on alle alle vähemmän ”kokeiltuja ja todellisia” kieliä? Arvioi kahden viime vuoden aikana, kuinka monta uutta projektia tai blogiviestiä on saapunut: Clojure, F #, Brain4uck, Go, Cobra, miniKanren ja Scala. Valitettavasti pienimmätkin näistä ovat ylittäneet vasta aloitettujen Prolog-kirjastojen ja -projektien määrän viimeisen 10 vuoden aikana! (Anteeksi, jos jotkut näistä kielistä eivät ole kovin nuoria .. mutta mieti, kuinka paljon pitoa kullakin on saavutettu niin lyhyessä ajassa)
Luulen, että seuraavat kaksi vuotta Prolog ylittää vähintään kaksi tai kolme kieltä yllä olevat kielet blogiviesteissä ja uusissa projekteissa.
Lisää ajatuksia
Kirjoitan yhteistä lisp-kääntäjää Prologiin .. se näyttää olevan noin kahden kuukauden projekti. Se toimii siten, että kääntäjä muuntaa lisp-lähdekoodin Prologiksi ja optimoi sitten prologikoodin kuin antaa taustajärjestelmän kääntää prologin. Tämä tietovirta näyttää jo vaikealta Haskellille tai Idrisille. Minusta todellinen perustavanlaatuinen kysymys on, että kaksi viimeksi mainittua kieltä eivät ole riittävän ilmeikkäitä kuvaamaan sitä, mitä juuri sanoin deklaratiivisesti yksityiskohtien tasolla, jotta se tapahtuisi.
Tässä on esimerkki ”kuvaavista yksityiskohdista” pakettijärjestelmä) https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/package.pl
Tai optimoija: https://github.com/TeamSPoon/wam\_common\_lisp/blob/master/prolog/wam\_cl/mizepro.pl
Onko Haskell helppo saada optimoimaan lähde ennen suoritusta? Odotan myös, että Haskellissa se tarvitsee jonkinlaisen Haskellin väliesityksen, jota se voi tulkita. Luultavasti ei kuitenkaan ole liian vaikeaa kirjoittaa Lisp-tulkki Haskelliin .. kääntäjä on paljon enemmän työtä?
Haskellin indoktrinaatiotasot soveltuvat hyvin akateemisiin tarkoituksiin, ja sen seurauksena Haskell on enemmän Ph.D. Trophy-vaimot kuin Prolog. On paljon monimutkaisempaa ja käsikirjoja siitä, miten miellyttää aviomiehiä (Haskell-ohjelmoija lukee HoTT-kirjan HoTT-kirjan jälkeen). Mutta luulen, että he eivät ehkä tajua olevansa väärinkäyttäjäsuhteessa: mikä on väärin, se on sitä, että he ajattelevat (toivovat) heidän aviomies, nimeltään Haskell, myöntää heille samat etuoikeudet kuin Prologin vaimoilla (vie heidät samoille lomille) (He eivät ole tietoisia prologien vaimojen todellisesta olemassaolosta, vaikka he ovatkin aviomiehensä propagandan alaisia (kuten tässä säikeessä nähdään) ) …. Get-oikeudet vain, jos ne toimivat erittäin hyvin. Luulen, että tällainen avioliitto sopisi vain alaikäiselle. Mitä he eivät tiedä, he eivät koskaan ole ”tarpeeksi hyviä” saadakseen samat lomat (ohjelman ominaisuudet), kun heille kerrotaan, että tällaiset toiveet ovat vääriä ja saatetaan jäähtymään katsomalla toinen Wadler-video.
Älkää ymmärtäkö minua väärin, Prologilla on indoktrinaatio. . ”älä käytä leikkauksia .. älä käytä setarg / tai asserta /” Mutta Haskellissa, jos tarkennat metodologiasi, huomaat, että aikomuksesi on väärä. Prologissa, jos tarkennat metodologiasi, huomaat, että aikomuksesi on ei ollut koskaan väärässä.
Lisää toimintahäiriösuhteen näkökohtia:
Sekä Haskell että Prolog ovat deklaratiivisia järjestelmiä tilojen lieventämisen kuvaamiseksi. Molempien kielten ohjelmoijan näyttää olevan kehitettävä kieli datasiirtymien ympärillä. Prologissa se ilmaistaan ehdotusten kautta. (Mutta Haskellissa näiden ehdotusten on oltava tyyppejä)
Molemmat rakentavat jyrsijän jyrkästi esteradan paperipyyhkeillä … Taistelu on älyllisesti saada jyrsijä liikkumaan erittäin älykkäillä tavoilla. Prologissa rakennat wc-rullat, sitten teet WC-rullan generaattoreita, joita kutsutaan meta-predikaateiksi rakentajien laskennan sijasta.
Minusta Haskellilla on ylimääräisestä loogisista ehdotuksistani prologista täytyy tulla tyyppejä (yksi per cla käyttää). Vaikuttaa siltä, että se saattaa olla melko tylsiä (wc-rullilla on ainutlaatuiset nimet) (joidenkin prologilausekkeiden kirjoittaminen olisi vaikeaa) Koska suurin osa hämmästyttäviä asioita tekevistä prologiohjelmistani sisältää tuhansia lausekkeita. Ainoa syy tehdä tästä minulle vaikeaa olisi helpottaa tyyppitarkastajaa?Etkö ole varma, että nämä ylimääräiset kierrokset epätoivon takana auttaisivat minua. Minun ei myöskään tarvitse pakottaa jokaista lausetta (ehdotusta) sopimaan johonkin tyyppiseen järjestelmään (tyyppiin)!
Prologissa suunnittelen tyyppijärjestelmääni mansetista poispäin dynaamisesti .. ei-päättyvä (rajattomat sitomattomat termit, joita käytän Lisp-ympäristötoteutuksessa) Haskell haluaa minun menettävän sen. Mutta mitä se tarjoaa vastineeksi? Jonkin verran johdonmukaisuutta? Miksi Prolog-ohjelmoija liittyisi filosofiseen mikrohallintoon?
Kaikki mitä Haskell haluaa on, että menetän kykynsä? Se tuntuu pahemmalta avioliitolta, jos olisin henkinen ohjelmoija, en olisi tiennyt paremmin.
Haskellilla on indoktrinaation ”kultti”. Ehkä useimmille OO-ohjelmoijille, koska he näkisivät Haskellin edelleen nousevana kohti todellisia geneerisiä aineita.