Clojure è un 3GL o un 4GL?

2

Un po 'di background (nel caso mi sbaglio) ...

Penso di capirlo (è una semplificazione eccessiva):

  • inserire manualmente i codici in memoria (o su una punchcard) è "lingua di prima generazione"
  • usare mnemonici corrispondenti alle istruzioni della CPU sarebbe un 2GL (come linguaggio assembly)
  • C / C # / Java / Objective-C sono tutti 3GL
  • SQL è un 4GL

Dove sarebbe Clojure in una tale classificazione?

Sono particolarmente confuso da questa frase di Wikipedia:

The archetypical example of a declarative language is the fourth generation language SQL, as well as the family of functional languages and logic programming.

Questa frase sembra implicare che tutti i linguaggi funzionali siano dichiarativi. È corretto?

Quindi Clojure può essere usato in modo funzionale (e probabilmente è consigliato utilizzarlo "il più possibile" in uno stile FP), quindi Clojure è un linguaggio dichiarativo?

Inoltre, posso vedere che Clojure rende davvero facile creare 4GL (ad esempio come DSL incorporati, come core.logic che riproduce la programmazione logica in circa 200 linee di codice) ma Clojure è a sua volta un 4GL?

    
posta Cedric Martin 12.01.2013 - 23:07
fonte

1 risposta

8

Clojure è un 3GL

In primo luogo, alcune definizioni per evitare dubbi.

Una lingua di prima generazione (1GL) è un linguaggio di programmazione a livello di macchina. Nessuna traduzione automatica è a posto, quindi la programmazione avviene attraverso un gruppo di switch sul pannello frontale.

Una lingua di seconda generazione (2GL) è una categorizzazione dei linguaggi di assemblaggio. Questo normalmente si rivolge a chipset specifici e consente l'uso del codice sorgente.

Una lingua di terza generazione (3GL) è un perfezionamento di una 2GL e viene definita "lingue di alto livello". Questo introduce la struttura logica al codice sorgente e rende il linguaggio più programmabile. Gli esempi includono C / C ++ / C # / Java ecc. Di solito hanno un interprete o un compilatore.

Una lingua di quarta generazione (4GL) era a favore tra il 1970-1990 ed è comunemente intesa come un ambiente di programmazione . Questo tende a essere letto come una raccolta di applicazioni che supportano la creazione di codice sorgente 3GL. Spesso questo è un ambiente di workbench visivo come un IDE, o forse un ambiente di configurazione del sistema basato su tabella (ad esempio il middleware Oracle). C'è anche la possibilità che una 4GL possa essere considerata una lingua specifica per il dominio (DSL).

Alla luce della definizione di cui sopra, Clojure sembrerebbe adattarsi molto più strettamente all'interno del frame di una 3GL poiché è solo l'interpretazione linguistica specifica del dominio piuttosto sciolta che la porterebbe a un 4GL.

    
risposta data 16.01.2013 - 18:46
fonte