Prolog est-il professionnellement utile?

15

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 mettre en œuvre quelque chose de professionnel?

Gursel Koca
la source
3
Prolog (et poplog) sont très bons pour le codage AI. Si vous ne faites pas de choses liées à l'IA de manière professionnelle / sérieuse, vous ne pouvez pas l'utiliser du tout. Comme un non-ingénieur peut ne jamais utiliser MATLAB sérieusement.
glasnt
1
Bonne question. Prolog est le premier langage de programmation enseigné en linguistique computationnelle à Uni Potsdam, mais après cela, nous ne l'utilisons pas vraiment beaucoup, même si nous sommes assez bons dans ce domaine. C'est dommage. Chaque fois que je vois une question comme "Comment utiliser un accumulateur" ou "Comment obtenir toutes les réponses possibles" sur StackOverflow, cela me fait me demander où sont les utilisateurs professionnels réels - la plupart des choses semblent être des devoirs. Ou peut-être que la compétence Prolog vous transforme en un robot qui n'a jamais de questions.
Felix Dombek
J'ai entendu parler d'un système de détection de pannes écrit en Prolog et mis en œuvre quelque part en Autriche (Klagenfurt?). D'après ce qui m'a été dit, le produit était assez bon et vendu aux clients. Si vous considérez cela comme "professionnellement utile", la réponse est "oui".
Giorgio

Réponses:

12

À 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 tous 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 d'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é.

Steve314
la source
Débutant en IA / prologue ici. Des ressources en ligne que vous recommanderiez?
yati sagade du
@yati - Essayez amzi.com/AdventureInProlog/advtop.php - Une fois, j'ai parcouru un tutoriel sur le site d'Amzi qui semblait OK pour autant que je m'en souvienne, mais c'était il y a très longtemps. Tout ce que j'ai regardé récemment (probablement les 5 dernières années) pour Prolog est le livre sur l'IA que j'ai mentionné dans cette réponse. Vous devriez rechercher / poser une question ici plutôt que de poster des commentaires, en particulier des commentaires ajoutés aux réponses écrites par quelqu'un qui est fondamentalement un débutant à long terme de toute façon. Prolog est quelque chose que je regarde rarement et dans très peu de profondeur - sinon j'aurais cessé d'être un débutant il y a une décennie ou plus.
Steve314
10

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 également d'importants morceaux de code sont écrits en C ++ et Prolog, tous les composants sont déployés et intégrés à l'aide d'UIMA.

Kate Gregory
la source
7

Je sais que les programmeurs d'intelligence artificielle l'utilisent ..... parce que j'ai suivi un cours Prolog dans ma classe d'intelligence artificielle, mais je n'ai pas vu grand-chose d'autre à ce sujet. voici une question similaire avec des réponses lotsa! /programming/130097/real-world-prolog-usage

Communauté
la source
6

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.

SK-logic
la source
2

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.

Jé Queue
la source
2

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

GSto
la source
1

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 des 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 aléatoire de l'utilisateur 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 j'aspire au jour où, au moins certains aspects des programmes commerciaux se sont avérés corrects en tant que pratique standard.
Chrissy Flangé Allen
la source
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 bien avec un langage déclaratif comme Prolog.

Il est également largement utilisé dans la vérification formelle du matériel et des logiciels (académique et probablement professionnel, 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.

sakisk
la source
0

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 compliquées sur des choses comme les adresses de transfert, les boîtes postales par rapport à l'adresse postale, etc., et ces règles sont également formulées dans Prolog pour une maintenance facile.

ComputationalBruno
la source