Prologi ja Lispi erinevus

Prolog vs Lisp

Prolog ja Lisp on tänapäeval kaks kõige populaarsemat AI (tehisintellekti) programmeerimiskeelt. Need on üles ehitatud kahe erineva programmeerimisparadigma abil. Prolog on deklaratiivne keel, Lisp aga funktsionaalne keel. Mõlemat kasutatakse erinevate AI probleemide jaoks, kuid Prologit kasutatakse kõige rohkem loogika- ja põhjendusprobleemide jaoks, samas kui Lispi kasutatakse kiire prototüübivajadusega probleemide jaoks.

Prolog

Prolog on AI programmeerimiskeel. See kuulub loogiliste programmeerimiskeelte perekonda. Prolog on deklaratiivne keel, milles arvutused kantakse üle, kasutades päringuid suhetest (mis esindavad programmi loogikat), mis on määratletud reeglite ja faktidena. 1970. aastal välja töötatud prolog on üks vanimaid loogika programmeerimiskeeli ja üks populaarsemaid AI programmeerimiskeeli tänapäeval (koos Lispiga). See on tasuta keel, kuid saadaval on palju kommertslikke variante. Esmalt kasutati seda loomuliku keele töötlemiseks, kuid nüüd kasutatakse seda mitmesuguste ülesannete jaoks, näiteks ekspertsüsteemid, automatiseeritud vastamissüsteemid, mängud ja täiustatud juhtimissüsteemid. Prologil on ainult üks andmetüüp, mida nimetatakse terminiks. Termin võib olla aatom, arv, muutuja või liittermin. Numbrid võivad olla ujuk või täisarv. Prolog toetab loendeid ja stringe kui üksuste kogumit. Prolog määratleb suhted klauslite abil. Klauslid võivad olla nii reeglid kui ka faktid. Prolog võimaldab iteratsiooni põhjalikult korrata.

Lisp

Lisp on arvutiprogrammeerimiskeelte perekond. Ja kõige kuulsamad tänapäeval üldotstarbeliseks programmeerimiseks kasutatavad Lispi murded on Common Lisp ja Scheme. Nimi LISP pärineb sõnast “LISt Processing” ja nagu see vihjab, on Lispi peamine andmestruktuur lingitud loend. Tegelikult kirjutatakse kogu allikas loendite (eesliidete märkimist kasutades) või korrektsemalt sulgudes olevate loendite (nn s-avaldiste) abil. Näiteks kirjutatakse funktsioonikõne järgmiselt (f a1 a2 a3), mis tähendab, et funktsiooni f kutsutakse funktsiooni sisestusargumentidena a1, a2 ja a3. Seetõttu nimetatakse seda väljenditele orienteeritud keeleks, kus kõik andmed ja kood kirjutatakse avaldistena (Lispis pole vahet avaldiste ja avalduste vahel). See kena funktsioon on Lispi jaoks väga eriline, kus seda saaks kasutada keele laiendamiseks käsilolevale probleemile, kirjutades kasulikke makrosid. Ehkki programmeerijad kasutavad silmuste väljendamiseks saba-rekursiooni, hõlmavad kõik sageli nähtud Lispi murded juhtimisstruktuure nagu silmus. Lisaks on Common Lispil ja skeemil funktsioonidest näitena toodud kaart ja kaart, mis pakuvad silmuste funktsionaalsust, rakendades funktsiooni järjestikku kõigile selle elementidele ja koguvad tulemused seejärel loendisse.

Mis vahe on Prologil ja Lispil??

Ehkki Prolog ja Lisp on kaks kõige populaarsemat AI programmeerimiskeelt, on neil erinevaid erinevusi. Lisp on funktsionaalne keel, Prolog aga loogiline programmeerimine ja deklaratiivsed keeled. Lisp on kiire prototüübi ja makroomaduste tõttu väga paindlik, nii et tegelikult võimaldab see keelt laiendada, et see sobiks käsiloleva probleemiga. AI, graafika ja kasutajaliideste valdkonnas on selle kiire prototüüpimisvõimaluse tõttu Lispi laialdaselt kasutatud. Sisseehitatud loogiliste programmeerimisvõimaluste tõttu sobib Prolog ideaalselt AI probleemide jaoks sümboolsete mõttekäikude, andmebaaside ja keele parsimise rakendustega. Ühe valik teise vahel sõltub täielikult lahendamist vajavate AI-probleemide tüübist.