Two powerful, mind-bending items missing from the list of paradigms:
(1) Dependent types. c.f Idris (or Agda, or others -- but Idris).
(2) Logic programming. (It appears in the list of languages ("miniprolog") but not the list of paradigms.)
I consider both of these much more important than some of the more popular paradigms (object-oriented, procedural, dynamic typing -- if I never use such a language again it'll be too soon).
Well spotted. The reason is that this chart's author is the designer of Oz, which is a multi-paradigm language if there ever was one, as is reflected in the chart, and the design of which is painstakingly and very well explained in his book, "Concepts, Techniques, Models of Computer Programming".
The book referred to by this diagram, "Concepts, Techiques, and Models of Computer Programming" is actually quite related to TFA too.
I.e. the book starts with a basic language and extends it in different ways to gain more espressive potential, i.e. HOFs, lazyness, state, different concurrency primitives, logic programming, constraint solving etc.
Is there one of these languages to start with? Or would you choose one that interests you and study that one? There seems like some great content but I don't see a clear place to start
The best way to choose a language is always to look at what problem you're trying to solve and what kinds of problems the languages you're looking at aimed toward.
If you're not familiar with programming already, python has a very low cost of entry and a massive following.
If you're familiar with programming and looking to get into functional stuff, Haskell will give you a pretty good start.
I guess what jesse_m had in mind were the mini languages from the article. I'd say 'calc' looks like a good starting point, but I agree that picking an order is hard.
Yeah I'm familiar with OCaml I wasnt sure if there was a language progression that was suggested to go through. I was actually interested in using Menhir more too.
(1) Dependent types. c.f Idris (or Agda, or others -- but Idris).
(2) Logic programming. (It appears in the list of languages ("miniprolog") but not the list of paradigms.)
I consider both of these much more important than some of the more popular paradigms (object-oriented, procedural, dynamic typing -- if I never use such a language again it'll be too soon).