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?