Developing a Space Flight Simulator in Clojure
Clojure / Lisp Readability and Syntax
- Several commenters coming from C-like or Scheme backgrounds find Clojure visually foreign and “noisy,” especially due to vectors and destructuring.
- Others argue that once destructuring and Clojure’s maps/EDN are understood, the syntax becomes highly readable and pragmatic, with more compact data representation than JSON.
- There’s broad agreement that the real shift isn’t parentheses but immutable, high‑performance data structures and the resulting coding style.
Macros, “Code as Data,” and REPL Workflow
- Some emphasize Lisp’s advantage: code is data, enabling powerful macros (e.g., custom control constructs, threading operators) with tiny code changes compared to non‑Lisps.
- Others push back that in professional Clojure, macros are used sparingly, mostly in libraries and “with‑context” helpers; application code should prefer functions.
- A separate thread praises the “live” Lisp/REPL experience (Emacs, babashka, Fennel) and the feeling of “playing” the system by changing running code.
Clojure and Functional Languages in Game Development
- One camp sees projects like this and native Clojure variants (e.g., Jank) as potentially transformative for some developers: REPL‑driven iteration, good language design, C++‑like performance.
- Others argue that programming is a small slice of game development; most indie devs are focused on engines like Unity/Unreal/Godot or Lua/C#/C++/Rust, not functional styles.
- Skeptics call Clojure-as-orchestrator over C++ engines a “beautiful dead end” for mainstream gamedev, citing low FP adoption and art/design priorities, plus GC concerns.
- Counterpoint: using a high‑level language for the logic while delegating rendering/physics to C++ is exactly the value proposition; maintainability of game logic matters.
Engines, Performance, and Low-Level Concerns
- Some nostalgia for “rolling your own engine,” but others note that’s now rightly seen as wasteful unless engine building is the goal.
- The project in question uses OpenGL and a C++ physics engine (Jolt); the author previously prototyped physics in Guile but prefers leveraging specialized C++ for performance.
- There’s discussion of GC pauses (with mention of ZGC) and of alternative approaches: GC‑free FP (e.g., Carp), high‑level metalanguages generating low‑level code, and functional‑friendly VMs.
Project-Specific Reactions and Wishlist
- Visuals and technical ambition are widely praised, especially given the non‑traditional stack.
- Suggested future features include docking, the Moon and eclipses, richer atmospheric/lighting effects, shared planetary datasets, and even elaborate “space war” and ocean simulations.