4 ms·
You could say Ruby, Python, Perl, C, Java, etc are really ALGOL-like languages whose data structures are generally mutable, and whose syntax is made for express
by gonewest 11y ago
You could say Ruby, Python, Perl, C, Java, etc are really ALGOL-like languages whose data structures are generally mutable, and whose syntax is made for expressing how the state of the program is mutated in-place.
Whereas LISP-like languages have data structures that are generally immutable, and whose functional orientation results in expressing the computation of new data from old (mostly) without mutating in-place.
The thing about imperative programming languages is that the paradigm matches up to the mental model of "a computer" that most programmers would recognize and find comfortable. Without having any concrete evidence, I have a hunch that this paradigm difference is what deters new developers the most. And stacked on top of that you have the non-ALGOL syntax and the lack of libraries.
In my opinion, anyway.
- mbrock 11y agoYour opinion is about an idea of Lisp that's simply not true. Both Common Lisp and Scheme are pervasively mutable and imperative constructs occur just as often as in "Algol." Clojure diverges from this with its nice immutable data structures, but that's a rather novel and distinguishing feature, not a core trait of "Lisp." I'm curious about where the idea originated that Lisp is an especially non-mutating language. Some of it is just that it's a garbage collected language with first class functions, so it's easy to classify it as "functional" which has associations to "pure functional." But Lisp is very far from a pure functional language. It's more like a general multi-paradigm language—like Perl and Ruby.