it-swarm.it

Prolog è professionalmente utile?

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 usato per implementare qualcosa di professionalmente utile?

15
Gursel Koca

A mio avviso, è molto utile imparare le basi di Prolog, 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, concordo sul fatto che Prolog ha 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 ci manca entrambi manca qualcosa di speciale in una certa misura, ma non sarebbe pratico dedicare il tempo all'apprendimento anche di una conoscenza ragionevolmente completa a livello di libro di testo per Prolog, figuriamoci cercando di sviluppare l'esperienza del mondo reale, a meno che non stia considerando una possibile carriera di programmazione logica.

Di recente 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 tuo cervello goccioli dalle orecchie da qualche parte nel materiale intermedio-avanzato.

12
Steve314

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.

10
Kate Gregory

Conosco A.I. i programmatori lo usano ..... perché ho fatto un corso Prolog nel mio A.I. classe ma a parte questo non ho visto molto altro a riguardo. ecco una domanda simile con tante risposte! https://stackoverflow.com/questions/130097/real-world-prolog-usage

7
user6791

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 tipi, certe ottimizzazioni e controlli semantici, e riscrivo quel codice Prolog in qualcosa di imperativo solo se le sue prestazioni non sono accettabili.

6
SK-logic

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 quotidianamente, ma sicuramente ha influenzato i tuoi premi P&C nel corso degli anni.

2
Jé Queue

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

2
GSto

Ho usato Prolog professionalmente in una (significativa) manciata di occasioni (sistema esperto diagnostico; 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" utilizzando 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 un Prolog adorabile, pulito, elegante e mantenibile! :)

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 a Nizza con 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.

1
sakisk

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 gli indirizzi di spedizione, caselle postali vs. indirizzo, ecc. E queste regole sono anche formulate in Prolog per una facile manutenzione.

0