I wasn’t calling Clojure slow, I was curious what would it take to make it start fast? We know that ClojureScript can start pretty fast and at the same time keep Clojure semantics. So what is that thing that Clojure adds to that that makes it so slow at loading namespaces?
It’s not a very practical question. I undestand that the answer would probably be “complexity, compatibility and historical reasons”. That’s why I formulated my question as a thought experiment: imagine you can build another language that has all Clojure benefits but is not bound by current implementation. How fast could we make it? And what would be the differences from current Clojure in that case (what will we have to give up)? Is there a fundamental reason on why we can’t load 10+k clases in 100ms? In 1 second? What’s the baseline here?
I believe speed is pretty important and underappreciated (http://tonsky.me/blog/speed/). I remember Jonathan Blow demoed his language compiler compiling entire 150K lines of code from scratch without any caching at all (!) under a second. It enabled him to fully recompile full 3d game on the fly on every file change! So the baseline of what’s possible is pretty far out there.