I. Sakellariou, N. Bassiliades, P. Kefalas, D. Stamatis, 2015. Logic Programming Techniques (in Greek - "Τεχνικές Λογικού Προγραμματισμού - Η Γλώσσα Prolog"). [ebook] Athens:Hellenic Academic Libraries Link. Available Online at: http://hdl.handle.net/11419/777
Ο Λογικός Προγραμματισμός (ΛΠ) ανήκει στις πλέον ενδιαφέρουσες σχολές προγραμματισμού, σημαντικά διαφορετική από τις “κλασικές” σχολές του προστακτικού και του αντικειμενοστραφούς προγραμματισμού. Η χρήση της Μαθηματικής Λογικής ως εργαλείο αφαίρεσης για περιγραφή υπολογισμών και η εκμετάλλευση των αποδεικτικών διαδικασιών της, οδηγούν σε συμπαγή προγράμματα τα οποία βρίσκουν εφαρμογές σε πολύπλοκα και ενδιαφέροντα πεδία, όπως είναι η Τεχνητή Νοημοσύνη και το Σημασιολογίκο Ιστό. Όμως, αυτή η υψηλού επιπέδου προσέγγιση στον προγραμματισμό δημιουργεί προβλήματα σε εκείνους που πρώτη φορά έρχονται σε επαφή με τον ΛΠ , αφενός γιατί απαιτεί να υιοθετήσουν μια δηλωτική προσέγγιση στην ανάπτυξη προγραμμάτων “ξένη” προς αυτή των κυρίαρχων γλωσσών, και αφετέρου, γιατί απαιτείται η εκμάθηση τεχνικών αναπαράστασης και επίλυσης προβλημάτων που αν και είναι γενικά εφαρμόσιμες στον προγραμματισμό, δεν χρησιμοποιούνται συχνά στις υπόλοιπες σχολές, με κλασικό παράδειγμα την αναδρομή.
Το παρόν βιβλίο φιλοδοξεί να καλύψει τις παραπάνω απαιτήσεις και να αποτελέσει το βασικό σύγγραμμα για οποιονδήποτε επιθυμεί να εντρυφήσει στην τέχνη και στις τεχνικές του ΛΠ. Έχοντας ως όχημα τον κυριότερο εκπρόσωπο της σχολής ΛΠ, τη γλώσσα Prolog, το βιβλίο έχει στόχο: (α) να αναφέρει σύντομα τα θεωρητικά θεμέλια του ΛΠ, δηλαδή την Κατηγορηματική Λογική Πρώτης Τάξης και την αρχή της ανάλυσης, (β) να παρουσιάσει σε βάθος την γλώσσα προγραμματισμού Prolog, τα διαθέσιμα κατηγορήματα και πως αυτά εντασσόμενα σε τεχνικές ΛΠ προγραμματισμού αποτελούν ισχυρά εργαλεία για την επίλυση προβλημάτων, (γ) να παρουσιάσει εφαρμογές όπως είναι η ανάπτυξη ευφυών συστημάτων στις οποίες ο Λογικός Προγραμματισμός προσφέρει σημαντικά πλεονεκτήματα, και τέλος, (δ) να αναπτύξει προγραμματιστικές δεξιότητες του αναγνώστη, όπως είναι η αναδρομή και η ιεραρχική ανάπτυξη προγραμμάτων, εφαρμόσιμες σε όλες τις σχολές προγραμματισμού.