← Back to context

Comment by umanwizard

14 days ago

You may be right, idk, but I want to point out that you’re conflating two orthogonal concepts: S-expressions and imperative vs. functional programming.

There are lisp dialects that are very imperative, for example elisp, but they still use S-expressions. Historically they might have been considered “functional” because they have first-class functions and higher-order functions like mapcar, but nowadays practically every modern programming language (except go!) has these.

The thing all lisp dialects have in common is not where they land on the imperative vs. functional spectrum, but rather the fact that the syntax is trivial and so it’s easy to write powerful macros.

I think the simple uniform syntax is the main reason why Lisp never became popular.

Code is communication, and communication needs redundancy for error correction. You can see it in natural languages, and it makes sense to have it in programming languages as well. Using different kinds of syntax for expressing different ideas is an easy way to increase redundancy without making the code more verbose.

  • Lisp did become popular.

    Then the AI Winter killed it and people avoided it like the plague.

    • The Lisp machine companies killed Lisp. They were the ones who blew Lisp sky high, but they also created expensive, monstrous workstations running Lisp images requiring tens of megabytes of RAM. Developers used them for prototyping and then had to cob something together to ship to the users, who had hardware like IBM PC machines with less than a meg of RAM.

      Today's cruft like you ... Python, JS, whatever ... would not stand a chance in the world of the 1980s on that hardware.

      It's amazing how far they were able to bloat up Lisp while continuing to peddle it commercially.

      Leaner Lisps running on small systems existed all along, but they would rescue Lisp from the associations brought about by big Lisp.

      1 reply →

  • Clojure has all those other braces also. They’re just used for data structure literals rather than blocks of code.

  • Or as I tell my colleagues who try to push for more abstract syntax: do you want your brain to do compilation each time your read something, or just have verbose text giving hints at each line ?

    It s weird people prefer reading implicit text.

    • Isn’t this a big reason we have syntax highlighting? You can use color and styling to give you those hints that are otherwise implicit in text.