Prolog è professionalmente utile?


15

Ho imparato Prolog molti anni fa all'università. Durante la mia vita professionale, non ho mai avuto bisogno di usare Prolog. Ho perso qualcosa di speciale?

Per quanto ricordo Prolog richiede una mentalità completamente diversa rispetto ai linguaggi di programmazione di spicco.

Prolog è davvero mai utilizzato per implementare qualcosa di professionalmente utile?


3
Prolog (e poplog) sono ottimi per la codifica AI. Se non stai facendo cose legate all'intelligenza artificiale in modo professionale / serio, potresti non usarlo affatto. Ad esempio come un non tecnico non può mai usare seriamente MATLAB.
glasnt

1
Buona domanda. Prolog è il primo linguaggio di programmazione insegnato in linguistica computazionale presso Uni Potsdam, ma dopo non lo usiamo molto, anche se siamo abbastanza bravi. È un peccato. Ogni volta che vedo una domanda come "Come si usa un accumulatore" o "Come posso ottenere tutte le risposte possibili" su StackOverflow, mi chiedo dove siano gli utenti professionali reali: la maggior parte delle cose sembrano compiti a casa. O forse la competenza Prolog ti trasforma in un robot che non ha mai domande.
Felix Dombek l'

Una volta ho sentito parlare di un sistema per il rilevamento dei guasti scritto in Prolog e implementato da qualche parte in Austria (Klagenfurt?) Secondo quanto mi è stato detto, il prodotto era abbastanza buono e veniva venduto ai clienti. Se lo consideri "utile dal punto di vista professionale", la risposta è "sì".
Giorgio,

Risposte:


12

A mio avviso, imparare le basi di Prolog è molto utile, indipendentemente dal fatto che lo userete mai nel mondo reale. Vale anche la pena comprendere le idee di base alla base dell'unificazione e come potrebbe essere gestita un'implementazione (banale e inefficiente).

Se hai un problema che sarebbe meglio risolvere usando la logica dichiarativa, dovresti riconoscerlo idealmente e sapere (se hai la scelta) di usare gli strumenti giusti per quel lavoro.

Tuttavia, sono d'accordo sul fatto che Prolog abbia bisogno di una mentalità molto diversa dai linguaggi imperativi convenzionali e anche di una mentalità molto diversa dai linguaggi funzionali. Al di là di un certo punto, sembra richiedere molta esperienza (proprio come con qualsiasi cosa), e c'è anche molta conoscenza da "libro di testo" che mi fa uscire il cervello dalle orecchie.

La mia impressione è ... probabilmente manciamo entrambi qualcosa di speciale in una certa misura, ma non sarebbe pratico dedicare il tempo all'apprendimento anche di una conoscenza a livello di libro di testo ragionevolmente completa per Prolog, per non parlare del tentativo di sviluppare l'esperienza del mondo reale , a meno che non stia considerando una possibile carriera di programmazione logica.

Recentemente ho letto un libro sull'intelligenza artificiale e sui sistemi esperti pubblicato nel 1989 - una scoperta fortunata in una libreria di seconda mano. In parte significativa, è un tutorial specializzato su Lisp e Prolog. È vero, la maggior parte di ciò che copre non è stata così impressionante per un po '(ricerca, euristica ecc.), Ma è ancora molto interessante e l'IMO è una cosa utile in cui investire un po' di tempo.

Libri più recenti che descrivono in modo specifico Prolog sarebbero migliori per l'apprendimento della lingua, ma il rischio è quindi che il cervello scivoli fuori dalle orecchie da qualche parte nel materiale intermedio-avanzato.


Principiante AI / prolog qui. Qualche risorsa online che consiglieresti?
Yati Sagade,

@yati - Prova amzi.com/AdventureInProlog/advtop.php - Una volta ho eseguito un tutorial sul sito Amzi che mi è sembrato OK per quanto mi ricordi, ma è stato molto tempo fa. Tutto ciò che ho visto di recente (probabilmente negli ultimi 5 anni) per Prolog è quel libro di intelligenza artificiale di cui ho parlato in questa risposta. Dovresti cercare / porre una domanda qui piuttosto che pubblicare commenti, in particolare i commenti aggiunti alle risposte scritte da qualcuno che è fondamentalmente un principiante a lungo termine comunque. Prolog è qualcosa che guardo di rado e con pochissima profondità, altrimenti avrei smesso di essere un novizio almeno dieci anni fa.
Steve314,

10

Non ero io, ma supponendo che la domanda potesse essere "qualcuno ha implementato qualcosa di serio con Prolog?" questo potrebbe contare:

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

Watson è alimentato da 10 rack di server IBM Power 750 che eseguono Linux e utilizza 15 terabyte di RAM, 2.880 core di processore ed è in grado di funzionare a 80 teraflop. Watson è stato scritto principalmente in Java, ma anche blocchi di codice significativi sono scritti in C ++ e Prolog, tutti i componenti sono distribuiti e integrati usando UIMA.


7

So che i programmatori di intelligenza artificiale lo usano ..... perché ho fatto un corso Prolog nella mia classe di intelligenza artificiale, ma a parte questo non ho visto molto altro a riguardo. ecco una domanda simile con tante risposte! /programming/130097/real-world-prolog-usage


6

Prolog è eccezionale per una prototipazione rapida. Ad esempio, in http://www.cri.ensmp.fr/classement/doc/A-381.pdf una trasformazione SSA per GCC viene prima implementata in Prolog e poi in C.

Sto usando Prolog all'interno dei compilatori per un'implementazione rapida e sporca di sistemi di tipo, certe ottimizzazioni e controlli semantici, e riscrivo quel codice Prolog in qualcosa di imperativo solo se le sue prestazioni non sono accettabili.


2

Mi hai risposto abbastanza rapidamente, ma ho usato Prolog a metà degli anni '90 per progettare calcolatori dei tassi assicurativi che determinerebbero per noi determinati segmenti di clientela (leggi il rischio) che rientrerebbero nelle tariffe premium. È qualcosa che non vedresti necessariamente giorno per giorno, ma sicuramente ha influenzato i tuoi premi P&C nel corso degli anni.


2

Secondo (Questa FAQ) 1 Parti di Watson, la macchina IBM che interpretava Jeopardy, erano scritte in prologo. (vedi domanda n. 6)


1

Ho usato Prolog professionalmente in una (significativa) manciata di occasioni (sistema diagnostico esperto; trasformazione HTML; impostare l'appartenenza). Ho un profondo affetto per la lingua, quindi sì, c'è parzialità qui, ma è facile essere obiettivi riguardo a quando Prolog è (più / altrettanto adatto) - devi davvero elaborare strutture ricorsive ; il miglior esempio che posso dare è una tabella di database relazionale ma ci sono innumerevoli altri esempi (probabilmente è più facile enumerare contro-esempi come input casuale dell'utente o (la maggior parte) funzioni matematiche (tuttavia, molte funzioni matematiche hanno una struttura ricorsiva e quindi sono perfettamente appropriati (trasformata di Fourier veloce discreta, per esempio)).

Ma, naturalmente, pochissimi "sistemi end-to-end" possono essere definiti esclusivamente in termini di elaborazione di strutture ricorsive, (eccezione: dimostrazione del teorema- ma questo è un esercizio piuttosto accademico *), quindi è una fortuna che un processo prologo può essere innestato in un "processo imperativo più standard" usando ogni sorta di tecniche diverse (non importa cosa, ma probabilmente un'interfaccia web-service è generalmente adatta); in modo da poter gestire l'interfaccia utente, l'elaborazione di eventi casuali ecc. e poi la consegna quando necessario (per eseguire query complesse sul database o qualsiasi numero di cose che potresti voler fare con le tue strutture ricorsive). Trovo che funzioni magnificamente, meglio di, ad esempio, LINQ.

Quindi prendi le tue strutture ricorsive dai bit sensibili e scrivi alcuni Prolog adorabili, puliti, eleganti e mantenibili! :)

PS quando non sto usando Prolog, torno a C #

  • Anche se desidero ardentemente il giorno in cui, almeno alcuni aspetti, i programmi commerciali si dimostrano corretti come pratica standard.

1

Prova a scrivere un risolutore di sudoku nella tua lingua preferita, quindi controlla come è fatto in Prolog. In generale, qualsiasi problema CLP si adatta bene a un linguaggio dichiarativo come Prolog.

Viene anche ampiamente utilizzato nella verifica formale di hardware e software (accademicamente e probabilmente professionalmente, ma non ho riferimenti alle aziende).

Infine, Erlang è profondamente influenzato da Prolog, tenendo presente la tolleranza agli errori e la concorrenza.


0

Il software che legge e ordina gran parte della posta negli Stati Uniti e in molti altri paesi è scritto in Prolog, usando un compilatore altamente ottimizzato. La sintassi degli indirizzi di posta è scritta in grammatiche di clausole definite, il che semplifica la manutenzione e semplifica l'adattamento del lettore alle convenzioni di vari paesi e utenti industriali. I servizi postali spesso hanno insiemi complicati di regole su cose come indirizzi di spedizione, caselle postali vs. indirizzo, ecc. E queste regole sono anche formulate in Prolog per una facile manutenzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.