Prolog vs Lisp
Prolog ja Lisp on tänapäeval kaks kõige populaarsemat AI (tehisintellekti) arvutiprogrammeerimiskeelt. Need on üles ehitatud kahe erineva programmeerimisparadigmaga. Prolog on deklaratiivne keel, samas kui Lisp on funktsionaalne keel. Mõlemat kasutatakse erinevate tehisintellekti probleemide lahendamiseks, kuid Prologi kasutatakse kõige enam loogika- ja arutlusprobleemide lahendamiseks, samas kui Lispi kasutatakse kiirete prototüüpide loomise vajadustega seotud probleemide lahendamiseks.
Prolog
Prolog on AI programmeerimiskeel. See kuulub loogiliste programmeerimiskeelte perekonda. Prolog on deklaratiivne keel, milles arvutused kantakse üle suhetele (mis esindavad programmiloogikat), mis on määratletud reeglite ja faktidena.1970. aastal välja töötatud prolog on üks vanimaid loogilisi programmeerimiskeeli ja tänapäeval üks populaarsemaid AI programmeerimiskeeli (koos Lisp-iga). See on tasuta keel, kuid saadaval on palju kaubanduslikke variante. Algselt kasutati seda loomuliku keele töötlemiseks, kuid nüüd kasutatakse seda mitmesuguste ülesannete jaoks, nagu ekspertsüsteemid, automaatvastamissü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. Arvud võivad olla ujuv- või täisarvud. Prolog toetab loendeid ja stringe üksuste kogumina. Prolog defineerib suhted klauslite abil. Klauslid võivad olla kas reeglid või faktid. Prolog võimaldab oma rekursiivseid predikaate põhjalikult itereerida.
Lisp
Lisp on arvutiprogrammeerimiskeelte perekond. Ja kõige kuulsamad Lispi murded, mida tänapäeval üldotstarbeliseks programmeerimiseks kasutatakse, on Common Lisp ja Scheme. Nimi LISP pärineb sõnast "LIST Processing" ja nagu vihjab, on Lispi peamine andmestruktuur lingitud loend. Tegelikult on kogu allikas kirjutatud loendite abil (kasutades eesliidete märkimist) või õigemini sulgudes olevaid loendeid (nimetatakse s-väljenditeks). Näiteks funktsioonikutse kirjutatakse kujul (f a1 a2 a3), mis tähendab, et funktsiooni f kutsutakse, kasutades funktsiooni sisendargumentidena a1, a2 ja a3. Seetõttu nimetatakse seda avaldistele orienteeritud keeleks, kus kõik andmed ja kood on kirjutatud avaldistena (Lisp-is pole avaldiste ja väidete vahel vahet). See kena funktsioon on Lispi jaoks väga eriline, kuna seda saab kasutada abistavate makrode kirjutamise abil keele laiendamiseks käsilolevale probleemile. Kuigi programmeerijad kasutavad silmuste väljendamiseks saba-rekursiooni, sisaldavad kõik sageli esinevad Lispi dialektid juhtimisstruktuure, nagu silmus. Lisaks on Common Lispil ja skeemil mapcar ja map, mis on funktsioonide näited, mis pakuvad silmusfunktsiooni, rakendades funktsiooni järjestikku kõikidele selle elementidele ja kogudes seejärel tulemused loendisse.
Mis vahe on Prologil ja Lispil?
Kuigi Prolog ja Lisp on kaks kõige populaarsemat AI programmeerimiskeelt, on neil mitmeid erinevusi. Lisp on funktsionaalne keel, Prolog aga loogilise programmeerimise ja deklaratiivsed keeled. Lisp on oma kiire prototüüpide loomise ja makrofunktsioonide tõttu väga paindlik, nii et see võimaldab tegelikult keelt laiendada, et see vastaks probleemile. Tehisintellekti, graafika ja kasutajaliideste valdkonnas on Lispi selle kiire prototüüpimisvõime tõttu laialdaselt kasutatud. Kuid tänu oma sisseehitatud loogilise programmeerimise võimetele sobib Prolog ideaalselt sümboolse arutluskäigu, andmebaasi ja keele parsimise rakendustega tehisintellekti probleemide lahendamiseks. Ühe või teise valik sõltub täielikult lahendamist vajava AI probleemi tüübist.