web-dev-qa-db-fra.com

Prolog est-il professionnellement utile?

J'ai appris Prolog il y a de nombreuses années à l'université. Au cours de ma vie professionnelle, je n'ai jamais eu besoin d'utiliser Prolog. Ai-je raté quelque chose de spécial?

Pour autant que je m'en souvienne, Prolog nécessite une mentalité complètement différente de celle des langages de programmation les plus importants.

Prolog est-il vraiment utilisé pour implémenter quelque chose de professionnellement utile?

15
Gursel Koca

À mon avis, l'apprentissage des bases de Prolog est très utile, que vous l'utilisiez ou non dans le monde réel. Il est également très utile de comprendre les idées de base qui sous-tendent l'unification et comment une implémentation (triviale et inefficace) pourrait être gérée.

Si vous avez un problème qui serait mieux résolu en utilisant la logique déclarative, vous devriez idéalement le reconnaître et savoir (si vous avez le choix) utiliser les bons outils pour ce travail.

Cependant, je suis d'accord que Prolog a besoin d'un état d'esprit très différent des langages impératifs conventionnels, et également d'un état d'esprit très différent des langages fonctionnels. Au-delà d'un certain point, cela semble nécessiter beaucoup d'expérience (comme avec n'importe quoi), et il y a même beaucoup de connaissances "manuels" qui font que mon cerveau dribble de mes oreilles.

Mon impression est ... nous manquons probablement les deux quelque chose de spécial dans une certaine mesure, mais il ne serait pas pratique de consacrer du temps à apprendre même une connaissance raisonnablement complète au niveau des manuels pour Prolog, sans parler de essayer de développer une expérience du monde réel, sauf si vous envisagez une éventuelle carrière en programmation logique.

J'ai récemment lu un livre sur l'IA et les systèmes experts publié en 1989 - une chance dans une librairie d'occasion. Il s'agit en grande partie d'un didacticiel spécialisé sur LISP et Prolog. Certes, la plupart de ce qu'il couvre n'a pas été si impressionnant depuis longtemps (recherche, heuristique, etc.), mais c'est toujours très intéressant, et l'OMI vaut la peine d'investir un peu de temps.

Des livres plus récents qui décrivent spécifiquement Prolog seraient mieux pour apprendre la langue, mais le risque est alors que votre cerveau dribble de vos oreilles quelque part dans le matériel intermédiaire à avancé.

12
Steve314

Ce n'était pas moi, mais en supposant que la question pourrait être "quelqu'un a-t-il mis en œuvre quelque chose de sérieux avec Prolog?" cela pourrait compter:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watson est alimenté par 10 racks de serveurs IBM Power 750 exécutant Linux, et utilise 15 téraoctets de RAM, 2 880 cœurs de processeur et est capable de fonctionner à 80 téraflops. Watson a été écrit principalement en Java mais aussi des morceaux de code importants sont écrits en C++ et Prolog, tous les composants sont déployés et intégrés en utilisant UIMA.

10
Kate Gregory

Je connais A.I. les programmeurs l'utilisent ... parce que j'ai suivi un cours Prolog dans mon A.I. classe mais à part ça, je n'ai pas vu grand-chose d'autre à dire à ce sujet. voici une question similaire avec des réponses lotsa! https://stackoverflow.com/questions/130097/real-world-prolog-usage

7
user6791

Prolog est idéal pour un prototypage rapide. Par exemple, dans http://www.cri.ensmp.fr/classement/doc/A-381.pdf une transformation SSA pour GCC est d'abord implémentée dans Prolog, puis dans C.

J'utilise Prolog à l'intérieur des compilateurs pour une implémentation rapide et sale des systèmes de types, certaines optimisations et vérifications sémantiques, et je réécris ce code Prolog en quelque chose d'impératif uniquement si ses performances ne sont pas acceptables.

6
SK-logic

Vous avez répondu assez rapidement, mais j'ai utilisé Prolog au milieu des années 90 pour concevoir des calculateurs de taux d'assurance qui détermineraient pour nous certains segments de clientèle (lire le risque) qui cadreraient avec les taux de prime. C'est quelque chose que vous ne verriez pas nécessairement au jour le jour, mais qui a sûrement affecté vos primes IARD au fil des ans.

2
Jé Queue

Selon (cette FAQ) 1 Certaines parties de Watson, la machine IBM qui jouait Jeopardy, ont été écrites en prologue. (voir question # 6)

2
GSto

J'ai utilisé Prolog professionnellement à une (importante) poignée d'occasions (système expert de diagnostic; transformation HTML; appartenance à un ensemble). J'ai une profonde affection pour la langue, donc, oui, il y a un parti pris ici, mais il est facile d'être objectif quant au moment où Prolog est (plus/tout aussi) approprié - vous devez vraiment traiter structures récursives; le meilleur exemple que je puisse donner est une table de base de données relationnelle, mais il existe d'innombrables autres exemples (il est probablement plus facile d'énumérer des contre-exemples tels que l'entrée utilisateur aléatoire ou (la plupart) des fonctions mathématiques (cependant, de nombreuses fonctions mathématiques ont une structure récursive et donc sont parfaitement appropriés (transformée de Fourier rapide discrète, par exemple)).

Mais, bien sûr, très peu de `` systèmes de bout en bout '' peuvent être définis uniquement en termes de traitement de structures récursives (exception: théorème prouvant - mais c'est un exercice plutôt académique *), il est donc heureux qu'un processus prologue peut être greffé sur un "processus impératif plus standard" utilisant toutes sortes de techniques différentes (peu importe quoi, mais une interface de service Web est probablement généralement appropriée); afin que vous puissiez gérer l'interface utilisateur, le traitement des événements aléatoires, etc., puis les transférer si nécessaire (pour effectuer des requêtes de base de données complexes ou un certain nombre de choses que vous pourriez souhaiter faire avec vos structures récursives). Je trouve que cela fonctionne magnifiquement mieux que, par exemple, LINQ.

Alors, saisissez vos structures récursives par les bits sensibles et écrivez un Prolog charmant, propre, élégant et maintenable! :)

PS quand je n'utilise pas Prolog, je retombe en C #

  • Bien que je désire ardemment le jour où, au moins certains aspects de, les programmes commerciaux se sont avérés corrects comme pratique standard.
1

Essayez d'écrire un solveur sudoku dans votre langue préférée, puis vérifiez comment cela se fait dans Prolog. En général, tout problème CLP convient à Nice avec un langage déclaratif comme Prolog.

Il est également largement utilisé dans la vérification formelle du matériel et des logiciels (académiquement et probablement professionnellement mais je n'ai aucune référence aux entreprises).

Enfin, Erlang est profondément influencé par Prolog, avec la tolérance aux pannes et la concurrence à l'esprit.

1
sakisk

Le logiciel qui lit et trie une grande partie du courrier aux États-Unis et dans plusieurs autres pays est écrit en Prolog, à l'aide d'un compilateur hautement optimisé. La syntaxe des adresses e-mail est écrite dans des grammaires à clauses définies, ce qui facilite la maintenance et simplifie l'adaptation du lecteur aux conventions des différents pays et utilisateurs industriels. Les services postaux ont souvent des ensembles de règles complexes sur des choses comme les adresses de réexpédition, les boîtes postales par rapport à l'adresse postale, etc., et ces règles sont également formulées dans Prolog pour une maintenance facile.

0
ComputationalBruno