Come vengono eseguiti i linguaggi dichiarativi da un computer?

1

Mi sto introducendo alle lingue dichiarative e sto iniziando ad amarle. In particolare Haskell, un linguaggio funzionale, è molto espressivo, facile da eseguire il debug. Ma la mia domanda ha a che fare con l'esecuzione. Sono tali lingue compilate o interpretate? Se è quest'ultimo, dovrei scegliere linguaggi convenzionali come C ++ o Java per motivi di prestazioni. Ma mi piacerebbe usare le lingue dichiarative per la loro maggiore produttività e facilità di manutenzione. Desideroso di ascoltare i membri stimati di questa community.

    
posta TV Mohini 21.02.2015 - 05:53
fonte

2 risposte

6

Non esiste una risposta universale per tutte le lingue; dipende solo da ciò che è stato implementato per una determinata lingua. Haskell, in particolare, può essere compilato o interpretato. Alcune lingue dichiarative possono avere solo interpreti al momento, ma un compilatore potrebbe essere scritto in futuro.

Inoltre, non dare per scontato che solo perché viene interpretata un'implementazione linguistica, è inutilizzabile "per motivi di prestazioni". A seconda dell'applicazione, il codice interpretato potrebbe essere ancora abbastanza veloce.

    
risposta data 21.02.2015 - 06:21
fonte
2

Per definizione di linguaggi dichiarativi, non possono essere eseguiti nella loro forma puramente dichiarativa; vedere per es. il Un sistema intelligente può e deve usare la conoscenza dichiarativa in modo efficiente J.Pitrat o più voci del suo blog es. "interrompi programmazione!" , " CAIA, il mio collega ", " so te stesso ", ecc.

Quindi un sistema dichiarativo sta trasformando la conoscenza dichiarativa in procedure eseguibili, o interpretandola proceduralmente, o spesso un mix di entrambi gli approcci.

Il mentro di J.Pitrat è che tale lavoro sulla conoscenza dichiarativa può e deve essere espresso in modo dichiarativo (attraverso una meta-conoscenza dichiarativa che può essere applicata a se stesso), con un bootstrap sistema.

BTW, il suo sistema CAIA ha molte conoscenze dichiarative ed è bootstrap, quindi si è tradotto in centinaia di migliaia di righe di C.

Potresti seguire il suo esempio e lavorare su un sistema dichiarativo che genera codice Java, ma è un lungo viaggio ... Il tuo sistema avrà quindi una parte "compiler", che è qualcosa che traduce contestualmente alcune conoscenze dichiarative in eseguibili Codice Java

Allo stesso modo, Haskell può trasformare (cioè compilare) alcune espressioni in diverse forme di codice, a seconda del contesto, ecc ...

    
risposta data 21.02.2015 - 08:04
fonte

Leggi altre domande sui tag