quanto sono ampiamente usati ASP o altri linguaggi dichiarativi
Puoi vedere l'attività di Prolog che penso sia il linguaggio di programmazione ASP più comune:
Basandosi solo su questo, il pacchetto principale di Prolog è (483 / 139.326) x 100 = 0,35% popolare come uno dei pacchetti di grandi dimensioni di Node.js. O 0,07% del numero di pacchetti.
è principalmente a scopo di ricerca
IMO sì, è principalmente a scopo di ricerca. Ma è simile a Ocaml , che dalla mia esperienza è stato principalmente per scopi di ricerca fino a quando gli utenti aziendali come Facebook non hanno pubblicato Flow (tipizzazione di programmazione JavaScript), e altri hanno pubblicato Coq (dimostrazione di teoremi automatizzati), che ha contribuito a portare Ocaml al mainstream.
Quale potrebbe essere la ragione per cui non sono così conosciuti?
IMO Prolog non viene utilizzato perché è (a) un paradigma diverso, (b) il gestore dei pacchetti non è all'altezza (questo è un grosso problema in questi giorni), e (c) non esiste un framework web evangelizzato . Se esistesse un buon gestore di pacchetti come NPM per Node.js, e fosse commercializzato un framework web, oltre a un piccolo gruppo di evangelisti, che avrebbe contribuito a portarlo alla ribalta. Ruby aveva 37signals e Rails, Python aveva Google, ecc.
È perché lo sviluppo dell'IA appartiene a un livello più "avanzato" di programmazione?
No, non proprio. Alcune ricerche sull'IA usano il prologo per modellare le cose , ma non è un requisito per l'IA. L'intelligenza artificiale potrebbe essere divisa in due parti: (1) modelli basati sull'apprendimento automatico / probabilistici in cui le relazioni sono apprese e non ben definite, quindi (2) modelli definiti manualmente. La maggior parte dell'intelligenza artificiale è una combinazione di entrambi, ma i modelli definiti manualmente sono preziosi e mantenuti privati per la maggior parte. I modelli definiti manualmente potrebbero essere definiti usando Prolog e ci sono alcuni documenti là fuori per farlo, ma non è necessario. Riassumendo, tutto il lavoro di intelligenza artificiale può essere svolto in normali linguaggi di programmazione, solo che Prolog potrebbe renderlo leggermente più compatto da scrivere in alcuni casi.