A bit of background (in case I'm mistaken)...
I think I understand that (it's an oversimplification):
- manually entering codes into memory (or on a punchcard) is "first generation language"
- using mnemonics corresponding to CPU instructions would be a 2GL (like assembly language)
- C/C#/Java/Objective-C are all 3GLs
- SQL is a 4GL
Where would Clojure stand in such a classification?
I'm particularly confused by this Wikipedia sentence:
The archetypical example of a declarative language is the fourth generation language SQL, as well as the family of functional languages and logic programming.
This sentence seems to imply that all functional languages are declarative. Is that correct?
Then Clojure can be used in a functional way (and it is probably recommended to use it "as much as possible" in a FP style), so is Clojure a declarative language ?
Also, I can see that Clojure make it really easy to create 4GLs (e.g. as embedded DSLs, like core.logic reproducing logic programming in about 200 lines of code) but is Clojure itself a 4GL?