4 ms·
> Lisp, for example, is very opinionated when it comes to things like side-effects Ermm...no, it's not. Functional programming languages do tend to do that, b
by earenndil 7y ago
> Lisp, for example, is very opinionated when it comes to things like side-effects
Ermm...no, it's not. Functional programming languages do tend to do that, but most lisps aren't functional--certainly, it's not a defining characteristic of the language family.
> C doesn't impose any of these restrictions, largely by virtue of being low-level, and moreover, it should be possible to implement whatever data transforms are implemented in any of those other languages in C as well. The inverse is not the case, so I would argue that C is more permissive than any of those languages.
1. Turing equivalence.
2. Because it's so close to the hardware, c inherits the opinions of all the major ISA designers.
- skohan 7y ago> Ermm...no, it's not. Functional programming languages do tend to do that, but most lisps aren't functional--certainly, it's not a defining characteristic of the language family. Fair enough. I haven't worked with Lisp since university days, but I think the point stands with any strict functional language. > 1. Turing equivalence. Ok technically it's possible to write programs which perform the same computation any two turing-complete languages, but what I mean is that, for example, it's easier to emulate how an arbitrary Go program performs that computation from C than in the other direction. edit: > 2. Because it's so close to the hardware, c inherits the opinions of all the major ISA designers. That's one way to look at it. Another way is that C just gives you an interface to the hardware as it is, and doesn't make many judgements about which abstractions should be built on top of it by default.