I am no language expert but I'm recently into languages and trying to get an overview of major concepts and "their" languages. This is similar to another question about books. So first, what are the major programming language concepts, e.g.
- structured
- procedural
- object orientated
- object orientated - prototype based (e.g. Java Script)
- functional (e.g. Haskell)
- logic orientated (e.g. Prolog)
- meta (if a pure concept of it's own?)
- stack based (e.g. Forth)
- math based/array oriented (e.g. APL)
- declarative
- concatenative (e.g. PostScript)
- (definitely incomplete list...)
and second to get a good crasp of these concepts, what would be the programming language that's based on/implementing its core concept most naturally and pure?
- For example Java is OO, but it's not a good example because it's not pure OO due to atoms.
- Lisp is a known to be a functional language, but it's multi-paradigm, so it's not pure. But Lisp may be a pure implementation of "list-based" (if it counts as concept).
- Is there a language that's structured (no GOTO) but not procedural? (Maybe XSLT v1.x)
Thanks to JUST MY correct OPINION's answer I was pointed in the right direction. I will give the list of paradigms together with their pure languages as far as I found out till now:
- imperative
- non-structured --- early BASIC, Assembly
- structured --- ?
- procedural --- ?
- modular --- Modula-2, maybe Pascal
- object-oriented
- class-based --- Smalltalk
- prototype-based --- Self, maybe Java Script, Lua
- declarative --- SQL, Regular Expressions, CSS
- logic --- Mercury, maybe Prolog
- functional --- Scheme, Haskell
- tacit/point-free
- concatenative --- Joy, Cat
On a different "axis" we have
- scalar --- most of them
- array --- APL
Don't know where to put it:
- stack based --- Forth, Postscript