Ask HN: 30y After 'On Lisp', PAIP etc., Is Lisp Still "Beating the Averages"?
Production-ready Lisps & Real-world Use
- Common Lisp, Clojure, ClojureScript, Racket, Scheme, LFE, Janet, Emacs Lisp, and various custom dialects are reported in production.
- Use cases mentioned: blockchain/smart-contract-like systems, financial streaming/realtime analytics, algorithmic trading, web publishing, tunnels and transport control, airline booking, aerospace, cybersecurity, and other backend services.
- Some shops report tiny teams in CL delivering output that makes them look much larger to clients.
Productivity: REPL, Image-based Dev, Macros
- Many argue Lisp’s REPL + image-based workflow is still a unique advantage: live modification of running systems, redefining functions without restart, tracing and debugging with resumable stack frames.
- Comparisons say Python/Jupyter REPLs feel more like shells; Clojure/CL REPLs integrate tightly with editors and entire codebases.
- Macros and homoiconicity are seen as key: easy DSLs, code generation, graph/DAG builders, autodiff, numeric DSLs; Julia is cited as a “lispy” example where macros saved thousands of LOC.
- Others warn macros and heavy metaprogramming can hurt readability if overused; some style guides advise restraint.
Types, Structure, and Maintenance
- Pro-static-typing voices stress that types and rigid structure help large teams, long-lived code, and onboarding; dynamic Lisps can feel like “unlabeled tubes” that require runtime probing.
- Counterpoints: CL has optional but powerful types; Typed Racket, Coalton, and Clojure’s Spec/Malli add advanced constraints; REPL debugging can be faster than chasing static types.
- Several note that design quality and developer skill dominate language choice for maintainability.
Ecosystem, Tooling, and Hiring
- A recurring criticism: CL’s library ecosystem is thinner, less standardized, and less documented than Python/Java, which hurt past deployments (e.g., web rewrites).
- Others say in regulated or niche domains, external libraries rarely fit well anyway, so writing your own in Lisp is fine.
- Tooling debates: Emacs is loved by some and viewed as clunky by others; alternative integrations exist for VSCode, JetBrains, Vim/Neovim, etc.
- Hiring is harder; Lisp tends to attract experienced, niche developers, which can be a strength (high ROI per hire) but limits team scaling.
“Beating the Averages” and When to Use Lisp
- Supporters say Lisp still “beats the averages” for:
- Greenfield, exploratory, and rapidly changing specs.
- Complex domains where DSLs and live refactoring matter.
- Small, high-skill teams optimizing feedback loops.
- Skeptics argue:
- Many Lisp ideas (GC, first-class functions, FP, REPLs) are now common elsewhere, reducing its relative advantage.
- Popular software and big organizations mostly use other languages; ecosystems and hiring often outweigh language power.
- Several commenters conclude there’s no single “top of the power curve”: pick the language (or DSL in Lisp) that best fits your specific problem and constraints.