kielenä 9. joulukuuta 2010
Historia kielenä Historia Sovelluksia kehitettiin vuonna 1972 Kehittäjinä ranskalaiset Pääkehittäjä Alain Colmerauer Philippe Roussel programmation en logique Robert Kowalski logiikka Ensimmäiset toteutukset tulkkeja Warren Abstract Machine 1983 David H. D. Warren Edinburgh ISO 1995
Sovelluksia kielenä Historia Sovelluksia Japaniset käyttivät ia Viidennen sukupolven tietokoneen suunnittelussa 1980-luvun alussa Projekti kuitenkin kuoli ja kuopattiin Ohjelmointikieli Erlangin ensimmäinen versio illa Perinteinen kieli tekoälyjen kehitykseen Luonnollisen kielen prosessointi (natural language processing) Akateemisessa käytössä Ohjelmakomponentit Java- tai C-interfacen kautta
Paradigmat kielenä Paradigma ja ominaisuudet Päättelyjärjestys Deklaratiivinen ohjelmointi in säännöt ja faktat Logiikkaohjelmointi Ohjelma ratkaistaan yksinomaan sääntöjen perusteella Päättely
Paradigmat kielenä Paradigma ja ominaisuudet Päättelyjärjestys Deklaratiivinen ohjelmointi in säännöt ja faktat Logiikkaohjelmointi Ohjelma ratkaistaan yksinomaan sääntöjen perusteella Päättely Olioparadigma SWI-, Visual,... Rinnakkainen paradigma Useat toteutukset tukevat säikeitä Imperatiivinen paradigma??
Tyypitys kielenä Paradigma ja ominaisuudet Päättelyjärjestys Tyypittömyys Erilaisia rakenteita: atomit, kokonaisluvut, liukuluvut, compound-tyypit, listat, merkkijonot Muuttujat
Päättelyjärjestys kielenä Paradigma ja ominaisuudet Päättelyjärjestys Tarkoin määritelty Kokeilee järjestyksessä eri vaihtoehtoja saada väittämä todeksi Jos huomaa vaihtoehdon mahdottomaksi, palaa takaisin (backtracking)
Päättelyn logiikka kielenä Paradigma ja ominaisuudet Päättelyjärjestys Jos ei löydä tapaa saada väittämä todeksi, se on silloin epätosi issa totuusarvot ovatkin true ja fail vs. logiikassa yleensä käytetyt true ja false Tästä syystä yksittäinen sääntö, joka periaatteessa on implikaatio, käyttäytyykin kuin ekvivalenssi
kielenä Paradigma ja ominaisuudet Päättelyjärjestys Päättelyjärjestys määritelty tarkasti!, cut, laskennan tehostamiseksi Imperatiiviset repeat/0, ->/2, ;/2 IO-operaatiot sujuvat kyllä tell, write & see, read Socket-rajapinta (GNU ): irc :- hostname_address( irc.freenode.org, HostAddress), socket( AF_INET, Socket), socket_connect(socket, AF_INET (HostAddress, 6667), _, StreamOut), write(streamout, USER lamperi 0 0 :Toni Fadjukoff ), nl(streamout), write(streamout, NICK ProLamperi ), nl(streamout), write(streamout, JOIN #gprolog ), nl(streamout), write(streamout, PRIVMSG #gprolog :Hello World! ), nl(streamout), write(streamout, QUIT :Goodbye World! ), nl(streamout), socket_close(socket).
Vertailua kielenä Vertailua Mielipide ia voi verrata funktionaalisiin (deklaratiivisiin kieliin) Kuitenkin issa eri logiikka (päättely) in eri murteet in eri toteutukset Ei pärjää imperatiivisessa ohjelmoinnissa imperatiivislle kielille
Mielipide kielenä Vertailua Mielipide Mukava, yksinkertaisen looginen Ei ole kauhean vaikea edes imperatiivisiin asioihin ;) Kannattaa käyttää silti mielummin johonkin, missä in päättelykyvyistä on hyötyä.
Kiitos kielenä Vertailua Mielipide Kiitos mielenkiinnosta. mielenkiintoinen(prolog). paljonkysymyksia(aihe) :- mielenkiintoinen(aihe).