Lisp: Notes on its Past and Future (1980)

Clojure vs. Rust and Other Language Choices

  • One thread explores choosing Clojure instead of Rust for “non-low-level” work, arguing both target shared-mutability problems but with very different approaches.
  • Others suggest alternatives like F#, Elixir/Erlang, or Scheme/Common Lisp depending on needs (static vs dynamic, systems vs app code, commercial ecosystem).

State, Concurrency, and Performance Models

  • Several comments contrast Rust’s ownership/borrow checker with FP-style immutability (Clojure, Elixir, Erlang):
    • FP/Lisp-style: avoid shared mutable state by using immutable data and persistent data structures; easier mental model, some runtime overhead.
    • Rust: allows mutability and sharing but not simultaneously; compiler-enforced safety at cost of a steeper learning curve.
  • Some note Clojure’s Software Transactional Memory is rarely used in practice; persistent data structures are central.
  • Anecdotes suggest Rust can significantly outperform Clojure when raw performance (e.g., games) is critical.

Clojure, JVM, and Ecosystem Health

  • One side claims Clojure and the JVM are “looking dead”; others strongly dispute this, citing:
    • Active JVM evolution (e.g., virtual threads).
    • Ongoing Clojure community activity and variants (ClojureScript, ClojureCLR, ClojureDart, babashka, jank).
  • Disagreement over whether Clojure benefits strongly from the Java ecosystem: some praise effortless reuse of mature Java libraries; others feel the JVM brings cultural and tooling friction.
  • Clojure is seen as commercially niche but real; Common Lisp is described as more “eternal” but with a sparser ecosystem.

Lisp Developer Experience (REPL, Live Systems)

  • Multiple comments emphasize that the distinctive value of Lisp/Clojure is not just language features but the REPL-driven, live-editing workflow:
    • Code is edited in normal files, but forms are evaluated directly into a running system.
    • This encourages incremental development, rich introspection, and reduced edit–compile–run cycles.
  • Comparisons are drawn to Smalltalk and iPython; some say this style changes how you think about structure and state.

Why Lisp Isn’t Mainstream

  • Theories include:
    • Most programmers find imperative/OO easier to “grok” than functional styles.
    • Mainstream languages have absorbed key FP features, reducing the incentive to switch.
    • Productivity depends heavily on libraries/frameworks; Lisp ecosystems often lag in breadth.
    • Lisp’s extreme flexibility and powerful metaprogramming make large-team maintenance harder, especially with less-experienced developers.
  • Others argue Lisp supports multiple paradigms and is used successfully in commercial settings; the barrier is social and educational, not inherent.

Lisp, AI, and McCarthy’s “Higher-Level Than Lisp”

  • Discussion connects McCarthy’s prediction of declarative, goal/fact-based programming to:
    • Prolog-style logic programming.
    • Modern LLMs and “agentic coding,” where prompts/specs resemble high-level declarative descriptions.
  • Some see LLMs as a rough realization of this; others object that today’s LLMs are non-deterministic and error-prone, making the analogy weak or premature.
  • On AI history:
    • Lisp’s role in classical, symbolic AI (knowledge representation, reasoning, genetic programming) is highlighted.
    • With the shift to numerical deep learning, neural nets moved toward C/CUDA plus Python; Lisp didn’t disappear but stopped being central.
    • There is speculation that a modern “Lisp for neural nets” could be powerful if paired with GPU libraries.

Other Lisp Dialects and Anecdotes

  • Commenters mention enjoyable experiences with Scheme variants (CHICKEN, Chez), Common Lisp tooling, and babashka as a lightweight on-ramp.
  • A salary-survey tangent notes very high reported pay for Clojure developers but is widely dismissed as likely statistically insignificant.