Je n'ai pas encore entendu parler des utilisations d'un langage de programmation logique (comme Prolog) dans l'industrie du logiciel, et je ne connais pas son utilisation dans la programmation de loisirs ou les projets open source. Il (Prolog) est utilisé dans une certaine mesure comme langue académique (pourquoi est-il utilisé dans le milieu universitaire?).
Cela me fait me demander pourquoi utiliser la programmation logique et pourquoi pas? Pourquoi n'obtient-il aucune utilisation détectable dans l'industrie?
Nous l'avons utilisé pour construire des analyseurs. Il était plus facile de travailler avec que lex / yacc.
C'est sans réponse. Que signifie «détectable»? Qui doit obtenir le mémo de détection?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
Demandez à Meridian Software son offre de prologue si vous voulez des faits.
Cependant, j'ai rencontré certains obstacles à l'entrée.
Premièrement, le prologue peut être lent. Lorsqu'il y a beaucoup de règles candidates et aucune opération de coupe simple pour restreindre l'espace de recherche, cela peut prendre un certain temps pour faire quelque chose.
Deuxièmement, le prologue n'est pas procédural ou fonctionnel, donc de nombreux programmeurs rechignent à l'utiliser. (Fait intéressant, certains programmeurs rechignent également à utiliser SQL. D'ailleurs, certains programmeurs utiliseront SQL à contrecœur et feront des choses étranges comme éviter les opérations de jointure, ou affirmer que
COUNT(*)
c'est magiquement inefficace.)Troisièmement, le prologue nécessite une réflexion assez claire sur les différents cas. La programmation procédurale peut être bâclée et fonctionner de manière fiable. Les déclarations non exécutables sont acceptables.
Ce qui suit est acceptable dans la plupart des cercles.
Ce genre de pensée trouble vous cause des ennuis en prologue.
la source
Un problème est que Prolog ne programme pas vraiment dans une logique de prédicat de premier ordre, ce qui est intraitable sur le plan informatique (je ne me souviens pas dans quelle mesure, mais ce n'est pas dans NP, et si vous ajoutez de l'arithmétique, c'est formellement indécidable). C'est donc une simplification.
En logique, une proposition peut être prouvée vraie, prouvée fausse ou non prouvée de toute façon. Prolog a seulement prouvé et non prouvé, «non prouvé» signifiant généralement faux. De plus, l'ordre des clauses Prolog peut affecter l'exécution, ce qui n'est pas le cas pour les clauses logiques. Au cours de mon utilisation, j'ai commencé à penser à Prolog comme un langage d'appariement de motifs plus qu'un langage logique.
Par conséquent, la programmation Prolog ne dépend pas tant de l'exactitude logique que du langage Prolog lui-même. C'est un langage utile à certains égards, mais il n'est pas du tout courant, et il n'a pas eu les avantages de l'outil et de la communauté d'un langage comme C ++.
la source