3 ms·
Correct me if I'm wrong, but this seems to be missing array programming (APL, Matlab, Julia, etc).
by chroem- 7y ago
Correct me if I'm wrong, but this seems to be missing array programming (APL, Matlab, Julia, etc).
- lebuffon 7y agoAnd I can't see concatenative programming languages. https://en.wikipedia.org/wiki/Concatenative_programming_language https://en.wikipedia.org/wiki/Concatenative_programming_lang...
- tom_mellior 7y agoIn this poster's classification, "basic" Forth (the data manipulation part without parsing words) to me seems to be "procedure" + "cell (state)", i.e., "Imperative programming". This classification is along general semantic lines, not "what syntax do you use to access values". In concatenative languages you use a stack implicitly while in C you use variable names and nested expressions, but this more of a "syntactic" issue than what the poster is concerned with, namely things like "does the language have native closures" which Forth, like C, does not. Parsing words add a huge amount of metaprogramming power, but this classification doesn't deal with any kind of metaprogramming. That's not a dimension that is included here, and even if it were, it would be debatable if it's that different in Forth from Lisp macros, once you look past syntactic concerns as above. But I could very well be wrong here, I'm not an expert on this part.
- Jtsummers 7y agoWhat about array programming, in your view, would differentiate it from the imperative and related paradigms?
- chroem- 7y agoInstead of describing the control flow of a program, you describe a set of operations on data structures.
- AnimalMuppet 7y ago"A set of operations on data structures" sounds very much like imperative programming to me.
- chroem- 7y agoIt's one of those things you can't really appreciate until you've tried it. Imperative programming languages are to assembly languages, as array programming is to imperative programming: it's a higher level of abstraction. The difference between the array and imperative paradigms may not be quite as pronounced as the difference between C and assembly, but it's still significant nonetheless. There's no need for control structures like loops or if statements in array programming.
- Athas 7y agoBy the taxonomy of the diagram, pure APL-style array programming is just first-order functional programming. Real array programming languages also introduce features from other branches of the tree (especially imperative programming and closures), of course. I don't think this diagram is supposed to be a clear-cut categorisation of languages, but more of a rough map of idealised paradigms. By the standards of this diagram, most languages are multi-paradigm.
- ddragon 7y agoIt's also missing multiple dispatch (multimethods) from Common Lisp, Dylan and Julia (which did not exist in 2009), which is different enough from OOP to deserve a place (and hopefully enough recognition to appear in more new languages).