Re:Is software development really a dead-end job after age 3...
by barrkel on Saturday November 18, 2017 @01:31AM
(#15728013)
I reckon imperative and OO are almost identical; if you don't have objects, you use function pointers or discriminated unions instead and end up with something very similar. OO is a design pattern that often has language support. And I could make a similar argument that functional is mostly just a style of coding, where some more restrictive rules are followed - but it also depends on a few specific language features, e.g. garbage collection and possibly tail calls. You can get by without pattern matching and first class functions, but they make life much more pleasant.
Declarative vs imperative is more interesting: what vs how, building descriptions of problems rather than chains of calculations or lists of steps. I don't think functional style is strongly related to declarative, except in the very low level sense that a functional program doesn't necessarily have a sequential evaluation semantics. But that's increasingly true of seemingly imperative languages also.
Re:Is software development really a dead-end job after age 3...
by loup-vaillant on Saturday November 18, 2017 @06:06AM
(#15728580)
I've had teachers separate languages (or styles, or paradigm) in 3 categories:
* Imperative languages describe how to perform the solution.
* Functional languages describe the solution.
* Logic languages describe the problem.
I'm not sure I actually agree with this categorisation, though.
Re:Is software development really a dead-end job after age 3...
by useranme on Friday November 17, 2017 @11:28PM
(#15727755)
I'm curious, what makes the ML families different than Algol?
Re:Is software development really a dead-end job after age 3...
by andrewflnr on Sunday November 19, 2017 @12:49AM
(#15732472)
The ML family tend to come from a research background, have a more rigorous approach to typing, solid type inference, and very differently flavored syntax. MLs are functional (first-class functions, expression-orientation), whereas the Algol family in the shape of C, Java etc are mostly imperative. They tend to have nice pattern matching facilities. There's more, but that's a lot of it. A lot of these features have been transplanted into languages that are basically on the Algol tree, so it's often a bit fuzzy these days.
If I wanted to jam languages into 4 categories, it would probably be the Algol, Lisp, and ML families, plus All Those Other Languages. :)